Mercurial > hg > Papers > 2021 > mk-thesis
view slide/slide.md @ 59:c72f0d0eb28a
update slide
author | Ken Miyahira <e175733@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 15 Feb 2021 16:18:55 +0900 |
parents | aaced29a65f3 |
children | 424850058f1b |
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> - VMイメージの保存場所に使用していたGFS2はロックマネージャの影響が大きく、サーバ1台でもクラスタに参加できないとGFS2上にアクセスできなくなった --- <!-- class: title --> # 教育情報システムの構築 --- <!-- class: slide --> # VMベースからコンテナベースへ移行 - 旧システムはVMベースでシステムが構築されていた - サービスごとにVMがあり、管理に手間が掛かる - VMベースではサーバに搭載されるGPUを有効活用できない - 1つのVMに1台のGPUが必要になる - 希望する学生全員に割り当てきれない </br> - サーバのリソースを効率よく利用できるコンテナへ移行する - VM貸出サービスは継続する --- # コンテナ環境の導入 - マルチユーザで利用できるPodman、Singularityを導入する - Podman - Dockerと同じCLIを提供する (`alias docker=podman`) - nvidia-dockerの設定を行えばGPUを利用できる - Singularity - ホームディレクトリ、/tmpなどがコンテナにマウントされる - コンテナにユーザ権限が引き継がれる - コンテナから容易に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を採用 - 自己修復、自己管理機能を搭載するため信頼性が高い - Monitorを3台のサーバで構成することで、最大1台の停止は許容される - 柔軟なアクセス方法を提供する - 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の利用方法 - 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 - 実験概要 - `dd`コマンドを使用し書き込み速度を比較する - 比較するファイルシステム - GFS2 - 旧システムのVMイメージの保存場所として利用された - NFS - 旧システムのホームディレクトリとして利用された - CephFS - 新システムのホームディレクトリとして利用する - CephRBD - 新システムのVMイメージの保存場所の1つとして利用する --- # ファイルシステムの評価 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によるコンテナの監視