View a markdown version of this page

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 terbaik Amazon EC2

Ikuti praktik terbaik EC2 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 mengatur ulang paket pada soket UDP jika proses yang sesuai tidak disematkan ke inti tertentu. Setiap thread yang mengirim atau menerima data UDP harus menyematkan dirinya ke inti tertentu selama durasi transmisi data.

AWS Ground Station daftar awalan terkelola

Disarankan untuk menggunakan daftar com.amazonaws.global.groundstation AWS-managed awalan saat menentukan aturan jaringan untuk memungkinkan komunikasi dari Antena. Lihat Bek erja dengan Daftar Awalan Terkelola AWS untuk informasi selengkapnya tentang Daftar Awalan Terkelola AWS.

Batasan kontak tunggal

AWS Ground Station Agent 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 ARN DFEG yang berbeda, itu akan gagal untuk mendaftar.

Menjalankan layanan dan proses bersama AWS Ground Station Agen

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

Inti yang harus dihindari:

Sebagai contoh menggunakan instance c5.24xlarge

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 inti berikut:

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

Layanan afinitas (systemd)

Layanan yang baru diluncurkan akan secara otomatis menyesuaikan dengan yang interrupt_core_list disebutkan sebelumnya. Jika kasus penggunaan layanan yang Anda luncurkan memerlukan core tambahan, atau membutuhkan core yang tidak terlalu 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 core default dari perintah di atas ...bin/set_irq_affinity.sh <using the cores here> ...

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

systemctl show -p FragmentPath <service name>

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

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

Simpan file dan mulai ulang 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 kebijakan Afinitas CPU dan NUMA menggunakan system d.

Proses afinisasi (skrip)

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

Untuk menghindari konflik inti untuk 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 ID Proses (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