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

Nitro System adalah kumpulan komponen perangkat keras dan perangkat lunak yang dibangun oleh AWS yang memungkinkan performa tinggi, ketersediaan tinggi, dan keamanan tinggi. Sistem Nitro menyediakan kemampuan seperti logam kosong 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 EC2 instance generasi saat ini melakukan pemrosesan paket jaringan pada Kartu EC2 Nitro. 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 instance berbasis Nitro Anda.

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

Aliran paket jaringan pada kartu Nitro

EC2Instans yang dibangun di atas sistem Nitro memiliki kemampuan akselerasi perangkat keras yang memungkinkan pemrosesan paket lebih cepat, yang diukur dengan laju throughput paket per detik ()PPS. Ketika kartu Nitro melakukan evaluasi awal untuk aliran baru, ia 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.

Tingkat 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 kedua metrik CPS dan PPS metrik saat Anda mendesain beban kerja Anda.

Bagaimana koneksi dibuat

Ketika koneksi dibuat antara instance berbasis Nitro dan titik akhir lainnya, 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 mendefinisikan dua titik akhir dan aliran paket di antara mereka. Kelima sifat ini bersama-sama dikenal sebagai aliran 5-tuple.

  • IP sumber

  • Port sumber

  • IP Tujuan

  • Port tujuan

  • Protokol komunikasi

