View a markdown version of this page

Pertimbangan sistem nitro untuk penyetelan kinerja - Amazon Elastic Compute Cloud

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

Pertimbangan sistem nitro untuk penyetelan kinerja

Sistem Nitro adalah kumpulan komponen perangkat keras dan perangkat lunak yang dibangun oleh AWS yang memungkinkan kinerja tinggi, ketersediaan tinggi, dan keamanan tinggi. Sistem Nitro menyediakan kemampuan seperti bare metal yang menghilangkan overhead virtualisasi dan mendukung beban kerja yang memerlukan akses penuh ke perangkat keras host. Untuk informasi lebih rinci, lihat Sistem AWS Nitro.

Semua jenis instans EC2 generasi saat ini melakukan pemrosesan paket jaringan pada Kartu Nitro EC2. Topik ini mencakup penanganan paket tingkat tinggi pada kartu Nitro, aspek umum arsitektur jaringan dan konfigurasi yang memengaruhi kinerja penanganan paket, dan tindakan apa yang dapat Anda ambil untuk mencapai kinerja puncak untuk instans berbasis Nitro Anda.

Kartu Nitro menangani semua antarmuka input dan output (I/O), seperti yang diperlukan untuk Virtual Private Cloud (VPC). Untuk semua komponen yang mengirim atau menerima informasi melalui jaringan, kartu Nitro bertindak sebagai perangkat komputasi mandiri untuk I/O lalu lintas yang secara fisik terpisah dari papan utama sistem tempat beban kerja pelanggan berjalan.

Aliran paket jaringan pada kartu Nitro

Instans EC2 yang dibangun di atas sistem Nitro memiliki kemampuan akselerasi perangkat keras yang memungkinkan pemrosesan paket lebih cepat, yang diukur dengan kecepatan throughput paket per detik (PPS). Ketika kartu Nitro melakukan evaluasi awal untuk aliran baru, kartu ini menyimpan informasi yang sama untuk semua paket dalam aliran, seperti grup keamanan, daftar kontrol akses, dan entri tabel rute. Ketika memproses paket tambahan untuk aliran yang sama, ia dapat menggunakan informasi yang disimpan untuk mengurangi overhead untuk paket-paket tersebut.

Kecepatan koneksi Anda diukur dengan metrik koneksi per detik (CPS). Setiap koneksi baru memerlukan overhead pemrosesan tambahan yang harus diperhitungkan dalam perkiraan kemampuan beban kerja. Penting untuk mempertimbangkan metrik CPS dan PPS saat Anda merancang beban kerja Anda.

Bagaimana koneksi dibuat

Ketika koneksi dibuat antara instance berbasis Nitro dan titik akhir lain, kartu Nitro mengevaluasi aliran penuh untuk paket pertama yang dikirim atau diterima antara dua titik akhir. Untuk paket berikutnya dari aliran yang sama, evaluasi ulang penuh biasanya tidak diperlukan. Namun, ada pengecualian. Untuk informasi lebih lanjut tentang pengecualian, lihatPaket yang tidak menggunakan akselerasi perangkat keras.

Properti berikut menentukan dua titik akhir dan aliran paket di antara mereka. Kelima sifat ini bersama-sama dikenal sebagai aliran 5-tupel.

  • IP sumber

  • Port sumber

  • IP Tujuan

  • Port tujuan

  • Protokol komunikasi

Arah aliran paket dikenal sebagai input (inbound) dan egress (outbound). Deskripsi tingkat tinggi berikut merangkum aliran paket jaringan ujung ke ujung.

  • Ingress — Ketika kartu Nitro menangani paket jaringan masuk, ia mengevaluasi paket terhadap aturan firewall stateful dan daftar kontrol akses. Ini melacak koneksi, mengukurnya, dan melakukan tindakan lain sebagaimana berlaku. Kemudian meneruskan paket ke tujuannya pada CPU host.

  • Egress — Ketika kartu Nitro menangani paket jaringan keluar, ia mencari tujuan antarmuka jarak jauh, mengevaluasi berbagai fungsi VPC, menerapkan batas kecepatan, dan melakukan tindakan lain yang berlaku. Kemudian meneruskan paket ke tujuan hop berikutnya di jaringan.

Rancang jaringan Anda untuk kinerja optimal

