Mercurial > hg > Papers > 2021 > mk-thesis
view slide/slide.md @ 53:b6e530c55007
update slide
author | Ken Miyahira <e175733@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 13 Feb 2021 22:17:13 +0900 |
parents | d0b469710cb2 |
children | aaced29a65f3 |
line wrap: on
line source
--- marp: false title: コンテナ技術を用いた教育情報システムの構築 paginate: true theme: default size: 16:9 style: | section { background-color: #FFFFFF; font-size: 28px; color: #4b4b4b; font-family: "Arial", "Hiragino Maru Gothic ProN"; } section.title { font-size: 40px; padding: 40px; } section.title h1 { text-align: center; } section.slide h1 { position: absolute; left: 50px; top: 35px; } --- <!-- class: title --> # <!--fit--> コンテナ技術を用いた教育情報システムの構築 - 宮平 賢 - 琉球大学工学部工学科知能情報コース - 河野 真治 - 琉球大学工学部 --- <!-- class: slide --> # 学生が自由に利用できる教育情報システムの構築 - 情報通信技術の普及に伴い学ぶことが増えている - その学習環境として、Virtual MachineやContainerがある - 実行には高性能なPCが必要な場合がある - クラウドサービスもあるが、無料だと制限がある - 学生の学習環境として、コストを支払う必要のない環境を提供したい - 今年度はシステム更新があり、新しくSSDとGPUが搭載される - リソースを最大限利用できる教育情報システムが必要となる --- <!-- class: slide --> # これまでの学生向け学習環境 - VM貸出サービス - Akatsuki - 申請を行い、Webコントロールパネルから作成 - ie-virsh - 手元のPCで作成したVMイメージのデプロイ - VM貸出サービスのデフォルトスペック - CPU 1コア - メモリ 1GB - ディスク容量 10GB --- # これまでの学習環境の問題点 - VM貸出サービスの一部学生は申請の方法が分からなかったり、貸出サービスがあることが周知されていなかったため、旧システムのリソースが余っていた </br> - 旧システムにはGPUが搭載されていないため、貸出サービスではなく研究室ごとの機器、クラウドサービスが多く利用された </br> - ファイルシステムに使用していたGFS2はロックマネージャの影響が大きく、サーバ1台がクラスタに参加できないとGFS2上にアクセスできなくなった --- <!-- class: title --> # 教育情報システムの構築 --- <!-- class: slide --> # VMベースからコンテナベースへ移行 - 旧システムはVMベースでシステムが構築されていた - サービスごとにVMがあり、管理に手間が掛かる - VMベースでは搭載されるGPUを有効活用できない - 1つのVMに1台のGPUが必要になる - サーバのリソースを効率よく利用できるコンテナへ移行する - VM貸出サービスをやめるわけではない --- # コンテナ環境の導入 - マルチユーザで利用できるPodman、Singularityを導入する - Podman - rootlessで利用できる - Dockerと同じCLIを提供する - nvidia-dockerの設定を行えばGPUを利用できる - Singularity - ホームディレクトリ、/tmpなどがコンテナにマウントされる - プログラムの実行に便利 - GPUドライバーをインストールするだけでGPUが利用できる - コンテナベースの学習環境を提供できるようになる --- # コンテナエンジンの補い - Podman - rootlessではイメージの作成やコンテナの作成が遅い - rootlessでは実行できない機能がある - IPアドレスの割り当て - Singularity - イメージの作成に時間がかかる - ビルド中にエラーが発生すると、一から再開する必要がある - そこでPodmanをwrappしたie-podmanを作成した --- # ie-podmanの作成 - rootfullのPodman wrapperである - ユーザのUID、GIDを取得し管理を行う - 他のユーザのリソースを操作できない - コンテナ名、イメージ名をユーザ名で補完する - SSD上にイメージ等を保存し、高速化を図る --- # ie-podmanの機能 1/2 - Podmanのすべての機能をwrappするのではなく、一部機能のみを提供する | コマンド | 機能 | | --- | --- | | build| Containerfileの指示に従いイメージを作成する | | cp | コンテナにファイルを送信する | | exec | 起動中のコンテナでプロセスを実行する | | images | コンテナイメージの一覧を表示する | | info | コンテナの情報を表示する | | logs | コンテナのlogを表示する | | ps | 起動中のコンテナの一覧を表示する | --- # ie-podmanの機能 2/2 - registryやsifなど独自のサブコマンドを提供する | コマンド | 機能 | | --- | --- | | registry | 学科のレジストリの操作を行う | | rm | コンテナを削除する | | run | コンテナを作成する | | sif | イメージをsifファイルに変換する | | start | コンテナを起動する | | stop | コンテナを停止する | --- # ジョブスケジューラとファイルシステムの導入 - Slurmを採用 - プログラム実行のリソースの管理を行う - 利用方針 - 計算リソースの利用効率を上げる - Cephを採用 - 自己修復、自己管理機能を搭載するため信頼性が高い - 柔軟なアクセス方法の提供 - Object Gateway - ブロックデバイス - POSIX互換のファイルシステム --- ![bg 80%](images/system.png) --- <!-- 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の利用方法 - Singularityでは容易にGPUを利用できる - `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/3 - 実験環境 - 新システムの汎用サーバで実施 - 実験概要 - イメージのBuild速度を比較する ```Dockerfile FROM ubuntu:20.04 RUN apt-get update && \ apt-get upgrade -y ``` - Build速度の比較 - Docker - Podman (rootless) - ie-podman (Podman rootfull wrapper) --- # ie-podmanの評価 2/3 ![bg 70%](images/container2.png) --- # ie-podmanの評価 3/3 - Rootlessは`syscall`が複数呼ばれている - そのため、イメージの作成が遅いのではないか - 左がrootless、右がrootfull ![height:325](images/syscall.png) --- # ファイルシステムの評価 1/2 - 実験概要 - `dd`コマンドを使用し書き込み速度を比較する - 書き込み速度の比較 - GFS2 - NFS - CephFS - CephRBD --- # ファイルシステムの評価 2/2 ![bg 70%](images/fswrite.png) --- <!-- class: title --> # まとめ - 今年度のシステム更新で教育情報システムの構築を行った - VMベースからコンテナベースへの移行ができた - 学生が自由にサーバのリソースを利用できるようになった - Cephと、これまでのGFS2との書き込み速度の比較を行った - 不便な点を補うために作成したie-podmanの評価を行った --- <!-- class: slide --> # 今後の課題 - 教育情報システムの周知 - Jobの投下やリソースの要求方法 - ie-virsh、ie-podmanの使用方法 - ie-podmanのネットワーク構成の見直し - プレフィックス長が24のため、最大254個のIPアドレス - コンテナを停止で使用されない場合は削除する必要がある - 基幹サービスすべてのコンテナ移行 - まだVMで動いている基幹サービスがある - コンテナ運用の経験を積んでいきたい - 監視システムの導入 - Prometheusによるコンテナの監視