Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Setel instans EC2 Anda untuk kinerja
catatan
Jika Anda menyediakan sumber daya AWS menggunakan CloudFormation templat, penyetelan ini diterapkan secara otomatis. Jika Anda menggunakan AMI atau membuat instans EC2 secara manual maka penyetelan kinerja ini harus diterapkan untuk mencapai kinerja yang paling andal.
Ingatlah untuk me-reboot instance Anda setelah menerapkan penyetelan apa pun.
Topik
Setel interupsi perangkat keras dan terima antrian - berdampak pada CPU dan jaringan
Bagian ini mengonfigurasi penggunaan inti CPU dari systemd, SMP IRQ, Receive Packet Steering (RPS) dan Receive Flow Steering (RFS). Lihat Lampiran: Parameter yang disarankan untuk penyetel interrupt/RPS an untuk serangkaian pengaturan yang disarankan berdasarkan jenis instans yang Anda gunakan.
penting
Hanya Amazon Linux 2023: Instal dan aktifkan daemon cron sebelum melanjutkan.
sudo dnf install -y cronie sudo systemctl enable --now crond
Bagian ini dan dua yang mengikutinya menambahkan entri @reboot crontab, yang memerlukan daemon cron yang sedang berjalan untuk berlaku pada setiap boot. Di Amazon Linux 2023, daemon cron tidak diinstal secara default, jadi tanpa perintah di atas entri ini ditulis tetapi tidak pernah dijalankan. Di Amazon Linux 2, daemon cron sudah diinstal dan diaktifkan; tidak ada tindakan yang diperlukan.
-
Pin systemd memproses jauh dari inti CPU agen.
-
Rute permintaan interupsi perangkat keras menjauh dari inti CPU agen.
-
Konfigurasikan RPS untuk mencegah antrian perangkat keras dari kartu antarmuka jaringan tunggal menjadi hambatan dalam lalu lintas jaringan.
-
Konfigurasikan RFS untuk meningkatkan hit rate cache CPU dan dengan demikian mengurangi latensi jaringan.
set_irq_affinity.shSkrip yang disediakan oleh RPM mengonfigurasi semua hal di atas untuk Anda. Tambahkan ke crontab, sehingga diterapkan pada setiap boot:
echo "@reboot sudo /opt/aws/groundstation/bin/set_irq_affinity.sh '${interrupt_core_list}' '${rps_core_mask}' >> /var/log/user-data.log 2>&1" >>/var/spool/cron/root
-
Ganti
interrupt_core_listdengan core yang disediakan untuk kernel dan OS - biasanya yang pertama dan kedua bersama dengan pasangan inti hyper-thread. Ini seharusnya tidak tumpang tindih dengan inti yang dipilih di atas. (Contoh: '0,1,48,49' untuk instance 96-CPU hyper-thread). -
rps_core_maskadalah masker bit heksadesimal yang menentukan CPU mana yang harus memproses paket masuk, dengan setiap digit mewakili 4 CPU. Itu juga harus dipisahkan koma setiap 8 karakter mulai dari kanan. Disarankan untuk mengizinkan semua CPU dan membiarkan caching menangani penyeimbangan.-
Untuk melihat daftar parameter yang direkomendasikan untuk setiap jenis instans, lihatLampiran: Parameter yang disarankan untuk penyetel interrupt/RPS an.
-
-
Contoh untuk instance 96-CPU:
echo "@reboot sudo /opt/aws/groundstation/bin/set_irq_affinity.sh '0,1,48,49' 'ffffffff,ffffffff,ffffffff' >> /var/log/user-data.log 2>&1" >>/var/spool/cron/root
Penggabungan interupsi Tune Rx - berdampak pada jaringan
Interupsi koalescing membantu mencegah membanjiri sistem host dengan terlalu banyak interupsi dan membantu meningkatkan throughput jaringan. Dengan konfigurasi ini, paket dikumpulkan dan satu interupsi tunggal dihasilkan setiap 128 mikrodetik. Tambahkan ke crontab, sehingga diterapkan pada setiap boot:
echo "@reboot sudo ethtool -C ${interface} rx-usecs 128 tx-usecs 128 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
-
Ganti
interfacedengan antarmuka jaringan (adaptor ethernet) yang dikonfigurasi untuk menerima data. Biasanya, inieth0karena itu adalah antarmuka jaringan default yang ditetapkan untuk instance EC2.
Tune Rx ring buffer - berdampak pada jaringan
Tingkatkan jumlah entri cincin untuk buffer cincin Rx untuk mencegah paket jatuh atau kelebihan selama koneksi bursty. Tambahkan ke crontab, sehingga diatur dengan benar pada setiap boot:
echo "@reboot sudo ethtool -G ${interface} rx 16384 >>/var/log/user-data.log 2>&1" >>/var/spool/cron/root
-
Ganti
interfacedengan antarmuka jaringan (adaptor ethernet) yang dikonfigurasi untuk menerima data. Biasanya, inieth0karena itu adalah antarmuka jaringan default yang ditetapkan untuk instance EC2. -
Jika menyiapkan instance
c6ikeluarga, perintah perlu dimodifikasi untuk mengatur buffer cincin ke8192, bukan16384.
Mengatur parameter boot kernel (penamaan CPU C-State dan antarmuka) - berdampak pada CPU dan jaringan
Parameter boot kernel ini mencegah idling CPU dengan pengaturanintel_idle.max_cstate=1 processor.max_cstate=1 max_cstate=1. Idle CPU dapat menyebabkan paket hilang pada awal kontak. Parameter juga termasuknet.ifnames=0 biosdevname=0, yang mengganti nama antarmuka jaringan penerima menjadieth0. Seperti langkah-langkah penyetelan lainnya dalam babak ini, parameter ini berlaku pada reboot yang dijelaskan diBoot ulang. Anda dapat menerapkannya dalam urutan apa pun relatif terhadap bagian lain.
Gunakan grubby untuk mengatur argumen kernel. Ini berfungsi di Amazon Linux 2023 (UEFI) dan Amazon Linux 2 karena grubby mengelola konfigurasi bootloader langsung pada keduanya.
sudo grubby --update-kernel=ALL --args="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1 max_cstate=1"
catatan
Ar net.ifnames=0 gumen mengganti nama antarmuka jaringan ke eth0 pada boot berikutnya. Bagian penyetelan lainnya dan target konfigurasi ageneth0, jadi menerapkan parameter ini dan me-reboot adalah jalur yang disarankan. Jika Anda memilih untuk tidak menerapkan parameter ini, antarmuka mempertahankan nama defaultnya (misalnya, ens5 di Amazon Linux 2023). Dalam hal ini, ganti nama antarmuka yang sebenarnya — ditemukan dengan menjalankan ip link show — di mana pun yang digunakan panduan inieth0.
Cadangan port masuk - berdampak pada jaringan
Cadangkan semua port dalam rentang port alamat masuk Anda AwsGroundStationAgentEndpoint untuk mencegah konflik dengan penggunaan kernel. Konflik penggunaan port akan menyebabkan kegagalan kontak dan pengiriman data.
echo "net.ipv4.ip_local_reserved_ports=${port_range_min}-${port_range_max}" >> /etc/sysctl.conf
-
Contoh:
echo "net.ipv4.ip_local_reserved_ports=42000-43500" >> /etc/sysctl.conf.
Boot ulang
Setelah semua penyetelan berhasil diterapkan, reboot instance agar penyetelan berlaku.
sudo reboot
Lampiran: Parameter yang disarankan untuk penyetel interrupt/RPS an
Bagian ini menentukan nilai parameter yang disarankan untuk digunakan di bagian penyetelan Menyetel Gangguan Perangkat Keras dan Antrian Terima - Dampak CPU dan Jaringan.
| Rangkaian | Tipe Instans | $ {interrup_core_list} | $ {rps_core_topeng} |
|---|---|---|---|
|
C7i |
|
|
|
|
C6i |
|
|
|
|
c5 |
|
|
|
|
C5n |
|
|
|
|
m5 |
|
|
|
|
r5 |
|
|
|
|
r5n |
|
|
|
|
g4dn |
|
|
|
|
p4d |
|
|
|
|
p3dn |
|
|
|