Untuk memanfaatkan kemampuan kinerja sistem Nitro Anda, Anda harus memahami apa kebutuhan pemrosesan jaringan Anda dan bagaimana kebutuhan tersebut memengaruhi beban kerja untuk sumber daya Nitro Anda. Kemudian Anda dapat merancang untuk kinerja optimal untuk lanskap jaringan Anda. Pengaturan infrastruktur dan desain dan konfigurasi beban kerja aplikasi dapat memengaruhi pemrosesan paket dan kecepatan koneksi. Misalnya, jika aplikasi Anda memiliki tingkat pembentukan koneksi yang tinggi, seperti layanan DNS, firewall, atau router virtual, ia akan memiliki lebih sedikit kesempatan untuk memanfaatkan akselerasi perangkat keras yang hanya terjadi setelah koneksi dibuat.

Anda dapat mengonfigurasi pengaturan aplikasi dan infrastruktur untuk merampingkan beban kerja dan meningkatkan kinerja jaringan. Namun, tidak semua paket memenuhi syarat untuk akselerasi. Sistem Nitro menggunakan aliran jaringan penuh untuk koneksi baru dan untuk paket yang tidak memenuhi syarat untuk akselerasi.

Sisa bagian ini akan fokus pada pertimbangan desain aplikasi dan infrastruktur untuk membantu memastikan bahwa paket mengalir dalam jalur yang dipercepat sebanyak mungkin.

Pertimbangan desain jaringan untuk sistem Nitro

Saat Anda mengkonfigurasi lalu lintas jaringan untuk instance Anda, ada banyak aspek yang perlu dipertimbangkan yang dapat memengaruhi kinerja PPS. Setelah aliran terbentuk, sebagian besar paket yang secara teratur masuk atau keluar memenuhi syarat untuk akselerasi. Namun, ada pengecualian untuk memastikan bahwa desain infrastruktur dan aliran paket terus memenuhi standar protokol.

Untuk mendapatkan kinerja terbaik dari kartu Nitro Anda, Anda harus mempertimbangkan dengan cermat pro dan kontra dari detail konfigurasi berikut untuk infrastruktur dan aplikasi Anda.

Pertimbangan infrastruktur

Konfigurasi infrastruktur Anda dapat memengaruhi aliran paket dan efisiensi pemrosesan Anda. Daftar berikut mencakup beberapa pertimbangan penting.

Konfigurasi antarmuka jaringan dengan asimetri

Grup keamanan menggunakan pelacakan koneksi untuk melacak informasi tentang lalu lintas yang mengalir ke dan dari instance. Perutean asimetris, di mana lalu lintas masuk ke instance melalui satu antarmuka jaringan dan keluar melalui antarmuka jaringan yang berbeda, dapat mengurangi kinerja puncak yang dapat dicapai instance jika aliran dilacak. Untuk informasi selengkapnya tentang pelacakan koneksi grup keamanan, koneksi yang tidak dilacak, dan koneksi yang dilacak secara otomatis, lihatPelacakan koneksi grup keamanan Amazon EC2.

Driver jaringan

Driver jaringan diperbarui dan dirilis secara teratur. Jika driver Anda kedaluwarsa, itu dapat secara signifikan mengganggu kinerja. Perbarui driver Anda untuk memastikan bahwa Anda memiliki patch terbaru dan dapat memanfaatkan peningkatan kinerja, seperti fitur jalur akselerasi yang hanya tersedia untuk driver generasi terbaru. Driver sebelumnya tidak mendukung fitur jalur yang dipercepat.

Untuk memanfaatkan fitur jalur yang dipercepat, sebaiknya instal driver ENA terbaru pada instans Anda.

Instans Linux — driver ENA Linux 2.2.9 atau yang lebih baru. Untuk menginstal atau memperbarui driver ENA Linux dari GitHub repositori Amazon Drivers, lihat bagian kompilasi driver dari file readme.

Instans Windows - ENA driver Windows 2.0.0 atau yang lebih baru. Untuk menginstal atau memperbarui driver ENA Windows, lihatInstal driver ENA pada instans EC2 Windows.

Jarak antar titik akhir

Koneksi antara dua instance di Zona Ketersediaan yang sama dapat memproses lebih banyak paket per detik daripada koneksi lintas Wilayah sebagai hasil dari jendela TCP di lapisan aplikasi, yang menentukan berapa banyak data yang dapat terbang pada waktu tertentu. Jarak yang jauh antara instance meningkatkan latensi dan mengurangi jumlah paket yang dapat diproses oleh titik akhir.

