Meningkatkan latensi jaringan untuk instance berbasis EC2 Linux - Amazon Elastic Compute Cloud

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

Meningkatkan latensi jaringan untuk instance berbasis EC2 Linux

Latensi jaringan adalah jumlah waktu yang dibutuhkan untuk paket data untuk melakukan perjalanan dari sumbernya ke tujuannya. Aplikasi yang mengirim data ke seluruh jaringan bergantung pada respons tepat waktu untuk memberikan pengalaman pengguna yang positif. Latensi jaringan yang tinggi dapat menyebabkan berbagai masalah, seperti berikut ini:

  • Waktu muat lambat untuk halaman web

  • Kelambatan streaming video

  • Kesulitan mengakses sumber daya online

Bagian ini menguraikan langkah-langkah yang dapat Anda ambil untuk meningkatkan latensi jaringan pada EC2 instans Amazon yang berjalan di Linux. Untuk mencapai latensi optimal, ikuti langkah-langkah berikut untuk mengonfigurasi pengaturan instans, kernel, dan ENA driver Anda. Untuk panduan konfigurasi tambahan, lihat Panduan Praktik Terbaik dan Pengoptimalan Kinerja Driver ENA LinuxGitHub.

catatan

Langkah dan pengaturan mungkin sedikit berbeda, tergantung pada perangkat keras jaringan spesifik Anda, dari mana Anda meluncurkan instans, dan kasus penggunaan aplikasi Anda. AMI Sebelum Anda membuat perubahan apa pun, uji dan pantau performa jaringan Anda secara menyeluruh untuk memastikan bahwa Anda mendapatkan hasil yang diinginkan.

Kurangi jumlah hop jaringan untuk paket data

Setiap lompatan yang diambil paket data saat bergerak dari router ke router meningkatkan latensi jaringan. Biasanya, lalu lintas harus mengambil beberapa lompatan untuk mencapai tujuan Anda. Ada dua cara untuk mengurangi hop jaringan untuk EC2 instans Amazon Anda, sebagai berikut:

  • Grup penempatan klaster — Saat Anda menentukan grup penempatan klaster, Amazon EC2 meluncurkan instance yang berdekatan satu sama lain, secara fisik dalam Availability Zone (AZ) yang sama dengan kemasan yang lebih ketat. Kedekatan fisik instans dalam grup memungkinkan mereka untuk memanfaatkan konektivitas berkecepatan tinggi, menghasilkan latensi rendah dan throughput aliran tunggal yang tinggi.

  • Host Khusus — Host Khusus adalah server fisik yang didedikasikan untuk Anda gunakan. Dengan Host Khusus, Anda dapat meluncurkan instans Anda untuk berjalan di server fisik yang sama. Komunikasi antar instans yang berjalan pada Host Khusus yang sama dapat terjadi tanpa lompatan jaringan tambahan.

Bagaimana konfigurasi kernel Linux memengaruhi latensi

Konfigurasi kernel Linux dapat meningkatkan atau mengurangi latensi jaringan. Untuk mencapai tujuan optimasi latensi Anda, penting untuk menyempurnakan konfigurasi kernel Linux sesuai dengan persyaratan spesifik beban kerja Anda.

