

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

# Kontrol status prosesor untuk instans Amazon EC2 AL2 Anda
<a name="processor_state_control"></a>

Status-C mengontrol tingkat tidur yang dapat dimasuki inti saat idle. Status-C diberi nomor mulai dengan C0 (status paling dangkal di mana inti benar-benar terjaga dan menjalankan instruksi) hingga C6 (keadaan idle terdalam di mana inti dimatikan).

P-state mengontrol performa yang diinginkan (dalam frekuensi CPU) dari sebuah inti. Status-P diberi nomor mulai dari P0 (pengaturan performa tertinggi di mana inti diizinkan untuk menggunakan Intel Turbo Boost Technology untuk meningkatkan frekuensi jika memungkinkan), dan mereka beralih dari P1 (status-P yang meminta frekuensi acuan maksimum) ke P15 (frekuensi serendah mungkin).

Anda mungkin harus mengubah pengaturan status-C atau status-P untuk meningkatkan konsistensi performa prosesor, mengurangi latensi, atau menyelaraskan instans Anda dengan beban kerja tertentu. Pengaturan status-C dan status-P default memberikan kinerja maksimum, yang optimal untuk sebagian besar beban kerja. Namun, jika aplikasi Anda akan mendapatkan keuntungan dari pengurangan latensi dengan biaya frekuensi ssatu inti atau dua inti yang lebih tinggi, atau dari performa yang konsisten pada frekuensi yang lebih rendah, dibandingkan dengan frekuensi Turbo Boost yang melonjak, pertimbangkan untuk bereksperimen dengan pengaturan status-C atau status-P yang tersedia untuk instans ini.

*Untuk informasi tentang jenis instans Amazon EC2 yang menyediakan kemampuan sistem operasi untuk mengontrol status C dan status P prosesor, lihat [Kontrol status prosesor untuk instans Amazon EC2 Anda di Panduan Pengguna Amazon EC2](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/processor_state_control.html).*

Bagian berikut menjelaskan konfigurasi status prosesor yang berbeda dan cara memantau efek konfigurasi Anda. Prosedur ini ditulis untuk, dan berlaku untuk Amazon Linux; Namun, mereka mungkin juga bekerja untuk distribusi Linux lainnya dengan kernel Linux versi 3.9 atau yang lebih baru.

**catatan**  
Contoh di halaman ini menggunakan yang berikut:  
Utilitas **turbostat** untuk menampilkan frekuensi prosesor dan informasi status-C. Utilitas **turbostat** tersedia di Amazon Linux secara default.
Perintah **stress** untuk menyimulasikan beban kerja. Untuk menginstal **stress**, pertama aktifkan repositori EPEL dengan menjalankan **sudo amazon-linux-extras install epel**, dan kemudian jalankan **sudo yum install -y stress**.
Jika output tidak menampilkan informasi status-C, sertakan opsi **--debug** dalam perintah (**sudo turbostat --debug stress *<options>***).