Batas antrian byte (BQL)

BQL adalah fitur yang membatasi jumlah byte yang diteruskan ke kartu Nitro untuk mengurangi antrian. BQL dinonaktifkan secara default di driver ENA, di sistem operasi Amazon Linux, dan di sebagian besar distribusi Linux. Jika BQL dan penggantian proxy fragmen keduanya diaktifkan, itu dapat mengakibatkan keterbatasan kinerja dengan membatasi jumlah byte yang diteruskan ke Nitro sebelum semua fragmen diproses.

Pertimbangan desain aplikasi

Ada aspek desain aplikasi dan konfigurasi yang dapat mempengaruhi efisiensi pemrosesan Anda. Daftar berikut mencakup beberapa pertimbangan penting.

Ukuran paket

Ukuran paket yang lebih besar dapat meningkatkan throughput untuk data yang dapat dikirim dan diterima instans di jaringan. Amazon EC2 mendukung bingkai jumbo sebesar 9001 byte, namun layanan lain mungkin menerapkan batasan yang berbeda. Ukuran paket yang lebih kecil dapat meningkatkan kecepatan proses paket, tetapi ini dapat mengurangi bandwidth maksimum yang dicapai ketika jumlah paket melebihi tunjangan PPS.

Jika ukuran paket melebihi Unit Transmisi Maksimum (MTU) dari hop jaringan, router di sepanjang jalur mungkin memecahnya. Fragmen paket yang dihasilkan dianggap pengecualian, dan biasanya diproses pada tingkat standar (tidak dipercepat). Hal ini dapat menyebabkan variasi dalam kinerja Anda. Namun, Anda dapat mengganti perilaku standar untuk paket terfragmentasi keluar dengan pengaturan mode proxy fragmen. Untuk informasi selengkapnya, lihat Maksimalkan kinerja jaringan pada sistem Nitro Anda. Kami menyarankan Anda mengevaluasi topologi Anda ketika Anda mengkonfigurasi MTU.

Pengorbanan protokol

Protokol yang andal seperti TCP memiliki lebih banyak overhead daripada protokol yang tidak dapat diandalkan seperti UDP. Overhead yang lebih rendah dan pemrosesan jaringan yang disederhanakan untuk protokol transport UDP dapat menghasilkan tingkat PPS yang lebih tinggi, tetapi dengan mengorbankan pengiriman paket yang andal. Jika pengiriman paket yang andal tidak penting untuk aplikasi Anda, UDP mungkin merupakan pilihan yang baik.

Micro-bursting

Micro-bursting terjadi ketika lalu lintas melebihi tunjangan selama periode waktu yang singkat daripada didistribusikan secara merata. Ini biasanya terjadi pada skala mikrodetik.

Misalnya, Anda memiliki instance yang dapat mengirim hingga 10 Gbps, dan aplikasi Anda mengirimkan 10 Gb penuh dalam setengah detik. Ledakan mikro ini melebihi tunjangan selama setengah detik pertama dan tidak menyisakan apa pun untuk sisa detik kedua. Meskipun Anda mengirim 10Gb dalam jangka waktu 1 detik, tunjangan dalam setengah detik pertama dapat mengakibatkan paket mengantri atau dijatuhkan.

Anda dapat menggunakan penjadwal jaringan seperti Linux Traffic Control untuk membantu mempercepat throughput Anda dan menghindari menyebabkan paket yang mengantri atau jatuh sebagai akibat dari micro-bursting.

Jumlah aliran

Satu aliran dibatasi hingga 5 Gbps kecuali berada di dalam grup penempatan cluster yang mendukung hingga 10 Gbps, atau jika menggunakan ENA Express, yang mendukung hingga 25 Gbps.

Demikian pula, kartu Nitro dapat memproses lebih banyak paket di beberapa aliran daripada menggunakan aliran tunggal. Untuk mencapai tingkat pemrosesan paket puncak per instans, kami merekomendasikan setidaknya 100 aliran pada instans dengan bandwidth agregat 100 Gbps atau lebih tinggi. Ketika kemampuan bandwidth agregat meningkat, jumlah aliran yang dibutuhkan untuk mencapai tingkat pemrosesan puncak juga meningkat. Benchmarking akan membantu Anda menentukan konfigurasi apa yang Anda butuhkan untuk mencapai tingkat puncak di jaringan Anda.

