\chapter{教育情報システムの評価}

本章では，教育情報システムの評価を行う．
新たに採用したCephとの比較，VM貸出サービス，コンテナ環境の評価を述べる．

\section{ファイルシステムの評価}

旧システムのVM保存場所として利用していたGFS2，ユーザのホームディレクトリとして利用していたNFSとの速度比較を行う．

\subsection{実験概要}

実験に使用する汎用サーバ環境は，表\ref{tb:newserver}を使用する．
また，Cephの構成は図\ref{fig:system}となっている．
\par
ベンチマークにはddというファイル変換やコピーを目的としたGNU/Linuxのコアユーティリティを用いる．
ddは，低レベルのI/Oフロー制御機能を備えており，シーケンシャル書き込み，または読み取りの速度を測定できる．
データの変換方法にfdatasyncを指定することで，書き込み終了の直前にsyncを1回要求するため，実際の動作に近い動作で測定が可能である．
\par
書き込みにはソースコード\ref{pg:dd}のコマンドを用いる．
\begin{lstlisting}[caption=ベンチマークコマンド, label=pg:dd]
$ dd if=/dev/zero of=benchmark bs=64K count=2K conv=fdatasync
\end{lstlisting}
また，ファイルサイズは128MB，256MB，512MB，1GB，2GB，4GBの書き込みを行う．
5回測定を行い平均を比較する．

\subsection{ファイルシステムの速度比較}
図\ref{fig:write}はCephFS，Ceph RBD，GFS2，NFSにおけるファイルサイズに対する書き込み速度である．

\begin{figure}[H]
    \begin{center}
        \includegraphics[width=150mm]{file/benchmark/pdf/Write.pdf}
    \end{center}
    \caption{書込み速度の比較}
    \label{fig:write}
\end{figure}

\subsection{考察}
旧システムのホームディレクトリは，iSCSI経由でマウントされたデバイスをNFSから提供していた．
iSCSIの通信には10Gbpsの回線で接続されているが，NFSの提供はVMで行われており，1Gbpsで提供されていた．
そのため，10Gbpsの回線で接続し，マウントしているCephでは書き込み速度の改善が見られる．
しかし，GFS2は10Gbpsで接続されたクラスタで構成されているが，Cephより低速である．
旧システムでは，パッケージ等のアップデートがされておらず，Kernelの更新もされていなかった．
KernelはI/Oに関する多くの機能を提供するため，GFS2の書き込みより，Cephが高速になったのではないかと考えられる．
\par
今回の計測では，読み込み速度の測定を行えなかった．
これは，旧システムで読み込み時にバッファキャッシュを削除せずに測定を行ったためである．
そのため，純粋な読み込み速度を測定することができなかったことは反省点である．

\section{VM貸出サービスの評価}
本コースのVM貸出サービスでは，VMの作成やスペックの変更にはシステム管理チームへの申請が必要であった．
これは，VMがリソースを過剰に使用できないようシステム管理チームで管理するためである．
VMの作成やスペックの変更申請が届くと，システム管理チームと利用者の間でやりとりを行い対応していた．
しかし，システム管理チームの状況によっては迅速に対応できず利用者を待たせることもあった．
新システムでは，VMの作成やスペックの変更はie-virshから対応できるようになり，システム管理チームや利用者の手間を減らすことが可能になった．
\par
また，これまでのVM貸出サービスはテンプレートのVMイメージをCloneしていたため，新しくVMを作成すると10GBの容量を使用していた．
そこで，ie-virshでは差分でVMを作成機能が追加され，新しく作成されるVMは数十MBになることで，使用するディスク容量を抑えることが可能になった．

\section{コンテナ環境の評価}
%新しく導入したPodmanは，Dockerと同じCLIを提供するため，Dockerを利用したことがある学生は抵抗なく利用できる．
%また，ie-podmanにより特権が必要な機能も，利用者に特別な権限を与えることなく利用できるようになる．
%Singularityの導入により，GPUを手軽に利用できるため，演習や研究等での利用も広がると考えられる．
%\par
%VMでは新しく作成するたびに環境構築が必要であったが，コンテナイメージを作成することで環境構築は一度のみになる．
%また，学科のレジストリーにイメージを登録することで，他の利用者に共有も可能となる．
%Singularityでは単一ファイルのsifのコピーを配布することで，同じ環境でプログラムの実行することができる．
%\par
%これまでのVMベースのシステムから，コンテナベースのシステムへの移行により，汎用バーバのリソースを効率よく利用できる．
%また，学生も気軽に利用できるようになったのではないかと考えられる．

新しく導入したPodmanは，Dockerと同じCLIを提供するため，Dockerを利用したことがある学生は抵抗なく利用できる．
また，Singularityの導入により，GPUを手軽に利用できるため，演習や研究等での利用も広がると考えられる．
\par
RootlessのPodman，Singularityの不便な点を補うため，Podmanのwrapperであるie-podmanを作成した．
iepodmanにより特権が必要な機能も，利用者に特別な権限を与えることなく利用できるようになる．
また，ie-podmanはrootfullのPodmanをwrapperすることにより，コンテナやイメージがSSD上に保存される．
そのため，rootlessのPodmanより高速化を図ることが可能になる．
\par
そこで，ie-podmanでのイメージのBuild速度の比較を行う．

\subsection{実験概要}
実験に使用する環境は，表\ref{tb:newserver}のサーバ1台を使用する．
一般的なコンテナエンジンであるDockerを含め，比較するコンテナエンジンは以下である．
\begin{itemize}
    \item Docker
    \item Podman (rootless)
    \item ie-podman (Podman rootfull wrapper)
\end{itemize}

使用するDockerfileはソースコード\ref{pg:dockerfile}である．
また，時間の計測にはtimeコマンドを使用する．

\begin{lstlisting}[caption=Dockerfile, label=pg:dockerfile]
FROM ubuntu:20.04
RUN apt-get update && \
    apt-get upgrade -y
\end{lstlisting}

\subsection{イメージのBuild速度比較}
図\ref{fig:ie-podman-review}はDocker, Podman, ie-podmanにおけるイメージのBuild速度である．
\begin{figure}[H]
    \begin{center}
        \includegraphics[width=150mm]{file/benchmark/pdf/container2.pdf}
    \end{center}
    \caption{書込み速度の比較}
    \label{fig:ie-podman-review}
\end{figure}

\subsection{考察}
Dockerやie-podmanのBuildに掛かる時間は1分未満だが，rootlessのPodmanでは3分程掛かっている．
RootlessのPodmanはコンテナイメージをユーザのホームディレクトリに保存する．
また，rootlessでは重複排除をサポートしていないVFSストレージに制限される．
RootlessのPodmanは独自の名前空間内で特権機能を利用できるようにするため，rootfullと比べ経由する関数が多くなる．
そのため，rootlessではrootfullと比べsyscallが多く呼ばれることにより，他と比べイメージのBuild速度が遅くなっているのではないかと考える．