Arah aliran paket dikenal sebagai ingress (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 yang berlaku. Kemudian meneruskan paket ke tujuannya di host. CPU

  • Egress — Ketika kartu Nitro menangani paket jaringan keluar, ia mencari tujuan antarmuka jarak jauh, mengevaluasi berbagai VPC fungsi, 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 serta desain dan konfigurasi beban kerja aplikasi Anda dapat memengaruhi pemrosesan paket dan tingkat koneksi. Misalnya, jika aplikasi Anda memiliki tingkat pembentukan koneksi yang tinggi, seperti DNS layanan, firewall, atau router virtual, itu 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 mengonfigurasi lalu lintas jaringan untuk instans Anda, ada banyak aspek yang perlu dipertimbangkan yang dapat memengaruhi PPS kinerja. 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 sebuah instance melalui satu antarmuka jaringan dan pergi melalui antarmuka jaringan yang berbeda, dapat mengurangi kinerja puncak yang dapat dicapai oleh instans jika arus dilacak. Untuk informasi selengkapnya tentang pelacakan koneksi grup keamanan, koneksi yang tidak dilacak, dan koneksi yang dilacak secara otomatis, lihat. Pelacakan koneksi grup EC2 keamanan Amazon

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 tambalan terbaru dan dapat memanfaatkan peningkatan kinerja, seperti fitur jalur akselerasi yang hanya tersedia untuk driver generasi terbaru. Driver sebelumnya tidak mendukung fitur jalur akselerasi.

Untuk memanfaatkan fitur jalur akselerasi, kami sarankan Anda menginstal ENA driver terbaru pada instans Anda.

Instance 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 — Driver ENA Windows 2.0.0 atau yang lebih baru. Untuk menginstal atau memperbarui driver ENA Windows, lihatInstal ENA driver pada instance EC2 Windows.

Jarak antara titik akhir

Koneksi antara dua instance di Availability Zone yang sama dapat memproses lebih banyak paket per detik daripada koneksi di seluruh Wilayah sebagai akibat dari TCP windowing pada lapisan aplikasi, yang menentukan berapa banyak data yang dapat terbang pada waktu tertentu. Jarak yang jauh antar instance meningkatkan latensi dan mengurangi jumlah paket yang dapat diproses oleh titik akhir.

Pertimbangan desain aplikasi

Ada aspek desain dan konfigurasi aplikasi yang dapat memengaruhi 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 instance di jaringan. Ukuran paket yang lebih kecil dapat meningkatkan laju proses paket, tetapi ini dapat mengurangi bandwidth maksimum yang dicapai ketika jumlah paket melebihi tunjangan. PPS

Jika ukuran paket melebihi Maximum Transmission Unit (MTU) dari jaringan hop, router di sepanjang jalur mungkin memecahnya. Fragmen paket yang dihasilkan dianggap pengecualian, dan diproses pada tingkat standar (tidak dipercepat). Ini dapat menyebabkan variasi dalam kinerja Anda. Amazon EC2 mendukung frame jumbo 9001 byte, namun tidak semua layanan mendukungnya. Kami menyarankan Anda mengevaluasi topologi Anda ketika Anda mengkonfigurasi. MTU

Pertukaran 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 UDP transport dapat menghasilkan PPS tingkat 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.

Meledak mikro

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

Misalnya, katakanlah 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 paruh pertama kedua dan tidak menyisakan apa pun untuk sisa detik. Meskipun Anda mengirim 10Gb dalam jangka waktu 1 detik, tunjangan di paruh pertama detik dapat mengakibatkan paket diantrian atau dijatuhkan.

Anda dapat menggunakan penjadwal jaringan seperti Linux Traffic Control untuk membantu mempercepat throughput Anda dan menghindari menyebabkan paket antrian atau jatuh sebagai akibat dari ledakan mikro.

Jumlah arus

Aliran tunggal 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 dibandingkan dengan 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.

Jumlah Antrian Adaptor Jaringan Elastis (ENA)

Secara default, jumlah ENA antrian maksimum dialokasikan ke antarmuka jaringan berdasarkan ukuran dan jenis instans Anda. Mengurangi jumlah antrian dapat mengurangi PPS tingkat maksimum yang dapat dicapai. Sebaiknya gunakan alokasi antrian default untuk performa terbaik.

Untuk Linux, antarmuka jaringan dikonfigurasi dengan maksimum secara default. Untuk aplikasi berdasarkan Data Plane Development Kit (DPDK), kami sarankan Anda mengonfigurasi jumlah antrian maksimum yang tersedia.

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 tingkat pemrosesan paket.

Pelacakan koneksi untuk mempertahankan status

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

catatan

Tidak semua arus lalu lintas jaringan dilacak. Jika aturan grup keamanan dikonfigurasiKoneksi-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 arus jaringan Anda. Alur jaringan harus andal memenuhi standar protokol, sesuai dengan perubahan dalam VPC desain, dan paket rute hanya untuk tujuan yang diizinkan. Namun, overhead mengurangi kinerja Anda.

Fragmen paket

Seperti disebutkan di bawah pertimbangan Aplikasi, fragmen paket yang dihasilkan dari paket yang melebihi jaringan MTU ditangani sebagai pengecualian, dan tidak dapat memanfaatkan akselerasi perangkat keras.

Koneksi menganggur

Ketika koneksi tidak memiliki aktivitas untuk sementara waktu, bahkan jika koneksi belum mencapai batas waktu tunggu, sistem dapat tidak memprioritaskannya. 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 TCP keepalives untuk menjaga koneksi idle tetap terbuka. Untuk informasi selengkapnya, lihat Waktu habis pelacakan koneksi idle.

VPCmutasi

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.

ICMPmengalir

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.

Maksimalkan kinerja jaringan pada sistem Nitro Anda

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 dan praktik terbaik lainnya untuk konfigurasi instans Anda di Linux, lihat Panduan Praktik Terbaik dan Pengoptimalan Kinerja Driver ENA Linux di GitHub.

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

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

  • Kurangi jarak fisik antara dua contoh. Saat mengirim dan menerima instance berada di Availability Zone yang sama atau menggunakan grup penempatan cluster, Anda dapat mengurangi jumlah hop yang perlu diambil paket untuk melakukan perjalanan dari satu titik akhir ke titik akhir lainnya.

  • Gunakan Koneksi-koneksi yang tidak dilacak.

  • Gunakan UDP protokol untuk lalu lintas jaringan.

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

Pantau kinerja pada instance Linux

Anda dapat menggunakan metrik Ethtool pada instans Linux untuk memantau indikator kinerja jaringan instans seperti bandwidth, laju paket, dan pelacakan koneksi. Untuk informasi selengkapnya, lihat Pantau performa jaringan untuk ENA pengaturan pada EC2 instans Anda.