Antrian Adaptor Jaringan Elastis (ENA)

ENA (Elastic Network Adapter) menggunakan antrian multiple receiver (Rx) dan transmisi (Tx) (ENA antrean) untuk meningkatkan kinerja jaringan dan skalabilitas pada instans EC2. Antrian ini secara efisien mengelola lalu lintas jaringan dengan menyeimbangkan beban data yang dikirim dan diterima di seluruh antrian yang tersedia.

Untuk informasi selengkapnya, lihat Antrian ENA.

Overhead proses fitur

Fitur seperti Traffic Mirroring dan ENA Express dapat menambahkan lebih banyak overhead pemrosesan, yang dapat mengurangi kinerja pemrosesan paket absolut. Anda dapat membatasi penggunaan fitur atau menonaktifkan fitur untuk meningkatkan kecepatan pemrosesan paket.

Pelacakan koneksi untuk mempertahankan status

Grup keamanan Anda menggunakan pelacakan koneksi untuk menyimpan informasi tentang lalu lintas ke dan dari instance. Pelacakan koneksi menerapkan aturan terhadap setiap aliran lalu lintas jaringan individu untuk menentukan apakah lalu lintas diizinkan atau ditolak. Kartu Nitro menggunakan pelacakan aliran untuk mempertahankan keadaan aliran. Karena lebih banyak aturan grup keamanan diterapkan, lebih banyak pekerjaan diperlukan untuk mengevaluasi alur.

catatan

Tidak semua arus lalu lintas jaringan dilacak. Jika aturan grup keamanan dikonfigurasi denganKoneksi-koneksi yang tidak dilacak, tidak ada pekerjaan tambahan yang diperlukan kecuali untuk koneksi yang dilacak secara otomatis untuk memastikan perutean simetris ketika ada beberapa jalur balasan yang valid.

Paket yang tidak menggunakan akselerasi perangkat keras

Tidak semua paket dapat memanfaatkan akselerasi perangkat keras. Penanganan pengecualian ini melibatkan beberapa overhead pemrosesan yang diperlukan untuk memastikan kesehatan aliran jaringan Anda. Aliran jaringan harus dapat diandalkan memenuhi standar protokol, sesuai dengan perubahan dalam desain VPC, dan merutekan paket hanya ke tujuan yang diizinkan. Namun, overhead mengurangi kinerja Anda.

Fragmen paket

Seperti disebutkan di bawah Pertimbangan Aplikasi, fragmen paket yang dihasilkan dari paket yang melebihi MTU jaringan biasanya ditangani sebagai pengecualian, dan tidak dapat memanfaatkan akselerasi perangkat keras. Namun, Anda dapat melewati batasan fragmen keluar dengan mode proxy fragmen, tergantung pada versi driver Anda. Untuk informasi selengkapnya, lihat tindakan yang dapat Anda lakukan di Maksimalkan kinerja jaringan pada sistem Nitro Anda bagian ini.

Koneksi idle

Ketika koneksi tidak memiliki aktivitas untuk sementara waktu, bahkan jika koneksi belum mencapai batas waktu tunggu, sistem dapat menurunkan prioritasnya. Kemudian, jika data masuk setelah koneksi tidak diprioritaskan, sistem perlu menanganinya sebagai pengecualian untuk menyambung kembali.

Untuk mengelola koneksi, Anda dapat menggunakan batas waktu pelacakan koneksi untuk menutup koneksi idle. Anda juga dapat menggunakan keepalives TCP untuk menjaga koneksi idle tetap terbuka. Untuk informasi selengkapnya, lihat Waktu habis pelacakan koneksi idle.

Mutasi VPC

Pembaruan untuk grup keamanan, tabel rute, dan daftar kontrol akses semuanya perlu dievaluasi ulang di jalur pemrosesan untuk memastikan bahwa entri rute dan aturan grup keamanan masih berlaku seperti yang diharapkan.

Aliran ICMP

Internet Control Message Protocol (ICMP) adalah protokol lapisan jaringan yang digunakan perangkat jaringan untuk mendiagnosis masalah komunikasi jaringan. Paket-paket ini selalu menggunakan aliran penuh.

