Praktik terbaik - AWS Ground Station

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

Praktik terbaik

Praktik EC2 terbaik Amazon

Ikuti praktik EC2 terbaik saat ini dan pastikan ketersediaan penyimpanan data yang memadai.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-best-practices.html

Penjadwal Linux

Penjadwal Linux dapat memesan ulang paket pada UDP soket jika proses yang sesuai tidak disematkan ke inti tertentu. Setiap thread yang mengirim atau menerima UDP data harus menyematkan dirinya ke inti tertentu selama durasi transmisi data.

AWS Ground Station daftar awalan terkelola

Disarankan untuk menggunakan daftar awalan yang com.amazonaws.global.groundstation AWS dikelola saat menentukan aturan jaringan untuk memungkinkan komunikasi dari Antena. Lihat Bekerja dengan Daftar Awalan AWS Terkelola untuk informasi selengkapnya tentang Daftar Awalan AWS Terkelola.

Batasan kontak tunggal

Agen AWS Ground Station mendukung beberapa aliran per kontak, tetapi hanya mendukung satu kontak pada satu waktu. Untuk mencegah masalah penjadwalan, jangan bagikan instance di beberapa grup titik akhir aliran data. Jika konfigurasi agen tunggal dikaitkan dengan beberapa yang berbeda DFEGARNs, itu akan gagal untuk mendaftar.

Menjalankan layanan dan proses bersama AWS Ground Station Agen

Saat meluncurkan layanan dan proses pada EC2 Instance yang sama dengan AWS Ground Station Agen, penting untuk mengikatnya agar vCPUs tidak digunakan oleh kernel AWS Ground Station Agen dan Linux karena ini dapat menyebabkan kemacetan dan bahkan kehilangan data selama kontak. Konsep pengikatan ke spesifik vCPUs ini dikenal sebagai afinitas.

Inti yang harus dihindari:

Sebagai contoh menggunakan c5.24xlarge instance

Jika Anda menentukan

"agentCpuCores": [24,25,26,27,72,73,74,75]"

dan berlari

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

kemudian hindari core berikut:

0,1,24,25,26,27,48,49,72,73,74,75

Layanan afinisasi (systemd)

Layanan yang baru diluncurkan akan secara otomatis berhubungan dengan yang interrupt_core_list disebutkan sebelumnya. Jika kasus penggunaan layanan yang Anda luncurkan memerlukan inti tambahan, atau membutuhkan inti yang kurang padat, ikuti bagian ini.

Periksa afinitas layanan Anda saat ini dikonfigurasi dengan perintah:

systemctl show --property CPUAffinity <service name>

Jika Anda melihat nilai kosong sepertiCPUAffinity=, itu berarti kemungkinan akan menggunakan inti default dari perintah di atas ...bin/set_irq_affinity.sh <using the cores here> ...

Untuk mengganti dan menyetel afinitas tertentu, temukan lokasi file layanan dengan menjalankan:

systemctl show -p FragmentPath <service name>

Buka dan modifikasi file (menggunakanvi,nano, dll.) Dan letakkan CPUAffinity=<core list> di [Service] bagian seperti:

[Unit] ... [Service] ... CPUAffinity=2,3 [Install] ...

Simpan file dan restart layanan untuk menerapkan afinitas dengan:

systemctl daemon-reload systemctl restart <service name> # Additionally confirm by re-running systemctl show --property CPUAffinity <service name>

Untuk informasi lebih lanjut kunjungi: Red Hat Enterprise Linux 8 - Mengelola, memantau, dan memperbarui kernel - Bab 27. Mengkonfigurasi CPU Afinitas dan NUMA kebijakan menggunakan systemd.

Proses afinisasi (skrip)

Sangat disarankan untuk skrip dan proses yang baru diluncurkan untuk dikaitkan secara manual karena perilaku Linux default akan memungkinkan mereka untuk menggunakan inti apa pun pada mesin.

Untuk menghindari konflik inti untuk setiap proses yang berjalan (seperti python, skrip bash, dll.), Luncurkan proses dengan:

taskset -c <core list> <command> # Example: taskset -c 8 ./bashScript.sh

Jika proses sudah berjalan, gunakan perintah sepertipidof,top, atau ps untuk menemukan Process ID (PID) dari proses tertentu. Dengan PID Anda dapat melihat afinitas saat ini dengan:

taskset -p <pid>

dan dapat memodifikasinya dengan:

taskset -p <core mask> <pid> # Example: taskset -p c 32392 (which sets it to cores 0xc -> 0b1100 -> cores 2,3)

Untuk informasi lebih lanjut tentang taskset lihat taskset - Halaman manual Linux