# HG changeset patch # User okud # Date 1613131076 -32400 # Node ID 1236fa28ffdd1de8742052eb7a5642cf99299fe5 # Parent b6212bbc42dac4566db0bac66c85ad71b15cd3f9 add slide diff -r b6212bbc42da -r 1236fa28ffdd paper/chapter/bibitem.tex --- a/paper/chapter/bibitem.tex Fri Feb 12 17:14:53 2021 +0900 +++ b/paper/chapter/bibitem.tex Fri Feb 12 20:57:56 2021 +0900 @@ -1,9 +1,11 @@ \begin{thebibliography}{99} \bibitem{IntelNews} Intel/Unified EFI Forum, https://www.uefi.org ,2017/11/3. \bibitem{CbC} 宮城光希,河野慎治.CbC言語によるOS記述.琉球大学工学部情報工学科平成29年度学位論文(学士),2017. -\bibitem{Gears} 清水隆博,河野真治.GearsOSのメタ計算.琉球大学工学部情報工学科令和3年度学位論文(修士),2021. -\bibitem{xv6} Russ Cox, M Frans Kaashoek, and Robert Morris. Xv6, a simple unix-like teaching operating system,2012. \bibitem{gcc} GNU Compiler Collection (GCC) Internals,https://gcc.gnu.org/onlinedocs/gccint/ \bibitem{llvm} Clang: a C language family frontend for LLVM,https://clang.llvm.org. \bibitem{singularity} https://sylabs.io/singularity/ +\bibitem{Gears} 清水隆博,河野真治.GearsOSのメタ計算.琉球大学工学部情報工学科令和3年度学位論文(修士),2021. +\bibitem{xv6} Russ Cox, M Frans Kaashoek, and Robert Morris. Xv6, a simple unix-like teaching operating system,2012. +\bibitem{raspi} https://www.raspberrypi.org +\bibitem{uefi} https://wiki.osdev.org/UEFI \end{thebibliography} \ No newline at end of file diff -r b6212bbc42da -r 1236fa28ffdd paper/chapter/chapter2.tex --- a/paper/chapter/chapter2.tex Fri Feb 12 17:14:53 2021 +0900 +++ b/paper/chapter/chapter2.tex Fri Feb 12 20:57:56 2021 +0900 @@ -6,7 +6,15 @@ CbCは、C言語の下位言語であり、関数呼び出しではなく継続を導入している。 CbCでは、関数の代わりにCodeGearという単位でプログラミングを行う。 CodeGearは入力と出力を持ち、CbCでは引数が入出力になっている。 -CodeGearから次のCodeGearへとgotoによる継続で遷移して処理を行い、引数として出力を与える。 +図\ref{CbC}の様にCodeGearから次のCodeGearへとgotoによる継続で遷移して処理を行い、引数として出力を与える。 +\begin{figure}[H] + \begin{center} + \includegraphics[width=100mm]{fig/CbC.png} + \end{center} + \caption{CbCの遷移} + \label{CbC} +\end{figure} + CbCには、GCC\cite{gcc}上に実装されたものとLLVM/Clang\cite{llvm}上に実装されたものがある。 GCCとLLVM/Clangで実装されたCbCをARMでCompileするにはCross Compileを行う必要がある。 GCCとLLVMではCbCを動かすのにGCCの方が安定しているのでCbCのGCCのCrossCompile環境を作成する。 diff -r b6212bbc42da -r 1236fa28ffdd paper/chapter/chapter3.tex --- a/paper/chapter/chapter3.tex Fri Feb 12 17:14:53 2021 +0900 +++ b/paper/chapter/chapter3.tex Fri Feb 12 20:57:56 2021 +0900 @@ -17,7 +17,7 @@ シンプルで学習しやすい。 \section{Raspberry Pi} -Raspberry Piは、ARMプロセッサを搭載したシングルコンピュータ。 +Raspberry Pi\cite{raspi}は、ARMプロセッサを搭載したシングルコンピュータ。 Raspberry Piにはいくつか種類があり、本研究ではRaspberry Pi 3 Model Bを仕様する。 Raspberry Pi 3 Model Bには、USB2.0コネクタが4つ、microSDカードスロット、HDMI出力、40ピンGPIOなどがついている。 CPUは、ARMアーキテクチャのCortex-A53でCPUクロックは1.4GHzでメモリは1GBある。 @@ -27,17 +27,22 @@ Raspberry Pi上でxv6を動かすためには、ARMに対応したxv6を用意する必要がある。 そのためRaspberry Pi用に移植したxv6-rpiを用いる。 Raspberry Pi上で起動しているxv6に入力を行うためにUSBシリアルケーブルでMacBookと接続する。 -その時、Raspberry Piの6番ピン(黒)、8番ピン(白)、10番ピン(緑)の3つをUSBシリアルケーブルで接続する。 +その時、図\ref{raspi}の様にRaspberry Piの6番ピン(黒)、8番ピン(白)、10番ピン(緑)の3つをUSBシリアルケーブルで接続する。 この時、HDMIでディスプレイに接続しておく。 Mac側では、USBシリアルケーブルのドライバをインストールしてRaspberry Piと接続すると、 devディレクトリ直下にtty.usbserialとして認識される。 -Mac側でscreenコマンドを使い、シリアル通信を行うと、Macのキーボードから入力を行える様になる。 -この時、screenコマンドを打ってから、Raspberry Piに電源を入れないと正常に起動しない。 +Mac側でコマンド\ref{screen}を使い、シリアル通信を行うと、Macのキーボードから入力を行える様になる。 +この時、コマンド\ref{screen}を打ってから、Raspberry Piに電源を入れないと正常に起動しない。 \begin{figure}[H] \begin{center} \includegraphics[width=100mm]{fig/raspi3.jpeg} \end{center} \caption{Raspberry Pi と USBserial接続} - \label{fig1} -\end{figure} \ No newline at end of file + \label{raspi} +\end{figure} + +\renewcommand{\lstlistingname}{コマンド} +\begin{lstlisting}[frame=lrbt,label=screen,caption={screenコマンド}] + screen /dev/tty.usbserial-143130 1152000 +\end{lstlisting} \ No newline at end of file diff -r b6212bbc42da -r 1236fa28ffdd paper/chapter/chapter4.tex --- a/paper/chapter/chapter4.tex Fri Feb 12 17:14:53 2021 +0900 +++ b/paper/chapter/chapter4.tex Fri Feb 12 20:57:56 2021 +0900 @@ -2,7 +2,7 @@ \section{UEFI} -UEFIとは、Unified Extensible Firmware Interfaceの略で +UEFI\cite{uefi}とは、Unified Extensible Firmware Interfaceの略で OSとプラットフォームファームウェアの間のソフトウェアインタフェースを定義する仕様である。 1990年代半ばにIntelによってBIOSに変わるEFI仕様が開発された。 2005年にIntel、AMD、Apple、Microsoftなどの企業からなるUnified EFI Forumという業界団体のもとUEFIが開発された。 @@ -10,33 +10,47 @@ 以前までのBIOSと異なり、近代的なソフトウェア開発手法を用いることが推奨されていて、C言語などで実装ができる。 -\section{BIOS vs UEFI} - +\section{BIOSとUEFI} +UEFIはBIOSの後継として開発されたがBIOSと大きな違いがいくつかある。 +BIOSとUEFIの違いを表\ref{tb:biso_uefi}にまとめた。 \begin{table}[H] \begin{center} - \caption{BIOS vs UEFI} + \caption{BIOSとUEFIの違い} \begin{tabular}{|c|c|c|c|} \hline & BIOS & UEFI(32bit) & UEFI(64bit)\\ \hline - OS & 16bit & 32bit & 64bit \\ \hline + CPU & 16bit & 32bit & 64bit \\ \hline メモリ空間 & 1MB & 4GB & 256TB\\ \hline - HDD容量 & 2TBまで & 2TB以上可能 & 2TB以上可能 \\ \hline - HDD数 & 一つ & 複数& 複数 \\ \hline - BOOT & GPT & MBR & MBR \\ \hline - Network & なし & あり & あり \\ \hline - セキュリティ機能 & なし & あり & あり\\ \hline + BOOT & MBR & GPT & GPT \\ \hline + デバイス規格 & PS/2 & USB & USB \\ \hline \end{tabular} \label{tb:biso_uefi} \end{center} \end{table} +\subsection{CPU} +BIOSは、40年近く前から存在しているので、16bitCPU前提のアーキテクチャであるため16bitで起動する。 +また、CPUリアルモードでないとBIOSから起動できない。 +さらに、CPUのアーキテクチャに依存し、アーキテクチャごとに設定しなければならない。 +しかし、UEFIは、32bit、64bitの両方を起動できる。起動も64bitモードで可能。 +また、CPUのアーキテクチャに依存しない。 + +\subsection{メモリ空間} +BIOSは16bitしかないのでメモリも1MBと制限がある。 +UEFIでは、32bitなら4GB、64bitなら256TBまでメモリを潤沢に使える。 +これにより、セキュリティを含めたシステム機能の強化が可能になった。 + +\subsection{BOOT} +BIOSとUEFIでは、BOOT方式が違う。 +BIOSは、ディスク先頭の512バイトにBootLoaderとパーティーションテーブル(MBR)が格納されていて +第一セクタの512バイトがメモリの0x7c00にコピーされ、そこにジャンプする。 +そして、そのBootLoaderが起動する。BootLoaderがカーネルとディスクイメージをメモリにロードし、 +カーネルが初期化処理をする。その後OSが起動される。 +UEFIは、 + +\subsection{デバイス} +device + \section{UEFI Application} aaa -\section{Raspberry Pi UEFI} -Raspberry PiはARMプロセッサを搭載しているので、ARMで動くUEFIを用意する必要がある。 -UEFIはマルチプラットフォームであり、UEFIの仕様はハードウェアに依存しないため、異なるCPUアーキテクチャでも動作できる。 -そのため +\section{UEFI Hello World} +UEFIを開発する際に - - -\section{UEFI Hello World} -UEFIを開発する際に、 - diff -r b6212bbc42da -r 1236fa28ffdd paper/fig/BOOT.png Binary file paper/fig/BOOT.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/fig/CbC.png Binary file paper/fig/CbC.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/final_thesis.pdf Binary file paper/final_thesis.pdf has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/images/backfill.png Binary file paper/slide/images/backfill.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/images/container.png Binary file paper/slide/images/container.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/images/fswrite.png Binary file paper/slide/images/fswrite.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/images/jobscheduler.png Binary file paper/slide/images/jobscheduler.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/images/system.png Binary file paper/slide/images/system.png has changed diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/slide.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/slide/slide.html Fri Feb 12 20:57:56 2021 +0900 @@ -0,0 +1,1290 @@ +コンテナ技術を用いた教育情報システムの構築
+