Aliran L2 asimetris

NitroV3 dan platform sebelumnya tidak menggunakan akselerasi perangkat keras untuk lalu lintas antara dua ENI di subnet yang sama di mana satu ENI menggunakan router gateway default dan yang lainnya tidak. NitroV4 dan platform yang lebih baru menggunakan akselerasi perangkat keras dalam skenario ini. Untuk kinerja yang lebih baik pada NitroV3 atau platform sebelumnya, pastikan bahwa router gateway default menggunakan kecocokan antara kedua ENI, atau ENI tersebut berada di subnet yang berbeda.

Maksimalkan kinerja jaringan pada sistem Nitro Anda

Anda dapat memaksimalkan kinerja jaringan Anda pada sistem Nitro dengan menyesuaikan pengaturan jaringan.

Pertimbangan-pertimbangan

Sebelum Anda membuat keputusan desain atau menyesuaikan pengaturan jaringan apa pun pada instans Anda, kami sarankan Anda mengambil langkah-langkah berikut untuk membantu memastikan bahwa Anda mendapatkan hasil terbaik:

  1. Pahami pro dan kontra dari tindakan yang dapat Anda ambil untuk meningkatkan kinerja dengan meninjauPertimbangan desain jaringan untuk sistem Nitro.

    Untuk pertimbangan lebih lanjut dan praktik terbaik untuk konfigurasi instans Anda di Linux, lihat Praktik Terbaik Driver Linux ENA dan Panduan Optimasi Kinerja di GitHub.

  2. Tolok ukur beban kerja Anda dengan jumlah aliran aktif puncak untuk menentukan baseline kinerja aplikasi Anda. Dengan dasar kinerja, Anda dapat menguji variasi dalam pengaturan atau desain aplikasi untuk memahami pertimbangan mana yang paling berdampak, terutama jika Anda berencana untuk meningkatkan atau memperkecil skala.

Menyetel kinerja PPS

Daftar berikut berisi tindakan yang dapat Anda lakukan untuk menyesuaikan kinerja PPS Anda, tergantung pada kebutuhan sistem Anda.

  • Kurangi jarak fisik antara dua contoh. Saat instans pengiriman dan penerimaan berada di Availability Zone yang sama atau menggunakan grup penempatan cluster, Anda dapat mengurangi jumlah lompatan yang diperlukan paket untuk melakukan perjalanan dari satu titik akhir ke titik akhir lainnya.

  • Gunakan Koneksi-koneksi yang tidak dilacak.

  • Gunakan protokol UDP untuk lalu lintas jaringan.

  • Untuk instans EC2 dengan bandwidth agregat 100 Gbps atau lebih, distribusikan beban kerja lebih dari 100 aliran individu atau lebih untuk menyebarkan pekerjaan secara merata di seluruh kartu Nitro.

  • Untuk mengatasi batas PPS fragmen keluar pada instans EC2, Anda dapat mengaktifkan mode proxy fragmen (tergantung pada versi driver Anda). Pengaturan ini memungkinkan paket terfragmentasi dievaluasi di jalur pemrosesan, sehingga mengatasi batas PPS keluar 1024. Saat memuat driver, jalankan salah satu perintah berikut untuk mengaktifkan atau menonaktifkan mode proxy fragmen:

    Aktifkan mode proxy fragmen

    sudo insmod ena.ko enable_frag_bypass=1

    Nonaktifkan mode proxy fragmen

    sudo insmod ena.ko enable_frag_bypass=0

Konfigurasikan alokasi antrian ENA

Pada jenis instans yang didukung, Anda dapat mengalokasikan antrian ini secara dinamis di seluruh Elastic Network Interfaces (ENI). Alokasi antrian ENA yang fleksibel mengoptimalkan distribusi sumber daya, memungkinkan pemanfaatan vCPU maksimum. Beban kerja kinerja jaringan tinggi biasanya memerlukan beberapa antrian ENA. Untuk informasi selengkapnya, lihat Antrian ENA.

Memantau kinerja pada instans Linux

Anda dapat menggunakan metrik Ethtool pada instans Linux untuk memantau indikator kinerja jaringan instance seperti bandwidth, kecepatan paket, dan pelacakan koneksi. Lihat informasi yang lebih lengkap di Memantau kinerja jaringan untuk pengaturan ENA pada instans EC2 Anda.