Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kontrol status prosesor untuk EC2 AL2 instans Amazon Anda
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 EC2 instans Amazon yang menyediakan kemampuan sistem operasi untuk mengontrol status C dan status P prosesor, lihat Kontrol status prosesor untuk EC2 instans Amazon Anda di EC2 Panduan Pengguna Amazon.
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>).
Daftar Isi
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 10stress: 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.843.452.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.613.442.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 10stress: 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
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
-
Buka file
/etc/default/grubdengan editor pilihan Anda.[ec2-user ~]$sudo vim /etc/default/grub -
Edit baris
GRUB_CMDLINE_LINUX_DEFAULTdan tambahkan opsiintel_idle.max_cstate=1danprocessor.max_cstate=1untuk mengaturC1sebagai 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=4294967295intel_idle.max_cstate=1 processor.max_cstate=1" GRUB_TIMEOUT=0Opsi
intel_idle.max_cstate=1ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsiprocessor.max_cstate=1mengonfigurasi 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. -
Simpan file dan keluar dari editor Anda.
-
Jalankan perintah berikut untuk membangun ulang konfigurasi boot.
[ec2-user ~]$sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
Reboot instans Anda untuk mengaktifkan opsi kernel baru.
[ec2-user ~]$sudo reboot
Untuk membatasi status tidur yang lebih dalam di Amazon Linux AMI
-
Buka file
/boot/grub/grub.confdengan editor pilihan Anda.[ec2-user ~]$sudo vim /boot/grub/grub.conf -
Edit baris
kernelpada entri pertama dan tambahkan opsiintel_idle.max_cstate=1danprocessor.max_cstate=1untuk mengaturC1sebagai 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=ttyS0intel_idle.max_cstate=1 processor.max_cstate=1initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.imgOpsi
intel_idle.max_cstate=1ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsiprocessor.max_cstate=1mengonfigurasi 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. -
Simpan file dan keluar dari editor Anda.
-
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 10stress: 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.703.202.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.673.202.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
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
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 AL2
-
Buka file
/etc/default/grubdengan editor pilihan Anda.[ec2-user ~]$sudo vim /etc/default/grub -
Edit baris
GRUB_CMDLINE_LINUX_DEFAULTdan tambahkan opsiintel_idle.max_cstate=1danprocessor.max_cstate=1untuk mengaturC1sebagai 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=4294967295intel_idle.max_cstate=1 processor.max_cstate=1" GRUB_TIMEOUT=0Opsi
intel_idle.max_cstate=1ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsiprocessor.max_cstate=1mengonfigurasi 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. -
Simpan file dan keluar dari editor Anda.
-
Jalankan perintah berikut untuk membangun ulang konfigurasi boot.
[ec2-user ~]$grub2-mkconfig -o /boot/grub2/grub.cfg -
Reboot instans Anda untuk mengaktifkan opsi kernel baru.
[ec2-user ~]$sudo reboot -
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" -
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
-
Buka file
/boot/grub/grub.confdengan editor pilihan Anda.[ec2-user ~]$sudo vim /boot/grub/grub.conf -
Edit baris
kernelpada entri pertama dan tambahkan opsiintel_idle.max_cstate=1danprocessor.max_cstate=1untuk mengaturC1sebagai 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=ttyS0intel_idle.max_cstate=1 processor.max_cstate=1initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.imgOpsi
intel_idle.max_cstate=1ini mengonfigurasi batas C-state untuk instans berbasis Intel, dan opsiprocessor.max_cstate=1mengonfigurasi 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. -
Simpan file dan keluar dari editor Anda.
-
Reboot instans Anda untuk mengaktifkan opsi kernel baru.
[ec2-user ~]$sudo reboot -
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" -
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 10stress: 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.952.902.90 0 0.05 ... 1 1 28 99.922.902.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.