**Topics**
+ [Performa tertinggi dengan frekuensi Turbo Boost maksimum](#turbo-perf)
+ [Performa tinggi dan latensi rendah dengan membatasi status C yang lebih dalam](#c-states)
+ [Performa acuan dengan variabilitas terendah](#baseline-perf)

## Performa tertinggi dengan frekuensi Turbo Boost maksimum
<a name="turbo-perf"></a>

Ini adalah konfigurasi kontrol status prosesor default untuk AMI Amazon Linux, dan direkomendasikan untuk sebagian besar beban kerja. Konfigurasi ini memberikan kinerja tertinggi dengan variabilitas yang lebih rendah. Mengizinkan inti yang tidak aktif untuk memasuki status tidur yang lebih dalam akan memberikan headroom panas yang diperlukan agar proses inti tunggal atau ganda untuk dapat mencapai potensi Turbo Boost maksimumnya.

Contoh berikut menunjukkan instans `c4.8xlarge` dengan dua inti yang secara aktif melakukan pekerjaan mencapai frekuensi Turbo Boost prosesor maksimumnya.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [30680] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30680] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.54 3.44 2.90   0   9.18   0.00  85.28   0.00   0.00   0.00   0.00   0.00  94.04 32.70 54.18  0.00
 0   0   0   0.12 3.26 2.90   0   3.61   0.00  96.27   0.00   0.00   0.00   0.00   0.00  48.12 18.88 26.02  0.00
 0   0  18   0.12 3.26 2.90   0   3.61
 0   1   1   0.12 3.26 2.90   0   4.11   0.00  95.77   0.00
 0   1  19   0.13 3.27 2.90   0   4.11
 0   2   2   0.13 3.28 2.90   0   4.45   0.00  95.42   0.00
 0   2  20   0.11 3.27 2.90   0   4.47
 0   3   3   0.05 3.42 2.90   0  99.91   0.00   0.05   0.00
 0   3  21  97.84 3.45 2.90   0   2.11
...
 1   1  10   0.06 3.33 2.90   0  99.88   0.01   0.06   0.00
 1   1  28  97.61 3.44 2.90   0   2.32
...
10.002556 sec
```

Dalam contoh ini, v CPUs 21 dan 28 berjalan pada frekuensi Turbo Boost maksimumnya karena core lain telah memasuki kondisi `C6` tidur untuk menghemat daya dan menyediakan daya dan ruang kepala termal untuk inti kerja. v CPUs 3 dan 10 (masing-masing berbagi inti prosesor dengan v CPUs 21 dan 28) berada dalam `C1` keadaan, menunggu instruksi.

Dalam contoh berikut, semua 18 core secara aktif melakukan pekerjaan, sehingga tidak ada ruang kepala untuk Turbo Boost maksimum, tetapi semuanya berjalan pada kecepatan “all core Turbo Boost” 3,2. GHz

```
[ec2-user ~]$ sudo turbostat stress -c 36 -t 10
stress: info: [30685] dispatching hogs: 36 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30685] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
            99.27 3.20 2.90   0   0.26   0.00   0.47   0.00   0.00   0.00   0.00   0.00 228.59 31.33 199.26  0.00
 0   0   0  99.08 3.20 2.90   0   0.27   0.01   0.64   0.00   0.00   0.00   0.00   0.00 114.69 18.55 99.32  0.00
 0   0  18  98.74 3.20 2.90   0   0.62
 0   1   1  99.14 3.20 2.90   0   0.09   0.00   0.76   0.00
 0   1  19  98.75 3.20 2.90   0   0.49
 0   2   2  99.07 3.20 2.90   0   0.10   0.02   0.81   0.00
 0   2  20  98.73 3.20 2.90   0   0.44
 0   3   3  99.02 3.20 2.90   0   0.24   0.00   0.74   0.00
 0   3  21  99.13 3.20 2.90   0   0.13
 0   4   4  99.26 3.20 2.90   0   0.09   0.00   0.65   0.00
 0   4  22  98.68 3.20 2.90   0   0.67
 0   5   5  99.19 3.20 2.90   0   0.08   0.00   0.73   0.00
 0   5  23  98.58 3.20 2.90   0   0.69
 0   6   6  99.01 3.20 2.90   0   0.11   0.00   0.89   0.00
 0   6  24  98.72 3.20 2.90   0   0.39
...
```

## Performa tinggi dan latensi rendah dengan membatasi status C yang lebih dalam
<a name="c-states"></a>

Status-C mengontrol tingkat tidur yang dapat dimasuki inti saat tidak aktif. Anda mungkin perlu mengontrol status-C untuk menyelaraskan sistem Anda untuk latensi versus performa. Menidurkan inti membutuhkan waktu, dan meskipun inti tidur memungkinkan lebih banyak ruang kepala untuk inti lain untuk meningkat ke frekuensi yang lebih tinggi, inti tidur tersebut membutuhkan waktu untuk bangun kembali dan melakukan pekerjaan. Misalnya, jika inti yang ditugaskan untuk menangani interupsi paket jaringan tertidur, mungkin ada penundaan dalam melayani interupsi tersebut. Anda dapat mengonfigurasi sistem agar tidak menggunakan status-C yang lebih dalam, yang mengurangi latensi reaksi prosesor, tetapi nantinya juga mengurangi headroom yang tersedia pada inti lain untuk Turbo Boost.

Skenario umum untuk menonaktifkan status tidur lebih dalam adalah aplikasi basis data Redis, yang menyimpan basis data dalam memori sistem untuk waktu respons kueri yang secepat mungkin.

**Untuk membatasi kondisi tidur yang lebih dalam AL2**

1. Buka file `/etc/default/grub` dengan editor pilihan Anda.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Edit baris `GRUB_CMDLINE_LINUX_DEFAULT` dan tambahkan opsi `intel_idle.max_cstate=1` dan `processor.max_cstate=1` untuk mengatur `C1` sebagai C-state terdalam untuk inti yang idle.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   Opsi `intel_idle.max_cstate=1` ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsi `processor.max_cstate=1` mengonfigurasi batas C-state untuk instans berbasis AMD. Anda bisa menambahkan kedua opsi ke konfigurasi Anda. Hal ini memungkinkan satu konfigurasi untuk mengatur perilaku yang diinginkan pada Intel dan AMD.

1. Simpan file dan keluar dari editor Anda.

1.  Jalankan perintah berikut untuk membangun ulang konfigurasi boot.

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Reboot instans Anda untuk mengaktifkan opsi kernel baru.

   ```
   [ec2-user ~]$ sudo reboot
   ```

**Untuk membatasi status tidur yang lebih dalam di Amazon Linux AMI**

1. Buka file `/boot/grub/grub.conf` dengan editor pilihan Anda.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Edit baris `kernel` pada entri pertama dan tambahkan opsi `intel_idle.max_cstate=1` dan `processor.max_cstate=1` untuk mengatur `C1` sebagai status-C terdalam untuk inti yang idle.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1  processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   Opsi `intel_idle.max_cstate=1` ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsi `processor.max_cstate=1` mengonfigurasi batas C-state untuk instans berbasis AMD. Anda bisa menambahkan kedua opsi ke konfigurasi Anda. Hal ini memungkinkan satu konfigurasi untuk mengatur perilaku yang diinginkan pada Intel dan AMD.

1. Simpan file dan keluar dari editor Anda.

1. Reboot instans Anda untuk mengaktifkan opsi kernel baru.

   ```
   [ec2-user ~]$ sudo reboot
   ```

Contoh berikut menunjukkan instans `c4.8xlarge` dengan dua inti yang secara aktif melakukan pekerjaan pada frekuensi inti "all core Turbo Boost".

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5322] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5322] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.56 3.20 2.90   0  94.44   0.00   0.00   0.00   0.00   0.00   0.00   0.00 131.90 31.11 199.47  0.00
 0   0   0   0.03 2.08 2.90   0  99.97   0.00   0.00   0.00   0.00   0.00   0.00   0.00  67.23 17.11 99.76  0.00
 0   0  18   0.01 1.93 2.90   0  99.99
 0   1   1   0.02 1.96 2.90   0  99.98   0.00   0.00   0.00
 0   1  19  99.70 3.20 2.90   0   0.30
...
 1   1  10   0.02 1.97 2.90   0  99.98   0.00   0.00   0.00
 1   1  28  99.67 3.20 2.90   0   0.33
 1   2  11   0.04 2.63 2.90   0  99.96   0.00   0.00   0.00
 1   2  29   0.02 2.11 2.90   0  99.98
...
```

Dalam contoh ini, core untuk v CPUs 19 dan 28 berjalan pada 3.2 GHz, dan core lainnya berada dalam `C1` keadaan C, menunggu instruksi. Meskipun inti yang bekerja tidak mencapai frekuensi Turbo Boost maksimumnya, inti yang tidak aktif akan jauh lebih cepat merespons permintaan baru daripada yang mereka lakukan di dalam C-state `C6`.

## Performa acuan dengan variabilitas terendah
<a name="baseline-perf"></a>

Anda dapat mengurangi variabilitas frekuensi prosesor dengan status-P. P-state mengontrol performa yang diinginkan (dalam frekuensi CPU) dari sebuah inti. Sebagian besar beban kerja bekerja lebih baik di P0, yang meminta Turbo Boost. Tetapi Anda mungkin harus menyelaraskan sistem Anda untuk mendapatkan performa yang konsisten daripada performa yang melonjak yang dapat terjadi ketika frekuensi Turbo Boost diaktifkan. 

Beban kerja Intel Advanced Vector Extensions (AVX atau AVX2) dapat bekerja dengan baik pada frekuensi yang lebih rendah, dan instruksi AVX dapat menggunakan lebih banyak daya. Menjalankan prosesor pada frekuensi yang lebih rendah, dengan menonaktifkan Turbo Boost, dapat mengurangi jumlah daya yang digunakan dan menjaga kecepatan lebih konsisten. Untuk informasi selengkapnya tentang mengoptimalkan konfigurasi instans Anda dan beban kerja untuk AVX, lihat [situs web Intel](https://www.intel.com/content/www/us/en/developer/articles/technical/the-intel-advanced-vector-extensions-512-feature-on-intel-xeon-scalable.html?wapkw=advanced%20vector%20extensions).

Driver idle CPU mengontrol status-P. Generasi CPU yang lebih baru memerlukan driver idle CPU yang diperbarui yang sesuai dengan tingkat kernel sebagai berikut:
+ Kernel Linux versi 6.1 dan lebih tinggi - Mendukung Intel Granite Rapids (misalnya, R8i)
+ Kernel Linux versi 5.10 dan lebih tinggi — Mendukung AMD Milan (misalnya, M6a)
+ Kernel Linux versi 5.6 dan lebih tinggi - Mendukung Intel Icelake (misalnya, M6i)

Untuk mendeteksi apakah kernel sistem yang sedang berjalan mengenali CPU, jalankan perintah berikut.

```
if [ -d /sys/devices/system/cpu/cpu0/cpuidle ]; then echo "C-state control enabled"; else echo "Kernel cpuidle driver does not recognize this CPU generation"; fi
```

Jika output dari perintah ini menunjukkan kurangnya dukungan, kami sarankan Anda memutakhirkan kernel.

Bagian ini menjelaskan cara membatasi status tidur yang lebih dalam dan menonaktifkan Turbo Boost (dengan meminta status-P `P1`) untuk memberikan latensi rendah dan variabilitas kecepatan prosesor terendah untuk tipe beban kerja ini.

**Untuk membatasi kondisi tidur yang lebih dalam dan menonaktifkan Turbo Boost aktif AL2**

1. Buka file `/etc/default/grub` dengan editor pilihan Anda.

   ```
   [ec2-user ~]$ sudo vim /etc/default/grub
   ```

1. Edit baris `GRUB_CMDLINE_LINUX_DEFAULT` dan tambahkan opsi `intel_idle.max_cstate=1` dan `processor.max_cstate=1` untuk mengatur `C1` sebagai C-state terdalam untuk inti yang idle.

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1"
   GRUB_TIMEOUT=0
   ```

   Opsi `intel_idle.max_cstate=1` ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsi `processor.max_cstate=1` mengonfigurasi batas C-state untuk instans berbasis AMD. Anda bisa menambahkan kedua opsi ke konfigurasi Anda. Hal ini memungkinkan satu konfigurasi untuk mengatur perilaku yang diinginkan pada Intel dan AMD.

1. Simpan file dan keluar dari editor Anda.

1.  Jalankan perintah berikut untuk membangun ulang konfigurasi boot.

   ```
   [ec2-user ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Reboot instans Anda untuk mengaktifkan opsi kernel baru.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Bila Anda membutuhkan variabilitas kecepatan prosesor rendah yang disediakan P-state `P1`, jalankan perintah berikut untuk menonaktifkan Turbo Boost.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Saat beban kerja Anda selesai, Anda dapat mengaktifkan kembali Turbo Boost dengan perintah berikut.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

**Untuk membatasi status tidur yang lebih dalam dan menonaktifkan Turbo Boost di Amazon Linux AMI**

1. Buka file `/boot/grub/grub.conf` dengan editor pilihan Anda.

   ```
   [ec2-user ~]$ sudo vim /boot/grub/grub.conf
   ```

1. Edit baris `kernel` pada entri pertama dan tambahkan opsi `intel_idle.max_cstate=1` dan `processor.max_cstate=1` untuk mengatur `C1` sebagai status-C terdalam untuk inti yang idle.

   ```
   # created by imagebuilder
   default=0
   timeout=1
   hiddenmenu
   
   title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
   root (hd0,0)
   kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1 processor.max_cstate=1
   initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
   ```

   Opsi `intel_idle.max_cstate=1` ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsi `processor.max_cstate=1` mengonfigurasi batas C-state untuk instans berbasis AMD. Anda bisa menambahkan kedua opsi ke konfigurasi Anda. Hal ini memungkinkan satu konfigurasi untuk mengatur perilaku yang diinginkan pada Intel dan AMD.

1. Simpan file dan keluar dari editor Anda.

1. Reboot instans Anda untuk mengaktifkan opsi kernel baru.

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. Bila Anda membutuhkan variabilitas kecepatan prosesor rendah yang disediakan P-state `P1`, jalankan perintah berikut untuk menonaktifkan Turbo Boost.

   ```
   [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

1. Saat beban kerja Anda selesai, Anda dapat mengaktifkan kembali Turbo Boost dengan perintah berikut.

   ```
   [ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
   ```

Contoh berikut menunjukkan `c4.8xlarge` instance dengan dua v CPUs secara aktif melakukan pekerjaan pada frekuensi inti dasar, tanpa Turbo Boost.

```
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5389] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5389] successful run completed in 10s
pk cor CPU    %c0  GHz  TSC SMI    %c1    %c3    %c6    %c7   %pc2   %pc3   %pc6   %pc7  Pkg_W RAM_W PKG_% RAM_%
             5.59 2.90 2.90   0  94.41   0.00   0.00   0.00   0.00   0.00   0.00   0.00 128.48 33.54 200.00  0.00
 0   0   0   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00   0.00   0.00   0.00   0.00  65.33 19.02 100.00  0.00
 0   0  18   0.04 2.90 2.90   0  99.96
 0   1   1   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   1  19   0.04 2.90 2.90   0  99.96
 0   2   2   0.04 2.90 2.90   0  99.96   0.00   0.00   0.00
 0   2  20   0.04 2.90 2.90   0  99.96
 0   3   3   0.05 2.90 2.90   0  99.95   0.00   0.00   0.00
 0   3  21  99.95 2.90 2.90   0   0.05
...
 1   1  28  99.92 2.90 2.90   0   0.08
 1   2  11   0.06 2.90 2.90   0  99.94   0.00   0.00   0.00
 1   2  29   0.05 2.90 2.90   0  99.95
```

Inti untuk v CPUs 21 dan 28 secara aktif melakukan pekerjaan pada kecepatan prosesor dasar 2,9 GHz, dan semua inti yang tidak aktif juga berjalan pada kecepatan dasar dalam keadaan `C1` C, siap menerima instruksi.