

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Beberapa mode antrian tutorial
<a name="tutorial-mqm"></a>



## Menjalankan pekerjaan Anda AWS ParallelCluster dengan beberapa mode antrian
<a name="tutorial-mqm-running-jobs"></a>

Tutorial ini memandu Anda melalui menjalankan pekerjaan Hello World pertama Anda AWS ParallelCluster dengan[Mode antrian ganda](queue-mode.md).

**Prasyarat**
+ AWS ParallelCluster [diinstal](install.md).
+  AWS CLI [Itu diinstal dan dikonfigurasi.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ Anda memiliki [EC2 key pair](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).
+ Anda memiliki peran IAM dengan [izin](iam.md#example-parallelcluser-policies) yang diperlukan untuk menjalankan CLI[`pcluster`](pcluster.md).

**catatan**  
Mode antrian ganda hanya didukung untuk AWS ParallelCluster versi 2.9.0 atau yang lebih baru.

### Mengkonfigurasi klaster Anda
<a name="tutorial-mqm-configure-cluster"></a>

Pertama, verifikasi AWS ParallelCluster yang diinstal dengan benar dengan menjalankan perintah berikut.

```
$ pcluster version
```

Untuk informasi selengkapnya tentang `pcluster version`, lihat [`pcluster version`](pcluster.version.md).

Perintah ini mengembalikan versi yang sedang berjalan dari AWS ParallelCluster.

Selanjutnya, jalankan `pcluster configure` untuk menghasilkan file konfigurasi dasar. Ikuti semua petunjuk yang mengikuti perintah ini.

```
$ pcluster configure
```

Untuk informasi selengkapnya tentang `pcluster configure` perintah, lihat[`pcluster configure`](pcluster.configure.md).

Setelah Anda menyelesaikan langkah ini, Anda harus memiliki file konfigurasi dasar di bawah`~/.parallelcluster/config`. File ini harus berisi konfigurasi cluster dasar dan bagian VPC.

Bagian selanjutnya dari tutorial ini menguraikan cara memodifikasi konfigurasi yang baru Anda buat dan meluncurkan cluster dengan beberapa antrian.

**catatan**  
Beberapa contoh yang digunakan dalam tutorial ini tidak memenuhi syarat tingkat bebas.

Untuk tutorial ini, gunakan konfigurasi berikut.

```
[global]
update_check = true
sanity_check = true
cluster_template = multi-queue

[aws]
aws_region_name = <Your Wilayah AWS>

[scaling demo]
scaledown_idletime = 5              # optional, defaults to 10 minutes

[cluster multi-queue-special]
key_name = < Your key name >
base_os = alinux2                   # optional, defaults to alinux2
scheduler = slurm
master_instance_type = c5.xlarge    # optional, defaults to t2.micro
vpc_settings = <Your VPC section>
scaling_settings = demo             # optional, defaults to no custom scaling settings
queue_settings = efa,gpu

[cluster multi-queue]
key_name = <Your SSH key name>
base_os = alinux2                   # optional, defaults to alinux2
scheduler = slurm
master_instance_type = c5.xlarge    # optional, defaults to t2.micro
vpc_settings = <Your VPC section>
scaling_settings = demo
queue_settings = spot,ondemand

[queue spot]
compute_resource_settings = spot_i1,spot_i2
compute_type = spot                 # optional, defaults to ondemand

[compute_resource spot_i1]
instance_type = c5.xlarge
min_count = 0                       # optional, defaults to 0
max_count = 10                      # optional, defaults to 10

[compute_resource spot_i2]
instance_type = t2.micro
min_count = 1
initial_count = 2

[queue ondemand]
compute_resource_settings = ondemand_i1
disable_hyperthreading = true       # optional, defaults to false

[compute_resource ondemand_i1]
instance_type = c5.2xlarge
```

### Membuat cluster Anda
<a name="tutorial-mqm-creating-cluster"></a>

Bagian ini merinci cara membuat cluster mode antrian ganda.

Pertama, beri nama cluster Anda`multi-queue-hello-world`, dan buat cluster sesuai dengan bagian `multi-queue` cluster yang ditentukan di bagian sebelumnya.

```
$ pcluster create multi-queue-hello-world -t multi-queue
```

Untuk informasi selengkapnya tentang `pcluster create`, lihat [`pcluster create`](pluster.create.md).

Ketika cluster dibuat, output berikut ditampilkan:

```
Beginning cluster creation for cluster: multi-queue-hello-world
Creating stack named: parallelcluster-multi-queue-hello-world
Status: parallelcluster-multi-queue-hello-world - CREATE_COMPLETE
MasterPublicIP: 3.130.xxx.xx
ClusterUser: ec2-user
MasterPrivateIP: 172.31.xx.xx
```

Pesan tersebut `CREATE_COMPLETE` menunjukkan bahwa cluster berhasil dibuat. Output juga menyediakan alamat IP publik dan pribadi dari node kepala.

### Masuk ke node kepala Anda
<a name="tutorial-mqm-log-into-head-node"></a>

Gunakan file kunci SSH pribadi Anda untuk masuk ke node kepala Anda.

```
$ pcluster ssh multi-queue-hello-world -i ~/path/to/keyfile.pem
```

Untuk informasi selengkapnya tentang `pcluster ssh`, lihat [`pcluster ssh`](pcluster.ssh.md).

Setelah masuk, jalankan `sinfo` perintah untuk memverifikasi bahwa antrian penjadwal Anda sudah diatur dan dikonfigurasi.

Untuk informasi lebih lanjut tentang`sinfo`, lihat [sinfo](https://slurm.schedmd.com/sinfo.html) di *Slurm dokumentasi*.

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
spot*        up   infinite     18  idle~ spot-dy-c5xlarge-[1-10],spot-dy-t2micro-[2-9]
spot*        up   infinite      2   idle spot-dy-t2micro-1,spot-st-t2micro-1
```

Output menunjukkan bahwa Anda memiliki dua node `t2.micro` komputasi dalam `idle` status yang tersedia di cluster Anda.

**catatan**  
`spot-st-t2micro-1`adalah simpul `st` statis dengan namanya. Node ini selalu tersedia dan sesuai dengan konfigurasi cluster Anda. ``min_count` = 1`
`spot-dy-t2micro-1`adalah simpul dinamis `dy` dengan namanya. Node ini saat ini tersedia karena ``initial_count` - `min_count` = 1` sesuai dengan konfigurasi cluster Anda. Node ini turun setelah kebiasaan [`scaledown_idletime`](scaling-section.md#scaledown-idletime) Anda selama lima menit.

Node lain semuanya dalam keadaan hemat daya, ditunjukkan oleh `~` sufiks dalam keadaan simpul, tanpa EC2 instance yang mendukungnya. Antrian default ditetapkan oleh `*` akhiran setelah nama antreannya, begitu `spot` juga antrian pekerjaan default Anda.

### Menjalankan pekerjaan dalam beberapa mode antrian
<a name="tutorial-mqm-running-job-mqm"></a>

Selanjutnya, cobalah menjalankan pekerjaan untuk tidur sebentar. Pekerjaan itu nantinya akan menampilkan nama hostnya sendiri. Pastikan skrip ini dapat dijalankan oleh pengguna saat ini.

```
$ cat hellojob.sh
#!/bin/bash
sleep 30
echo "Hello World from $(hostname)"

$ chmod +x hellojob.sh
$ ls -l hellojob.sh
-rwxrwxr-x 1 ec2-user ec2-user 57 Sep 23 21:57 hellojob.sh
```

Kirim pekerjaan menggunakan `sbatch` perintah. Minta dua node untuk pekerjaan ini dengan `-N 2` opsi, dan verifikasi bahwa pekerjaan berhasil dikirim. Untuk informasi selengkapnya tentang `sbatch`, lihat [https://slurm.schedmd.com/sbatch.html](https://slurm.schedmd.com/sbatch.html)dalam dokumentasi *Slurm*.

```
$ sbatch -N 2 --wrap "srun hellojob.sh"
Submitted batch job 2
```

Anda dapat melihat antrian Anda dan memeriksa status pekerjaan dengan `squeue` perintah. Perhatikan bahwa, karena Anda tidak menentukan antrian tertentu, antrian default (`spot`) digunakan. Untuk informasi selengkapnya tentang `squeue`, lihat [https://slurm.schedmd.com/squeue.html](https://slurm.schedmd.com/squeue.html)di *Slurmdokumentasi*.

```
$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                 2      spot     wrap ec2-user  R       0:10      2 spot-dy-t2micro-1,spot-st-t2micro-1
```

Output menunjukkan bahwa pekerjaan saat ini dalam keadaan berjalan. Tunggu 30 detik hingga pekerjaan selesai, lalu jalankan `squeue` lagi.

```
$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
```

Sekarang pekerjaan dalam antrian telah selesai, cari file output `slurm-2.out` di direktori Anda saat ini.

```
$ cat slurm-2.out
Hello World from spot-dy-t2micro-1
Hello World from spot-st-t2micro-1
```

Outputnya juga menunjukkan bahwa pekerjaan kami berhasil berjalan di `spot-st-t2micro-2` node `spot-st-t2micro-1` dan.

Sekarang kirimkan pekerjaan yang sama dengan menentukan batasan untuk instance tertentu dengan perintah berikut.

```
$ sbatch -N 3 -p spot -C "[c5.xlarge*1&t2.micro*2]" --wrap "srun hellojob.sh"
Submitted batch job 3
```

Anda menggunakan parameter ini untuk`sbatch`.
+ `-N 3`— meminta tiga node
+ `-p spot`— mengirimkan pekerjaan ke `spot` antrian. Anda juga dapat mengirimkan pekerjaan ke `ondemand` antrian dengan menentukan`-p ondemand`.
+ `-C "[c5.xlarge*1&t2.micro*2]"`— menentukan kendala node spesifik untuk pekerjaan ini. Ini meminta satu (1) `c5.xlarge` node dan dua (2) `t2.micro` node untuk digunakan untuk pekerjaan ini.

Jalankan `sinfo` perintah untuk melihat node dan antrian. (Antrian dalam disebut AWS ParallelCluster partisi di Slurm.)

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
spot*        up   infinite      1   mix# spot-dy-c5xlarge-1
spot*        up   infinite     17  idle~ spot-dy-c5xlarge-[2-10],spot-dy-t2micro-[2-9]
spot*        up   infinite      2  alloc spot-dy-t2micro-1,spot-st-t2micro-1
```

Node menyala. Ini ditandai dengan `#` akhiran pada keadaan simpul. Jalankan squeue perintah untuk melihat informasi tentang pekerjaan di cluster.

```
$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                 3      spot     wrap ec2-user CF       0:04      3 spot-dy-c5xlarge-1,spot-dy-t2micro-1,spot-st-t2micro-1
```

Pekerjaan Anda ada di `CF` (CONFIGURING) state, menunggu instance untuk ditingkatkan dan bergabung dengan cluster.

Setelah sekitar tiga menit, node harus tersedia dan pekerjaan memasuki `R` (RUNNING) negara.

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
spot*        up   infinite     17  idle~ spot-dy-c5xlarge-[2-10],spot-dy-t2micro-[2-9]
spot*        up   infinite      1    mix spot-dy-c5xlarge-1
spot*        up   infinite      2  alloc spot-dy-t2micro-1,spot-st-t2micro-1
$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                 3      spot     wrap ec2-user  R       0:04      3 spot-dy-c5xlarge-1,spot-dy-t2micro-1,spot-st-t2micro-1
```

Pekerjaan selesai, dan ketiga node berada dalam `idle` keadaan.

```
$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
spot*        up   infinite     17  idle~ spot-dy-c5xlarge-[2-10],spot-dy-t2micro-[2-9]
spot*        up   infinite      3   idle spot-dy-c5xlarge-1,spot-dy-t2micro-1,spot-st-t2micro-1
```

Kemudian, setelah tidak ada pekerjaan yang tersisa dalam antrian, Anda dapat memeriksa `slurm-3.out` di direktori lokal Anda.

```
$ cat slurm-3.out 
Hello World from spot-dy-c5xlarge-1
Hello World from spot-st-t2micro-1
Hello World from spot-dy-t2micro-1
```

Output juga menunjukkan bahwa pekerjaan berjalan dengan sukses pada node yang sesuai.

Anda dapat mengamati proses penurunan skala. Dalam konfigurasi cluster Anda yang Anda tentukan [`scaledown_idletime`](scaling-section.md#scaledown-idletime) kustom 5 menit. Setelah lima menit dalam keadaan idle, node dinamis Anda `spot-dy-c5xlarge-1` dan `spot-dy-t2micro-1` secara otomatis menurunkan skala dan masuk ke `POWER_DOWN` mode. Perhatikan bahwa node statis `spot-st-t2micro-1` tidak menurunkan skala.

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
spot*        up   infinite      2  idle% spot-dy-c5xlarge-1,spot-dy-t2micro-1
spot*        up   infinite     17  idle~ spot-dy-c5xlarge-[2-10],spot-dy-t2micro-[2-9]
spot*        up   infinite      1   idle spot-st-t2micro-1
```

Dari kode di atas, Anda dapat melihatnya `spot-dy-c5xlarge-1` dan `spot-dy-t2micro-1` berada dalam `POWER_DOWN` mode. Ini ditunjukkan oleh `%` sufiks. Instance yang sesuai segera dihentikan, tetapi node tetap dalam `POWER_DOWN` status dan tidak tersedia untuk digunakan selama 120 detik (dua menit). Setelah waktu ini, node kembali hemat daya dan tersedia untuk digunakan lagi. Untuk informasi selengkapnya, lihat [Slurmpanduan untuk beberapa mode antrian](multiple-queue-mode-slurm-user-guide.md).

Ini harus menjadi keadaan akhir cluster:

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
ondemand     up   infinite     10  idle~ ondemand-dy-c52xlarge-[1-10]
spot*        up   infinite     19  idle~ spot-dy-c5xlarge-[1-10],spot-dy-t2micro-[1-9]
spot*        up   infinite      1   idle spot-st-t2micro-1
```

Setelah log off dari cluster, Anda dapat membersihkan dengan menjalankan`pcluster delete`. Untuk informasi lebih lanjut, tentang `pcluster list` dan`pcluster delete`, lihat [`pcluster list`](pcluster.list.md) dan[`pcluster delete`](pcluster.delete.md).

```
$ pcluster list
multi-queue CREATE_COMPLETE 2.11.9
$ pcluster delete multi-queue
Deleting: multi-queue
...
```

### Menjalankan pekerjaan di cluster dengan instans EFA dan GPU
<a name="tutorial-mqm-running-job-efa-gpu"></a>

Bagian tutorial ini merinci cara memodifikasi konfigurasi dan meluncurkan cluster dengan beberapa antrian yang berisi instance dengan jaringan EFA dan sumber daya GPU. Perhatikan bahwa instance yang digunakan dalam tutorial ini adalah instance dengan harga lebih tinggi.

**Periksa batas akun Anda untuk memastikan bahwa Anda berwenang untuk menggunakan instance ini sebelum melanjutkan dengan langkah-langkah yang diuraikan dalam tutorial ini.**

Ubah file konfigurasi dengan menggunakan yang berikut ini.

```
[global]
update_check = true
sanity_check = true
cluster_template = multi-queue-special

[aws]
aws_region_name = <Your Wilayah AWS>

[scaling demo]
scaledown_idletime = 5

[cluster multi-queue-special]
key_name = <Your SSH key name>
base_os = alinux2                   # optional, defaults to alinux2
scheduler = slurm
master_instance_type = c5.xlarge    # optional, defaults to t2.micro
vpc_settings = <Your VPC section>
scaling_settings = demo
queue_settings = efa,gpu

[queue gpu]
compute_resource_settings = gpu_i1
disable_hyperthreading = true       # optional, defaults to false

[compute_resource gpu_i1]
instance_type = g3.8xlarge

[queue efa]
compute_resource_settings = efa_i1
enable_efa = true
placement_group = DYNAMIC           # optional, defaults to no placement group settings

[compute_resource efa_i1]
instance_type = c5n.18xlarge
max_count = 5
```

Buat cluster

```
$ pcluster create multi-queue-special -t multi-queue-special
```

Setelah cluster dibuat, gunakan file kunci SSH pribadi Anda untuk masuk ke node kepala Anda.

```
$ pcluster ssh multi-queue-special -i ~/path/to/keyfile.pem
```

Ini harus menjadi keadaan awal cluster:

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
efa*         up   infinite      5  idle~ efa-dy-c5n18xlarge-[1-5]
gpu          up   infinite     10  idle~ gpu-dy-g38xlarge-[1-10]
```

Bagian ini menjelaskan cara mengirimkan beberapa pekerjaan untuk memeriksa apakah node memiliki sumber daya EFA atau GPU.

Pertama, tulis skrip pekerjaan. `efa_job.sh`akan tidur selama 30 detik. Setelah itu, cari EFA di output `lspci` perintah. `gpu_job.sh`akan tidur selama 30 detik. Setelah itu, jalankan `nvidia-smi` untuk menampilkan informasi GPU tentang node.

```
$ cat efa_job.sh
#!/bin/bash

sleep 30
lspci | grep "EFA"

$ cat gpu_job.sh
#!/bin/bash

sleep 30
nvidia-smi

$ chmod +x efa_job.sh
$ chmod +x gpu_job.sh
```

Kirim pekerjaan dengan`sbatch`,

```
$ sbatch -p efa --wrap "srun efa_job.sh"
Submitted batch job 2
$ sbatch -p gpu --wrap "srun gpu_job.sh" -G 1
Submitted batch job 3 
$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                 2       efa     wrap ec2-user CF       0:32      1 efa-dy-c5n18xlarge-1
                 3       gpu     wrap ec2-user CF       0:20      1 gpu-dy-g38xlarge-1
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
efa*         up   infinite      1   mix# efa-dy-c5n18xlarge-1
efa*         up   infinite      4  idle~ efa-dy-c5n18xlarge-[2-5]
gpu          up   infinite      1   mix# gpu-dy-g38xlarge-1
gpu          up   infinite      9  idle~ gpu-dy-g38xlarge-[2-10]
```

Setelah beberapa menit, Anda akan melihat node online dan pekerjaan berjalan.

```
[ec2-user@ip-172-31-15-251 ~]$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
efa*         up   infinite      4  idle~ efa-dy-c5n18xlarge-[2-5]
efa*         up   infinite      1    mix efa-dy-c5n18xlarge-1
gpu          up   infinite      9  idle~ gpu-dy-g38xlarge-[2-10]
gpu          up   infinite      1    mix gpu-dy-g38xlarge-1
[ec2-user@ip-172-31-15-251 ~]$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                 4       gpu     wrap ec2-user  R       0:06      1 gpu-dy-g38xlarge-1
                 5       efa     wrap ec2-user  R       0:01      1 efa-dy-c5n18xlarge-1
```

Setelah pekerjaan selesai, periksa outputnya. Dari output dalam `slurm-2.out` file, Anda dapat melihat bahwa EFA hadir pada `efa-dy-c5n18xlarge-1` node. Dari output dalam `slurm-3.out` file, Anda dapat melihat `nvidia-smi` output berisi informasi GPU untuk `gpu-dy-g38xlarge-1` node.

```
$ cat slurm-2.out
00:06.0 Ethernet controller: Amazon.com, Inc. Elastic Fabric Adapter (EFA)

$ cat slurm-3.out
Thu Oct  1 22:19:18 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.05    Driver Version: 450.51.05    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla M60           Off  | 00000000:00:1D.0 Off |                    0 |
| N/A   28C    P0    38W / 150W |      0MiB /  7618MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  Tesla M60           Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   36C    P0    37W / 150W |      0MiB /  7618MiB |     98%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
```

Anda dapat mengamati proses penurunan skala. Dalam konfigurasi cluster, Anda sebelumnya menetapkan kustom [`scaledown_idletime`](scaling-section.md#scaledown-idletime) lima menit. Akibatnya, setelah lima menit dalam keadaan idle, node dinamis Anda, `spot-dy-c5xlarge-1` dan`spot-dy-t2micro-1`, secara otomatis menurunkan skala dan masuk ke `POWER_DOWN` mode. Akhirnya, node memasuki mode hemat daya dan tersedia untuk digunakan lagi.

```
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
efa*         up   infinite      1  idle% efa-dy-c5n18xlarge-1
efa*         up   infinite      4  idle~ efa-dy-c5n18xlarge-[2-5]
gpu          up   infinite      1  idle% gpu-dy-g38xlarge-1
gpu          up   infinite      9  idle~ gpu-dy-g38xlarge-[2-10]  

# After 120 seconds
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
efa*         up   infinite      5  idle~ efa-dy-c5n18xlarge-[1-5]
gpu          up   infinite     10  idle~ gpu-dy-g38xlarge-[1-10]
```

Setelah log off dari cluster, Anda dapat membersihkan dengan menjalankan``pcluster delete` <cluster name>`.

```
$ pcluster list
multi-queue-special CREATE_COMPLETE 2.11.9
$ pcluster delete multi-queue-special
Deleting: multi-queue-special
...
```

 Untuk informasi selengkapnya, lihat [Slurmpanduan untuk beberapa mode antrian](multiple-queue-mode-slurm-user-guide.md).