コンテナ技術を用いた教育情報システムの構築

+
    +
  • 宮平 賢 +
      +
    • 琉球大学工学部工学科知能情報コース
    • +
    +
  • +
  • 河野 真治 +
      +
    • 琉球大学工学部
    • +
    +
  • +
+
+
+

研究目的

+
    +
  • 情報通信技術の普及に伴い学ぶことが増えている
  • +
  • その学習環境として、Virtual MachineやContainerがある +
      +
    • 高性能なPC
    • +
    • クラウドサービス +
        +
      • 無料だと制限がある
      • +
      +
    • +
    +
  • +
+
+
+

これまでの学生向け学習環境

+
    +
  • +

    VM貸出サービス

    +
      +
    • Akatsuki +
        +
      • 申請を行い、Webコントロールパネルから作成
      • +
      +
    • +
    • ie-virsh +
        +
      • 手元のPCで作成したVMイメージのデプロイ
      • +
      +
    • +
    +
  • +
  • +

    VM貸出サービスのデフォルトスペック

    +
      +
    • CPU 1コア
    • +
    • メモリ 1GB
    • +
    • ディスク容量 10GB
    • +
    +
  • +
+
+
+

これまでの学習環境の問題点

+
    +
  • VM貸出サービスの一部学生は申請の方法が分からなかったり、貸出サービスがあることが周知されていなかったため、旧システムのリソースが余っていた
  • +
