OCI HPC Cluster: FAQ - Autoscaling 関連

:::note info
本ページは [OCI: HPC Cluster](https://qiita.com/itokazu/items/63d2e3cebdcdda5afce0) のサブページになります。
:::

## Autoscaling 関連
### Q: 単一パーティション(キュー)内で複数のインスタンスを利用することは可能か？

### Q: マルチパーティション(キュー)構成は設定可能か？
可能です。複数のパーティション(キュー)を定義することができます。


### Q: VM インスタンスは利用可能か？
A: 可能です。
queues.conf の対象パーティション配下に name: vm-default のような設定を追加してください。
こちらの例ですが、以下のような設定をしています。
- Shape は VM.Standard.E4.Flex
- cluster_network は必ず false にします(VM は RDMA には対応していないため)
- Flex Shape なので core と memory を指定します
    - instance_pool_ocpus を 1 にしてます(=1core)
    - instance_pool_memory を 8 にしています(=8GB Memory)
    - instance_pool_custom_memory を true にします
- hyperthreading は true のみ有効です

```
    - name: compute2
      default: true
      instance_types:
        - name: vm-default
          default: true
          shape: VM.Standard.E4.Flex
          instance_keyword: amd
          permanent: false
          cluster_network: false
          max_number_nodes: 1000
          max_cluster_size: 50
          max_cluster_count: 1000
          ad: LZML:AP-TOKYO-1-AD-1
          image: ocid1.image.oc1..aaaaaaaa5yxem7wzie34hi5km4qm2t754tsfxrjuefyjivebrxjad4jcj5oa
          targetCompartment: ocid1.compartment.oc1..aaaaaaaa
          boot_volume_size: 50
          use_marketplace_image: true
          instance_pool_ocpus: 1
          instance_pool_memory: 8
          instance_pool_custom_memory: true
          marketplace_listing: 4. Oracle Linux 7.9 OFED 5.0-2.1.8.0 RHCK 20210709
          hyperthreading: true
```

queues.conf 編集後には以下コマンドを opc ユーザで実行し反映させてください。
```
$ /opt/oci-hpc/bin/slurm_config.sh
```

### Q: Autoscaling を止めたいときはどうすればよいか？ 
A: crontab でスクリプトが実行されないように2行目をコメントしてください

```
#Ansible: slurm autoscaling
#* * * * * /opt/oci-hpc/autoscaling/crontab/autoscale_slurm.sh >> /opt/oci-hpc/logs/crontab_slurm_`date '+\%Y\%m\%d'`.log 2>&1
#Ansible: slurm monitoring
* * * * * source /opt/oci-hpc/monitoring/env; /opt/oci-hpc/monitoring/monitor_slurm.sh >> /opt/oci-hpc/monitoring/monitor_slurm_`date '+\%Y\%m\%d'`.log 2>&1
#Ansible: OCI monitoring
* * * * * source /opt/oci-hpc/monitoring/env; /opt/oci-hpc/monitoring/monitor_oci.sh >> /opt/oci-hpc/monitoring/monitor_oci_`date '+\%Y\%m\%d'`.log 2>&1
```

### Q: 計算ノードを常時起動と Autoscaling を組み合わせて利用することは可能か？
(準備中)

### Q: 計算ノードをコマンドで作成することは可能か？
A: 可能です。以下コマンドを opc ユーザで実行してください。
ただし、autoscaling 利用時の手動作成はやめた方が良いです。clusterNumber が重複して作成してしまう可能性があり、そうなると正常に動作しない状態になってしまいます。

コマンド構文
```
$ /opt/oci-hpc/bin/create_cluster.sh NodeNumber clustername instance_type(name) queue_name
```

各オプションについて
- NodeNumber: 生成するノード数を指定
- clustername: queueName-clusterNumber-instance_keyword の3要素で構成される
    - queueName: queues.conf で指定されたパーティション(キュー)名
    - clusterNumber: 各クラスタに割り振る固有の番号。1からカウントしていく(重複不可)。
    - instance_keyword: queues.conf の instance_keyword に指定した文字列

2ノード構成例
```
$ /opt/oci-hpc/bin/create_cluster.sh 2 compute-1-hpc hpc-default compute
```

### Q: 計算ノードをコマンドで削除することは可能か？
A: autoscaling または手動で作成されたクラスタを手動で削除することが可能です。
ただし、間違ったクラスタを消す可能性もあるので慎重に実行してください。
以下コマンドを opc ユーザで実行してください。

コマンド構文:
```
$ /opt/oci-hpc/bin/delete_cluster.sh clustername
```
clustername は `/opt/oci-hpc/autoscaling/clusters/` に存在するディレクトリ名です。

実行例:
```
$ /opt/oci-hpc/bin/delete_cluster.sh compute-1-hpc
```

エラーが出た場合などは以下のように FORCE オプションを追加し再実行をお願いします
```
$ /opt/oci-hpc/bin/delete_cluster.sh compute-1-hpc FORCE
```


### Q: 現在起動している計算ノードをログインノードで確認可能か？
A: 可能です。
現在稼働している計算ノードは Slurm に登録されているので、以下のコマンドにて確認が可能です。
以下の例では compute1 というパーティションで compute1-amd-node-127 という計算ノードが稼働していることが分かります。
```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
compute1*    up   infinite      1  alloc compute1-amd-node-127
```


## Slurm 関連
### Q: 生成された計算ノードの hostfile はどう準備すればよいか？
A: 各計算ノードの /etc/opt/oci-hpc/hostfile に自動生成されます
また Slurm のジョブスクリプトでは以下のコマンドでリストの生成が可能です。

```
scontrol show hostname ${SLURM_JOB_NODELIS} > hostfile
```