View a markdown version of this page

Kontrol status prosesor untuk instans Amazon EC2 AL2 Anda - Amazon Linux 2

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

C-states mengontrol tingkat tidur yang dapat dimasukkan inti saat menganggur. C-states diberi nomor dimulai dengan C0 (keadaan paling dangkal di mana inti benar-benar terjaga dan menjalankan instruksi) dan pergi ke C6 (keadaan idle terdalam di mana inti dimatikan).

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

Anda mungkin ingin mengubah P-state pengaturan C-state atau untuk meningkatkan konsistensi kinerja prosesor, mengurangi latensi, atau menyetel instans Anda untuk beban kerja tertentu. Default C-state dan P-state pengaturan memberikan kinerja maksimum, yang optimal untuk sebagian besar beban kerja. Namun, jika aplikasi Anda akan mendapat manfaat dari pengurangan latensi dengan mengorbankan frekuensi single atau dual-core yang lebih tinggi, atau dari kinerja yang konsisten pada frekuensi yang lebih rendah dibandingkan dengan frekuensi Turbo Boost yang meledak, pertimbangkan untuk bereksperimen dengan atau pengaturan yang tersedia untuk instance ini C-state . P-state

Untuk informasi tentang jenis instans Amazon EC2 yang menyediakan kemampuan bagi sistem operasi untuk mengontrol prosesor C-states dan P-states, lihat Kontrol status prosesor untuk instans Amazon EC2 Anda di Panduan Pengguna Amazon EC2.

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:

  • turbostatUtilitas untuk menampilkan frekuensi prosesor dan C-state informasi. 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 C-state informasi, sertakan --debug opsi dalam perintah (sudo turbostat --debug stress <options>).

Performa tertinggi dengan frekuensi Turbo Boost maksimum

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, vCPU 21 dan 28 berjalan pada frekuensi Turbo Boost maksimumnya karena inti lain telah memasuki status tidur C6 untuk menghemat daya dan menyediakan headroom untuk daya dan panas, untuk inti yang bekerja. vCPU 3 dan 10 (masing-masing berbagi prosesor inti dengan vCPU 21 dan 28) ada dalam status C1, menunggu instruksi.

Dalam contoh berikut, ke-18 inti secara aktif melakukan pekerjaan, jadi tidak ada headroom 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 ...

Kinerja tinggi dan latensi rendah dengan membatasi lebih dalam C-states

C-states mengontrol tingkat tidur yang mungkin masuk inti saat tidak aktif. Anda mungkin ingin mengontrol C-states untuk menyetel sistem Anda untuk latensi versus kinerja. 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 lebih dalam C-states, yang mengurangi latensi reaksi prosesor, tetapi pada gilirannya juga mengurangi ruang kepala yang tersedia untuk 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 pada AL2
  1. Buka file /etc/default/grub dengan editor pilihan Anda.

    [ec2-user ~]$ sudo vim /etc/default/grub
  2. Edit GRUB_CMDLINE_LINUX_DEFAULT baris dan tambahkan processor.max_cstate=1 opsi intel_idle.max_cstate=1 dan untuk ditetapkan C1 sebagai yang terdalam C-state untuk inti 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

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

  3. Simpan file dan keluar dari editor Anda.

  4. Jalankan perintah berikut untuk membangun ulang konfigurasi boot.

    [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  5. 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/boot/grub/grub.conf file dengan editor pilihan Anda.

    [ec2-user ~]$ sudo vim /boot/grub/grub.conf
  2. Edit kernel baris entri pertama dan tambahkan processor.max_cstate=1 opsi intel_idle.max_cstate=1 dan untuk ditetapkan C1 sebagai yang terdalam C-state untuk inti 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

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

  3. Simpan file dan keluar dari editor Anda.

  4. 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 vCPUs 19 dan 28 berjalan pada 3,2 GHz, dan core lainnya ada di, menunggu C1 C-state instruksi. Meskipun inti yang berfungsi tidak mencapai frekuensi Turbo Boost maksimumnya, inti yang tidak aktif akan jauh lebih cepat untuk menanggapi permintaan baru daripada yang lebih dalam. C6 C-state

Performa acuan dengan variabilitas terendah

Anda dapat mengurangi variabilitas frekuensi prosesor dengan P-states. P-states mengontrol kinerja yang diinginkan (dalam frekuensi CPU) dari 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.

Kontrol P-state driver idle CPU. 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 P1 P-state) untuk memberikan latensi rendah dan variabilitas kecepatan prosesor terendah untuk jenis beban kerja ini.

Untuk membatasi status tidur yang lebih dalam dan menonaktifkan Turbo Boost di AL2
  1. Buka file /etc/default/grub dengan editor pilihan Anda.

    [ec2-user ~]$ sudo vim /etc/default/grub
  2. Edit GRUB_CMDLINE_LINUX_DEFAULT baris dan tambahkan processor.max_cstate=1 opsi intel_idle.max_cstate=1 dan untuk ditetapkan C1 sebagai yang terdalam C-state untuk inti 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

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

  3. Simpan file dan keluar dari editor Anda.

  4. Jalankan perintah berikut untuk membangun ulang konfigurasi boot.

    [ec2-user ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
  5. Reboot instans Anda untuk mengaktifkan opsi kernel baru.

    [ec2-user ~]$ sudo reboot
  6. Bila Anda membutuhkan variabilitas kecepatan prosesor rendah yang P1 P-state disediakan, jalankan perintah berikut untuk menonaktifkan Turbo Boost.

    [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
  7. 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
  2. Edit kernel baris entri pertama dan tambahkan processor.max_cstate=1 opsi intel_idle.max_cstate=1 dan untuk ditetapkan C1 sebagai yang terdalam C-state untuk inti 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

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

  3. Simpan file dan keluar dari editor Anda.

  4. Reboot instans Anda untuk mengaktifkan opsi kernel baru.

    [ec2-user ~]$ sudo reboot
  5. Bila Anda membutuhkan variabilitas kecepatan prosesor rendah yang P1 P-state disediakan, jalankan perintah berikut untuk menonaktifkan Turbo Boost.

    [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
  6. 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 instans c4.8xlarge dengan dua vCPU yang secara aktif melakukan pekerjaan pada frekuensi inti acuan, 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 vCPU 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 di, siap menerima instruksi. C1 C-state