+
+
    +
  • VMのスペックの変更にはシステム管理チームへの申請が必要であり、利用者と管理者とのやり取りなどの手間があった
  • +
+
+
    +
  • 旧システムにはGPUが搭載されていないため、貸出サービスではなく研究室ごとの機器、クラウドサービスが多く利用された
  • +
+
+
+

教育情報システムの構築

+
+
+

オンプレミス環境

+
    +
  • 汎用サーバ x 4
  • +
  • ディスクサーバ x 2
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CPUIntel Xeon Gold 6238 (2.10GHz/22Core)
GPUNvidia Tesla V100S
メモリ512GB
SAS SSD5TB
NVMe SSD1.5TB
+
+
+

VM貸出サービスの移行

+
    +
  • VM貸出サービスを継続するため、KVMを導入する
  • +
  • VMからGPUの利用にはPCIパススルーの設定が必要となる
  • +
  • しかし、VM1つに対し、1つのGPUが必要になる +
      +
    • 希望する学生全員に割り当てができない
    • +
    +
  • +
+
+
    +
  • そこで、コンテナ環境を導入する +
      +
    • 1つのGPUを複数のコンテナから利用できる
    • +
    +
  • +
+
+
+

コンテナ環境の導入

+
    +
  • 要件としてマルチユーザであり、GPUが利用できるなどがある
  • +
  • そこで、Podman、Singularityを導入する
  • +
  • Podman +
      +
    • rootlessで利用できる
    • +
    • nvidia-dockerの設定を行えばGPUを利用できる
    • +
    +
  • +
  • Singularity +
      +
    • rootlessで利用できる
    • +
    • GPUの利用が容易 +
        +
      • GPUドライバーのインストールのみ
      • +
      +
    • +
    +
  • +
