View a markdown version of this page

Menyetel instans EC2 Anda untuk kinerja - AWS Ground Station

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

Menyetel instans EC2 Anda untuk kinerja

catatan

Jika Anda menyediakan sumber daya AWS menggunakan CloudFormation templat, penyetelan ini akan 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

Menyetel interupsi perangkat keras dan menerima antrian - berdampak pada CPU dan jaringan

Bagian ini mengonfigurasi penggunaan inti CPU systemd, SMP IRQ, Receive Packet Steering (RPS) dan Receive Flow Steering (RFS). Lihat Lampiran: Parameter yang disarankan untuk lagu interrupt/RPS sekumpulan 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 berjalan untuk diterapkan 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 diperlukan tindakan.

  1. Pin systemd memproses jauh dari inti CPU agen.

  2. Permintaan interupsi perangkat keras rute jauh dari inti CPU agen.

  3. Konfigurasikan RPS untuk mencegah antrian perangkat keras dari kartu antarmuka jaringan tunggal menjadi hambatan dalam lalu lintas jaringan.

  4. Konfigurasikan RFS untuk meningkatkan hit rate cache CPU dan dengan demikian mengurangi latensi jaringan.

set_irq_affinity.shSkrip yang disediakan oleh RPM mengkonfigurasi 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_list dengan core yang dicadangkan untuk kernel dan OS - biasanya yang pertama dan kedua bersama dengan pasangan inti hyper-threaded. Ini seharusnya tidak tumpang tindih dengan inti yang dipilih di atas. (Contoh: '0,1,48,49' untuk instance 96-CPU hyper-threaded).

  • rps_core_maskadalah bit mask 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.

  • 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

Penyatuan interupsi Tune Rx - berdampak pada jaringan

Penggabungan interupsi membantu mencegah banjir 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 interface dengan antarmuka jaringan (adaptor ethernet) yang dikonfigurasi untuk menerima data. Biasanya, ini eth0 karena itulah antarmuka jaringan default yang ditetapkan untuk instans EC2.

Penyangga cincin Tune Rx - berdampak pada jaringan

Tingkatkan jumlah entri dering untuk buffer cincin Rx untuk mencegah penurunan paket atau overrun selama koneksi pecah. 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 interface dengan antarmuka jaringan (adaptor ethernet) yang dikonfigurasi untuk menerima data. Biasanya, ini eth0 karena itulah antarmuka jaringan default yang ditetapkan untuk instans EC2.

  • Jika menyiapkan instance c6i keluarga, perintah perlu dimodifikasi untuk mengatur buffer ring ke8192, bukan. 16384

Atur parameter boot kernel (penamaan CPU C-State dan antarmuka) - berdampak pada CPU dan jaringan

Parameter boot kernel ini mencegah pemalasan CPU dengan pengaturanintel_idle.max_cstate=1 processor.max_cstate=1 max_cstate=1. Pemalasan CPU dapat menyebabkan paket hilang pada awal kontak. Parameter juga termasuknet.ifnames=0 biosdevname=0, yang mengubah nama antarmuka jaringan penerima menjadieth0. Seperti langkah-langkah penyetelan lainnya di chapter ini, parameter ini berlaku pada reboot yang dijelaskan diBoot ulang. Anda dapat menerapkannya dalam urutan apa pun relatif terhadap bagian lainnya.

Gunakan grubby untuk mengatur argumen kernel. Ini berfungsi pada 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

net.ifnames=0Argumen mengganti nama antarmuka jaringan untuk 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 menyimpan 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 panduan ini menggunakaneth0.

Port masuk cadangan - berdampak pada jaringan

Cadangan semua port dalam rentang port alamat ingress 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 diterapkan.

sudo reboot

Bagian ini menentukan nilai parameter yang disarankan untuk digunakan di bagian tuning Tune Hardware Interrupts and Receive Queues - Dampak CPU dan Jaringan.

Rangkaian Tipe Instans $ {interrupt_core_list} $ {rps_core_mask}

c7i

  • c7i.24xlarge

  • c7i.12xlarge

  • 0,1,48,49

  • 0,1,24,25

  • ffffffff, ffffffff, ffffffff

  • ffff, ffffffff

c6i

  • c6i.32xlarge

  • 0,1,64,65

  • ffffffff, ffffffff, ffffffff, ffffffff

c5

  • c5.24xlarge

  • c5.18xlarge

  • c5.12xlarge

  • 0,1,48,49

  • 0,1,36,37

  • 0,1,24,25

  • ffffffff, ffffffff, ffffffff

  • ff, ffffffff, ffffffff

  • ffff, ffffffff

c5n

  • c5n.metal

  • c5n.18xlarge

  • 0,1,36,37

  • 0,1,36,37

  • ff, ffffffff, ffffffff

  • ff, ffffffff, ffffffff

m5

  • m5.24xlarge

  • m5.12xlarge

  • 0,1,48,49

  • 0,1,24,25

  • ffffffff, ffffffff, ffffffff

  • ffff, ffffffff

r5

  • r5.metal

  • r5.24xlarge

  • 0,1,48,49

  • 0,1,48,49

  • ffffffff, ffffffff, ffffffff

  • ffffffff, ffffffff, ffffffff

r5n

  • r5n.metal

  • r5n.24xlarge

  • 0,1,48,49

  • 0,1,48,49

  • ffffffff, ffffffff, ffffffff

  • ffffffff, ffffffff, ffffffff

g4dn

  • g4dn.metal

  • g4dn.16xlarge

  • g4dn.12xlarge

  • 0,1,48,49

  • 0,1,32,33

  • 0,1,24,25

  • ffffffff, ffffffff, ffffffff

  • ffffffff, ffffffff

  • ffff, ffffffff

p4d

  • p4d.24xlarge

  • 0,1,48,49

  • ffffffff, ffffffff, ffffffff

p3dn

  • p3dn.24xlarge

  • 0,1,48,49

  • ffffffff, ffffffff, ffffffff