Ada banyak opsi konfigurasi untuk kernel Linux yang dapat membantu mengurangi latensi jaringan. Opsi yang paling berdampak adalah sebagai berikut.

  • Aktifkan mode polling sibuk — Mode polling sibuk mengurangi latensi pada jalur penerimaan jaringan. Saat Anda mengaktifkan mode polling sibuk, kode lapisan soket dapat langsung melakukan polling antrean penerima perangkat jaringan. Kelemahan dari polling sibuk adalah CPU penggunaan yang lebih tinggi di host yang berasal dari polling untuk data baru dalam lingkaran ketat. Ada dua pengaturan global yang mengontrol jumlah mikrodetik untuk menunggu paket untuk semua antarmuka.

     

    busy_read

    Batas waktu polling sibuk latensi rendah untuk pembacaan soket. Ini mengontrol jumlah mikrodetik untuk menunggu lapisan soket membaca paket pada antrean perangkat. Untuk mengaktifkan fitur secara global dengan perintah sysctl, organisasi Kernel Linux merekomendasikan nilai 50 mikrodetik. Untuk informasi selengkapnya, lihat busy_read di panduan pengguna dan administrator kernel Linux.

    $ C:\> sudo sysctl -w net.core.busy_read=50
    busy_poll

    Batas waktu polling sibuk latensi rendah untuk polling dan pilih. Ini mengontrol jumlah mikrodetik untuk menunggu peristiwa. Nilai yang disarankan adalah antara 50-100 mikrodetik, tergantung pada jumlah soket yang Anda polling. Semakin banyak soket yang Anda tambahkan, semakin tinggi angkanya.

    $ C:\> sudo sysctl -w net.core.busy_poll=50
  • Konfigurasikan status CPU daya (C-state) — C-state mengontrol tingkat tidur yang mungkin dimasukkan inti saat tidak aktif. Anda mungkin ingin mengontrol status-C untuk menyesuaikan sistem Anda untuk latensi versus performa. Dalam keadaan C yang CPU lebih dalam, pada dasarnya “tertidur” dan tidak dapat menanggapi permintaan sampai bangun dan transisi kembali ke keadaan aktif. 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 sehingga tidak menggunakan status C yang lebih dalam. Namun, meskipun konfigurasi ini mengurangi latensi reaksi prosesor, konfigurasi ini juga mengurangi ruang kepala yang tersedia untuk inti lain untuk Turbo Boost.

    Untuk mengurangi latensi reaksi prosesor, Anda dapat membatasi keadaan C yang lebih dalam. Untuk informasi selengkapnya, lihat Kinerja tinggi dan latensi rendah dengan membatasi status C yang lebih dalam di Panduan Pengguna Amazon Linux 2.

ENAkonfigurasi driver jaringan

Driver ENA jaringan memungkinkan komunikasi antara instance dan jaringan. Driver memproses paket jaringan dan meneruskannya ke tumpukan jaringan atau ke kartu Nitro. Ketika paket jaringan masuk, kartu Nitro menghasilkan interupsi CPU untuk memberi tahu perangkat lunak suatu peristiwa.

Menginterupsi

Interupsi adalah sinyal yang dikirim perangkat atau aplikasi ke prosesor. Interupsi memberi tahu prosesor bahwa suatu peristiwa telah terjadi atau suatu kondisi telah terpenuhi yang membutuhkan perhatian segera. Interupsi dapat menangani tugas yang sensitif terhadap waktu seperti menerima data dari antarmuka jaringan, menangani peristiwa perangkat keras, atau melayani permintaan dari perangkat lain.

Moderasi interupsi

Moderasi interupsi adalah teknik yang mengurangi jumlah interupsi yang dihasilkan perangkat dengan menggabungkan atau menundanya. Tujuan dari moderasi interupsi adalah untuk meningkatkan performa sistem dengan mengurangi overhead yang terkait dengan penanganan sejumlah besar interupsi. Terlalu banyak interupsi meningkatkan CPU penggunaan, berdampak buruk pada throughput, sementara terlalu sedikit interupsi meningkatkan latensi.

Moderasi interupsi dinamis

Moderasi interupsi dinamis adalah bentuk peningkatan moderasi interupsi yang secara dinamis menyesuaikan tingkat interupsi berdasarkan beban sistem saat ini dan pola lalu lintas. Ini bertujuan untuk mencapai keseimbangan antara mengurangi interupsi overhead dan paket per detik, atau bandwidth.

catatan

Moderasi interupsi dinamis diaktifkan secara default di beberapa AMIs (tetapi dapat diaktifkan atau dinonaktifkan di semuaAMIs).

Untuk meminimalkan latensi jaringan, mungkin perlu menonaktifkan moderasi interupsi. Namun, ini juga dapat meningkatkan overhead pemrosesan interupsi. Penting untuk menemukan keseimbangan yang tepat antara mengurangi latensi dan meminimalkan overhead. Perintah ethtool dapat membantu Anda mengonfigurasi moderasi interupsi. Secara default, rx-usecs diatur ke 20, dan tx-usecs diatur ke 64.

Untuk mendapatkan konfigurasi modifikasi interupsi saat ini, gunakan perintah berikut.

$ C:\> ethtool -c interface | egrep "rx-usecs:|tx-usecs:|Adaptive RX" Adaptive RX: on TX: off rx-usecs: 20 tx-usecs: 64

Untuk menonaktifkan modifikasi interupsi dan moderasi interupsi dinamis, gunakan perintah berikut.

$ C:\> sudo ethtool -C interface adaptive-rx off rx-usecs 0 tx-usecs 0