+
+
+

コンテナエンジンの補い

+
    +
  • +

    Podman

    +
      +
    • イメージの作成やコンテナの作成が遅い +
        +
      • Podmanがまだ開発段階
      • +
      +
    • +
    • rootlessでは実行できない機能がある +
        +
      • IPアドレスの割り当て
      • +
      +
    • +
    +
  • +
  • +

    Singularity

    +
      +
    • イメージの作成に時間がかかる +
        +
      • ビルド中にエラーが発生すると、一から再開する必要がある
      • +
      +
    • +
    +
  • +
  • +

    そこでPodmanのwrapperであるie-podmanを作成した

    +
  • +
+
+
+

ie-podmanの作成

+
    +
  • ユーザのUID、GIDを取得し管理を行う +
      +
    • 他のユーザのリソースを操作できない
    • +
    +
  • +
  • SSD上にイメージ等を保存し、高速を図る
  • +
+
+
+

ie-podmanの機能 1/2

+
    +
  • Podmanのすべての機能をwrappするのではなく、一部機能のみを提供する
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
コマンド機能
buildContainerfileの指示に従いイメージを作成する
cpコンテナにファイルを送信する
exec起動中のコンテナでプロセスを実行する
imagesコンテナイメージの一覧を表示する
infoコンテナの情報を表示する
logsコンテナのlogを表示する
ps起動中のコンテナの一覧を表示する
+
+
+

ie-podmanの機能 2/2

+
    +
  • registryやsifなど独自機能を提供する
  • +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
コマンド機能
registry学科のレジストリの操作を行う
rmコンテナを削除する
runコンテナを作成する
sifイメージをsifファイルに変換する
startコンテナを起動する
stopコンテナを停止する
+
+
+

ジョブスケジューラの導入

+
    +
  • 多くのリソースを必要とするプログラムは管理が必要である
  • +
  • 4台のサーバのリソースを利用できるようにする必要がある
  • +
  • そこで、ジョブスケジューラのSlurmを採用する +
      +
    • フォールトトレラントで拡張性が高い
    • +
    +
  • +
+
+
+

ジョブスケジューラの構築

+

利用方針 「計算リソースの利用効率を上げる」

+
    +
  • Jobの優先順位 +
      +
    • 要求するリソースの少ないJobの優先度を高くする
    • +
    • 実行時間が短いJobの優先度を高くする
    • +
    • これまでのJobの実行履歴で優先度は変化しない
    • +
    +
  • +
+

これでは多くのリソースを要求するJobが実行されない可能性がある。

+
    +
  • Jobの実行時間 +
      +
    • Jobの実行時間の記載がない場合は1日で強制終了させる
    • +
    • 管理者からJobの優先度を上げる
    • +
    +
  • +
+

また、Jobのスケジュールにはバックフィルを採用する。

+
+
+

+
+
+

ファイルシステムの導入

+
    +
  • Cephを採用 +
      +
    • 自己修復、自己管理機能を搭載するため信頼性が高い
    • +
    • 柔軟なアクセス方法の提供 +
        +
      • Object Gateway
      • +
      • ブロックデバイス
      • +
      • POSIX互換のファイルシステム
      • +
      +
    • +
    +
  • +
+
+
+

教育情報システムの構成

+
    +
  • 汎用サーバ全てにKVM、Podman、Singularityをインストール
  • +
  • Slurm +
      +
    • 汎用サーバ1台をコントローラ/計算ノード
    • +
    • 残りを計算ノード
    • +
    +
  • +
  • Ceph +
      +
    • ディスクサーバをOSD
    • +
    • 汎用サーバ3台をMON, MDS, MGR
    • +
    +
  • +
+
+
+
+

教育情報システムの利用と管理

+
+
+

VM貸出サービスの利用

+
    +
  • VMの作成、スペックの変更で申請が必要なくなった
  • +
  • VMの作成 +
      +
    • ie-virsh define --template Ubuntu-20 VM_NAME
    • +
    +
  • +
  • スペックの変更 +
      +
    • ie-virsh edit VM_NAME
    • +
    +
  • +
