===============
AAClusterの仕様
===============

.. _confirm-available-packages:

利用可能なソフトウェア
======================

AAClusterでは主要なソフトウェアとして、以下のパッケージがインストールされています。

* `公式のCentOS Docker Image内にあるパッケージ <https://hub.docker.com/_/centos/>`_
* Jupyter、scikit-learn、matplotlibなどのPythonパッケージ
* Gitクライアント、AWS CLI、SSHクライアント

すべてのパッケージを確認するには、Notebookで以下のコードを実行します。

* Python

   .. code-block:: ipython

       In [1]: !pip freeze

* RPM

   .. code-block:: ipython

       In [1]: !rpm -qa

.. _available-resource:

利用可能なCPU、メモリ、GPU
==========================

AAClusterが利用可能なリソース（CPU、メモリ、GPU）は性能タイプとリソースクォータによって決まります。

性能タイプ
----------

性能タイプはリソースを確保する量を定義した設定です。
AACluster作成時にJupyter Notebookの性能タイプを設定します。

たとえば、CPU 1コア、メモリ 2GiBと設定された性能タイプをJupyter Notebookに設定して、
AAClusterを作成した場合は、Jupyter NotebookはCPU 1コア、メモリ 2GiBを利用できることが保証されます。

.. note:: 実際に利用するリソース量は性能タイプに設定された値以上利用できる場合がありますが、
          どのくらいの量を利用できるかはAAClusterが起動されたホスト上のリソースの空き容量と
          性能タイプの設定に依存します。

          また、性能タイプに設定された値以上のリソース量を利用している場合の動作は
          リソースの種類ごとに異なります。

          * CPU: ホスト上に空きがある場合、性能タイプに設定された値以上を利用できます。
          * メモリ: ホスト上に空きがある場合、性能タイプに設定された値以上利用できますが、
            システムによってJupyter Notebookなどが終了されることがあります。
          * GPU: 性能タイプに設定された値以上利用することはできません。

.. note:: AAClusterを起動するホスト上に性能タイプに設定された値以上の
          リソースの空きがない場合は、AAClusterの作成に失敗します。
          この場合、作成済みのAAClusterを削除するか、分析PF管理者に連絡してください。

リソースクォータ
----------------

リソースクォータはユーザごとに設定される利用可能なリソースを確保する量の上限値です。
ユーザがAACluster作成時に指定した性能タイプのリソースを確保する量の合計値は
リソースクォータに設定された値を超えることはできません。

たとえば、以下のリソースクォータと性能タイプがあるとします。

ユーザーに設定されたリソースクォータ

* CPU: 2 コア
* メモリ: 8 GiB

性能タイプ Sample

* CPU: 1 コア
* メモリ: 2 GiB

この場合、性能タイプSampleをJupyter Notebookに設定して、AAClusterを2つまで作成することができますが、
3つ目を作成しようとすると確保するCPUの合計がリソースクォータの設定値を超えるため、AAClusterの作成に失敗します。

+--------+---------------------------+-----------------------------------------+
|        | リソースクォータの設定値  | リソース確保量の合計                    |
|        |                           +--------------------+--------------------+
|        |                           | AAClusterを2つ作成 | AAClusterを3つ作成 |
+========+===========================+====================+====================+
| CPU    | 2 コア                    | 2 コア             | **3 コア**         |
+--------+---------------------------+--------------------+--------------------+
| メモリ | 8 GiB                     | 4 GiB              | 6 GiB              |
+--------+---------------------------+--------------------+--------------------+

.. note:: リソースクォータの設定を確認する場合、または設定されたリソースクォータの上限を
          上げたい場合は分析PF管理者に依頼してください。


利用可能なストレージ容量
========================

AAClusterのストレージ容量は以下の通りです。

.. list-table:: ストレージ容量
  :header-rows: 1

  * - ディレクトリ
    - ディスク容量
  * - ルートパーティション（``/``）
    - 60GB
      （Container Nodeのルートパーティションと同じ容量になります）
  * - /home/aa_svc
    - AAPFデプロイ環境の共有ストレージ領域で使用可能なストレージ容量と同じです。
      （Storage Nodeの ``/aastorage`` が存在するパーティションと同じ容量になります）
      ただし、ディスク使用量の上限が設定されている場合はこの限りではありません。
      上限が設定されているか分からない場合は、Terminalで `df` コマンドを実行するなどして
      利用可能なストレージ容量を確認してください。

.. warning:: ルートパーティションのストレージの使用率が85％を超えると、AAClusterが停止します。
             複数のAAClusterを立ち上げている場合は、いずれかのAAClusterが停止します。

利用不可能なコマンド
====================

AAClusterでは **root権限が必要なコマンド** は実行することができません。

例として以下のようなコマンドがあります。

* `usermod` コマンドを利用したユーザーの設定変更
* `rpm` コマンドを利用したRPMパッケージインストール
* `yum install` コマンドを利用したRPMパッケージインストール

.. note:: 前述のコマンドを利用してAAClusterにRPMパッケージをインストールしたい場合は、
          分析PF管理者に必要なRPMパッケージのインストールを依頼してください

追加可能なライブラリの要件
==========================

AAClusterにはPythonパッケージとして提供されているライブラリを追加できます。
また、分析PF管理者はRPMパッケージとして提供されているライブラリも追加できます。

インストール可能なPythonパッケージやRPMパッケージの条件は以下のとおりです。

.. _requirements-of-python-packages:

Pythonパッケージ
----------------

* 以下のすべてを満たすこと

  * `pip install` コマンドでインストール可能なPythonパッケージファイル（.whl, .zip, .tar.gz）である
  * AAClusterにインストールされているRPMパッケージのみで動作する
  * ``systemd`` やOS上で稼動しているサービスに依存していない
  * AAPFが利用しているPythonパッケージと競合しない

RPMパッケージ
-------------

* 以下のすべてを満たすこと

  * インストールすることでデーモンプロセスを起動しない
  * ``systemd`` やOS上で稼動しているサービスに依存していない
  * AAPFが利用しているRPMパッケージと競合しない

.. note:: RPMパッケージは分析PF管理者がインストールする必要があります。また、インストールした
          RPMパッケージはインストール後に作成した全AAClusterで利用可能な状態になります。
