Mercurial > hg > Papers > 2021 > mk-thesis
changeset 60:424850058f1b
update prepaper
author | Ken Miyahira <e175733@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 15 Feb 2021 19:37:52 +0900 |
parents | c72f0d0eb28a |
children | f0af437fca35 |
files | prepaper/pre.pdf prepaper/pre.tex slide/slide.md |
diffstat | 3 files changed, 38 insertions(+), 192 deletions(-) [+] |
line wrap: on
line diff
--- a/prepaper/pre.tex Mon Feb 15 16:18:55 2021 +0900 +++ b/prepaper/pre.tex Mon Feb 15 19:37:52 2021 +0900 @@ -41,13 +41,12 @@ \begin{onecolabstract} -The Educational Information System of the Faculty of Engineering of the University of the Ryukyus is being updated, and will be migrated from a VM-based system to a container-based system. -For the container engine, Podman and Singularity are used to support multiple users. -To improve the inconvenience of the container engine, we create ie-podman. -We also use Slurm for resource management and Ceph for the file system. -We will construct and verify an educational information system using these technologies. -The speed of the system was compared with that of the old system, and an improvement was observed. -In addition, the usefulness of ie-podman was demonstrated. +We renew our Educational Information System of the Faculty of Engineering of the University of the Ryukyus. +The system future container system mainly, which is deiferente VM-based old system. +Podman and Singularity is used as container engines, but we found building Podman container is vely slow in rootless mode. +To improve the inconvenience of the container engine, we create ie-podman, witch is a wrapper of rootfull Podman. +We also use Slurm as a task manager and a resource management and Ceph as file systems. +As a result the system be comes open and convenient for student and teachers. \end{onecolabstract}] \thispagestyle{fancy} @@ -57,14 +56,7 @@ だが,手元のPC上でVMやコンテナを立ち上げ,開発を行うことはできるが,VMやコンテナの使用には高性能PCや有料のクラウドサービスが必要になる場合がある. これらの負担をIT技術を学ぶ学生に負わせない新たな仕組みが必要である. \par -本コースでは希望する学生に学科の汎用サーバから仮想環境を貸出するサービスを行っている. -貸出をするVMの基本スペックとしてCPU1コア,メモリ1GB,ストレージ10GBである. -基本スペックでは不足する場合は要望に応じてスペックの変更を行っている. -しかし,機械学習などの演習ではCPUよりGPUが求められる場合がある. -VM上でGPUを共有するにはPCIパススルーを利用することで可能である. -だが,PCIパススルーではGPUとVMは1対1の関係となり,GPUを希望する利用者すべてに割り当てることはできない. -\par -本研究では,学生が貸出VMだけでなく,学科の汎用サーバのリソースを効率的に利用できる教育情報システムを提案する. +本研究では,本コースで提供するVM貸出サービスだけでなく,学科の汎用サーバのリソースを効率的に利用できる教育情報システムを提案する. 教育情報システムには複数の汎用サーバと大容量ストレージサーバが存在する. 複数のサーバを利用するにあたり,分散ストレージが必要となる. また,学習環境として利用されることから,複数の並列なアクセスに耐えられ,信頼性の高いファイルシステムが必要である. @@ -97,11 +89,6 @@ \section{Ceph} Cephは,RedHat社が開発,提供する分散ファイルシステムである. Cephは分散オブジェクトストレージであるRADOS(Reliable Autonomic Distributred Object Storage)がベースとなっている. -RAODSでは,Object Storage Daemonにデータ格納する. -オブジェクトの配置には,クラスタマップを元にControlled Replication Under Scalable Hashing(以下,CRUSH)アルゴリズムによりオブジェクトの格納先を選択する. -配置の計算に必要とする情報はごくわずかであるため,Cephクラスタ内のすべてのノードは保存されている位置を計算できる. -そのため,データの読み書きが効率化される.また,CRUSHはデータをクラスタ内のすべてのノードに均等に分散しようとする. -\par RODOSはクラスタに保存されるデータの管理を待ち受け,保存オブジェクトへのアクセス方法としてObject Gateway,RADOS Block Device(以下,RBD),CephFS がある. Object GatewayはHTTP REST経由でクラスタに保存されるオブジェクトへ直接アクセスが可能である. RBD はブロックデバイスとしてアクセスが可能で,libvirt を組み合わせてVMのディスクとして使用できる. @@ -160,43 +147,6 @@ $ ie-podman sif [IMAGE_NAME] \end{lstlisting} -\subsection{GPUの利用方法} -新システムでは,汎用サーバに搭載されるGPUをコンテナから利用できる. -SingularityからGPUを利用には--nvオプションを指定することで,コンテナからGPUを利用することが可能になる. -Singularityのコンテナの実行は,ソースコード\ref{pg:sing-run}の操作で行える. -\begin{lstlisting}[caption=Singularityの実行, label=pg:sing-run] -$ singularity run --nv [SIF_NAME] -\end{lstlisting} - -コンテナの実行にはrun,exec,shellのサブコマンドがあり,runではsifファイルを作成する際に指定が可能なrunscriptが実行される. -また,execではイメージ内にインストールされている任意のコマンドを実行することが可能である. -PodmanやDockerではexecを実行するにはコンテナを作成する必要があるが,Singularityではsifファイルからコマンドを実行することが可能である. -これらのサブコマンドを利用し,SlurmにJobを投下時に利用するJobの実行手順を記述したBatchファイルを作成する. -BatchファイルにはJobに必要とするリソースの定義,Jobで実行したい処理を記述する. -ソースコード\ref{pg:batchfile}は2$\sim$8行目にJobに必要とするリソースを定義する. -リソースの定義した後にプログラムを実行する処理を記述する. -\begin{lstlisting}[caption=Batchファイル, label=pg:batchfile, language=Bash, numbers=left, breaklines=true, basicstyle=\ttfamily\footnotesize, frame=single] -#!/bin/bash -#SBATCH --job-name sample -#SBATCH --output logs/%x-%j.log -#SBATCH --error logs/%x-%j.err -#SBATCH --nodes 1 -#SBATCH --cpus-per-task 8 -#SBATCH --gpus tesla:1 -#SBATCH --time 01:00 - -singularity exec --nv [SIF_NAME] [COMMANDS] -\end{lstlisting} - -Batchファイルを作成後,ソースコード\ref{pg:s-cmd}の1行目の操作でJobを投下することが可能である. -また,2行目の操作でJobの各種情報,3行目で投下したJobを停止することができる. -SlurmはユーザごとにJobが管理されるため,他ユーザのJobを停止するこはできない. -\begin{lstlisting}[caption=Jobの投下, label=pg:s-cmd, frame=single, numbers=left] -sbatch [BATCH_FILENAME] -squeue -scansel [JOB_ID] -\end{lstlisting} - \section{教育情報システムの評価} \subsection{ie-podmanの評価} RootlessのPodman,Singularityの不便な点を補うため,Podmanのwrapperであるie-podmanを作成した. @@ -215,7 +165,6 @@ \label{fig:ie-podman-review} \end{figure} -Dockerやie-podmanのBuildに掛かる時間は1分未満だが,rootlessのPodmanでは3分程掛かっている. RootlessのPodmanはコンテナイメージをユーザのホームディレクトリに保存する. また,rootlessでは重複排除をサポートしていないVFSストレージに制限される. RootlessのPodmanは独自の名前空間内で特権機能を利用できるようにするため,rootfullと比べ経由する関数が多くなる. @@ -225,26 +174,18 @@ 旧システムのVM保存場所として利用していたGFS2,ユーザのホームディレクトリとして利用していたNFSとの速度比較を行う. ベンチマークにはddコマンドを使用する. データの変換方法にfdatasyncを指定することで,書き込み終了の直前にsyncを1回要求するため,実際の動作に近い動作で測定が可能である. -\par 図\ref{fig:write}はCephFS,Ceph RBD,GFS2,NFSにおけるファイルサイズに対する書き込み速度である. \begin{figure}[H] \begin{center} - \includegraphics[width=90mm]{fig/Write.pdf} + \includegraphics[width=79mm]{fig/Write.pdf} \end{center} \caption{書込み速度の比較} \label{fig:write} \end{figure} -旧システムのホームディレクトリは,iSCSI経由でマウントされたデバイスをNFSから提供していた. -iSCSIの通信には10Gbpsの回線で接続されているが,NFSの提供はVMで行われており,1Gbpsで提供されていた. -そのため,10Gbpsの回線で接続し,マウントしているCephでは書き込み速度の改善が見られる. -しかし,GFS2は10Gbpsで接続されたクラスタで構成されているが,Cephより低速である. 旧システムでは,パッケージ等のアップデートがされておらず,Kernelの更新もされていなかった. KernelはI/Oに関する多くの機能を提供するため,GFS2の書き込みより,Cephが高速になったのではないかと考えられる. -\par -今回の計測では,読み込み速度の測定を行えなかった. -これは,旧システムで読み込み時にバッファキャッシュを削除せずに測定を行ったためである. -そのため,純粋な読み込み速度を測定することができなかったことは反省点である. +また,新システムでは,サーバのマシンスペックの他にネットワーク機器も更新されたことも要因だと考えられる. \section{まとめ} 今年度のシステム更新で教育情報システムの構築を行い,VMベースからコンテナベースへの移行ができた.
--- a/slide/slide.md Mon Feb 15 16:18:55 2021 +0900 +++ b/slide/slide.md Mon Feb 15 19:37:52 2021 +0900 @@ -49,7 +49,7 @@ --- <!-- class: slide --> -# これまでの学生向け学習環境 +<!-- # これまでの学生向け学習環境 - VM貸出サービス - Akatsuki @@ -62,7 +62,7 @@ - メモリ 1GB - ディスク容量 10GB ---- +--- --> # これまでの学習環境の問題点 - VM貸出サービスの一部学生は申請の方法が分からなかったり、貸出サービスがあることが周知されていなかったため、旧システムのリソースが余っていた @@ -79,6 +79,17 @@ <!-- class: title --> # 教育情報システムの構築 +- 目的 + - 開かれた見通しの良い教育情報システムを構築する +- 目的を達成するための構成要素 + - VMベースからコンテナベースへ移行 + - GFS2を現代的な多重度を持つ分散ファイルシステムに置き換える + - Wordpressを静的HTML生成に置き換える + - サーバに利用者のログインを許し、GPUなどの利用を促進する + - コンテナによる環境で課題や演習を可能にする + - 環境構築の手間をかけずに演習を行える + - システム管理をRedmine/SlackからScrapbox/Mattermostに置き換える + --- <!-- class: slide --> # VMベースからコンテナベースへ移行 @@ -109,7 +120,7 @@ - コンテナベースの学習環境を提供できるようになる --- -# コンテナエンジンの補い +# コンテナエンジンの選択 - Podman - rootlessではイメージの作成やコンテナの作成が遅い @@ -122,13 +133,22 @@ - そこでPodmanをwrappしたie-podmanを作成した --- -# ie-podmanの作成 +# Rootless podmanの遅さの解決 -- rootfullのPodman wrapperである +- rootfullのPodman wrapperであるie-podmanの導入 - ユーザのUID、GIDを取得し管理を行う - 他のユーザのリソースを操作できない - コンテナ名、イメージ名をユーザ名で補完する - SSD上にイメージ等を保存し、高速化を図る +- 比較するコンテナエンジン + - Docker + - ie-podman (Podman rootfull wrapper) + - Podman (rootless) + +--- +# Build速度の比較 + +![](images/container2.png) --- # ie-podmanの機能 1/2 @@ -180,128 +200,10 @@ --- <!-- class: title --> -# 教育情報システムの利用 - ---- -<!-- class: slide --> -# ie-podmanの使用方法 1/2 - -- IPアドレス、GPUをコンテナへ割り当てられる - - `ie-podman run --ip --gpu [IMAGE_NAME]` -```shell -$ ie-podman run --rm --ip --name test -dit ubuntu:20.04 -Assign an IP address: 10.100.20.1 -6842a8a572a73f7a21542dbb9fec5b5b4ca668aa9c2f7d7fe2522e3be316836d - -$ ping 10.100.20.1 -PING 10.100.20.1 (10.100.20.1) 56(84) bytes of data. -64 bytes from 10.100.20.1: icmp_seq=2 ttl=63 time=0.215 ms -64 bytes from 10.100.20.1: icmp_seq=3 ttl=63 time=0.201 ms -``` - ---- -# ie-podmanの使用方法 2/2 -- 作成したイメージをsifファイルへの変換に対応 - - `ie-podman sif [IMAGE_NAME]` - -```shell -$ ie-podman images -REPOSITORY TAG IMAGE ID CREATED SIZE -localhost/e175733_test latest cb42448d39ca 21 seconds ago 138 MB - -$ ie-podman sif e175733_test -INFO: Starting build... -Getting image source signatures - -(省略) - -INFO: Creating SIF file... -INFO: Build complete: e175733_test_latest.sif - -$ ls -e175733_test_latest.sif -``` - ---- -# GPUの利用方法 - -- GPUを使用するプログラムはSingularityから実行する - - `singularity run --nv [SIF_NAME]` -- Jobの処理手順をまとめたBatchファイルの作成する - - Jobに必要なリソース、実行したい処理を記述する -- SlurmによるJobの投下する - - `sbatch [BATCH_FILE]` - -```shell -$ sbatch test.sbatch -Submitted batch job 1318 - -$ squeue -JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) -1318 steins test e175733 R 0:01 1 amane -``` - ---- -# Batchファイルの例 - -- Jobに必要とするリソース - - CPU 8コア、GPU 1つ -- Jobの実行時間 - - 1分 - -```bash -#!/bin/bash -#SBATCH --job-name sample -#SBATCH --output logs/%x-%j.log -#SBATCH --error logs/%x-%j.err -#SBATCH --nodes 1 -#SBATCH --cpus-per-task 8 -#SBATCH --gpus tesla:1 -#SBATCH --time 01:00 - -singularity exec --nv [SIF_NAME] [COMMANDS] -``` - ---- -<!-- class: title --> # 教育情報システムの評価 --- <!-- class: slide --> -# ie-podmanの評価 1/2 - -- 実験環境 - - 新システムの汎用サーバで実施 - -- 実験概要 - - イメージのBuild速度を比較する - -```Dockerfile -FROM ubuntu:20.04 -RUN apt-get update && \ - apt-get upgrade -y -``` - -- 比較するコンテナエンジン - - Docker - - ie-podman (Podman rootfull wrapper) - - Podman (rootless) - ---- -# ie-podmanの評価 2/2 - -![bg 70%](images/container2.png) - -<!-- --- -# ie-podmanの評価 3/3 - -- Rootlessは`syscall`が複数呼ばれている - - そのため、イメージの作成が遅いのではないか -- 左がrootless、右がrootfull - -![height:325](images/syscall.png) ---> ---- # ファイルシステムの評価 1/2 - 実験概要 @@ -322,6 +224,9 @@ ![bg 70%](images/fswrite.png) +MB/sの値が大きい方が性能が良い +GFS2よりも高速がわかった + --- <!-- class: title --> # まとめ @@ -330,7 +235,7 @@ - VMベースからコンテナベースへの移行ができた - 学生が自由にサーバのリソースを利用できるようになった - Cephと、これまでのGFS2との書き込み速度の比較を行った -- 不便な点を補うために作成したie-podmanの評価を行った +- Rootless Podmanの遅さ補うために作成したie-podmanの評価を行った --- <!-- class: slide -->