+
+
+

ie-podmanの使用方法

+
    +
  • PodmanはDockerと同じCLIを提供している
  • +
  • IPアドレス、GPUをコンテナへ割り当てられる +
      +
    • ie-podman run --ip --gpu [IMAGE_NAME]
    • +
    +
  • +
  • 作成したイメージをsifファイルへの変換に対応 +
      +
    • ie-podman sif [IMAGE_NAME]
    • +
    +
  • +
+
+
+

GPUの利用方法

+
    +
  • Singularityでは容易にGPUを利用できる +
      +
    • singularity run --nv [SIF_NAME]
    • +
    +
  • +
  • ホームディレクトリ、/tmpなどがコンテナにマウントされる +
      +
    • プログラムの実行に便利
    • +
    +
  • +
  • SlurmによるJob管理 +
      +
    • 必要なリソースを記述し投下する
    • +
    • CPU数、GPU数
    • +
    +
  • +
+
+
+

batchファイルの例

+
    +
  • Jobに必要とするリソース +
      +
    • CPU 8コア、GPU 1つ
    • +
    +
  • +
  • Jobの実行時間 +
      +
    • 1分
    • +
    +
  • +
+
#!/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]
+
+
+
+

教育情報システムの評価

+
+
+

ファイルシステムの評価 1/2

+
    +
  • +

    実験概要

    +
      +
    • ddコマンドを使用し書き込み速度を比較する
    • +
    +
  • +
  • +

    書き込み速度の比較

    +
      +
    • GFS2
    • +
    • NFS
    • +
    • CephFS
    • +
    • CephRBD
    • +
    +
  • +
+
+
+

ファイルシステムの評価 2/2

+
+
+

ie-podmanの評価 1/3

+
    +
  • +

    実験環境

    +
      +
    • 新システムの汎用サーバで実施
    • +
    +
  • +
  • +

    実験概要

    +
      +
    • イメージのBuild速度を比較する
    • +
    +
  • +
  • +

    Build速度の比較

    +
      +
    • Docker
    • +
    • Podman (rootless)
    • +
    • ie-podman
    • +
    +
  • +
+
+
+

ie-podmanの評価 2/3

+
FROM ubuntu:18.04
+RUN apt-get update && \
+    apt-get upgrade -y && \
+    DEBIAN_FRONTEND=noninteractive \
+    apt-get install -y \
+	qemu-utils qemu-efi-aarch64 \
+	qemu-system-arm qemu-system-x86 \
+	build-essential uuid-dev \
+	git python iasl wget vim nasm && \
+    DEBIAN_FRONTEND=noninteractive \
+    apt-get install -y \
+	crossbuild-essential-armhf
+
+WORKDIR /workdir
+RUN git clone --recursive https://github.com/tianocore/edk2 && \
+    wget https://sourceforge.net/projects/gnu-efi/files/gnu-efi-3.0.12.tar.bz2/download && \
+    tar xf download
+
+
+
+

ie-podmanの評価 3/3

+
+
+

学習環境の評価

+
    +
  • VM +
      +
    • 学生が自由にスペックを変更できる
    • +
    • ディスク容量を抑えれる
    • +
    +
  • +
  • コンテナ +
      +
    • 気軽に利用できる
    • +
    • 高性能な実況環境を利用できる
    • +
    +
  • +
+
+
+

まとめ

+
+
+

今後の課題

+
    +
  • 教育情報システムの周知 +
      +
    • Jobの投下やリソースの要求方法
    • +
    • ie-virsh、ie-podmanの使用方法
    • +
    • 定期的な周知が必要
    • +
    +
  • +
  • ie-podmanのネットワーク構成の見直し +
      +
    • プレフィックス長が24のため、最大254個のIPアドレス
    • +
    • コンテナを停止で使用されない場合は削除する必要がある
    • +
    +
  • +
  • バックアップの運用 +
      +
    • Cephと専用サーバ以外のバックアップ先を用意する必要がある
    • +
    +
  • +
+
+
\ No newline at end of file diff -r b6212bbc42da -r 1236fa28ffdd paper/slide/slide.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/slide/slide.md Fri Feb 12 20:57:56 2021 +0900 @@ -0,0 +1,45 @@ +--- +marp: false +title: Gears OS UEFI対応 +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; + } + +--- + +# Gears OS UEFI対応 + +- 奥田光希 + - 琉球大学工学部工学科知能情報コース +- 河野 真治 + - 琉球大学工学部 + +--- + +# 研究目的 + + + +--- +