Pengantar Untuk Menerima Penskalakan Sisi

Receive side scaling (RSS) adalah teknologi driver jaringan yang memungkinkan distribusi pemrosesan penerimaan jaringan yang efisien di beberapa CPU dalam sistem multiprosesor.

Catatan

Karena CPU hyper-threaded pada prosesor inti yang sama memiliki mesin eksekusi yang sama, efeknya tidak sama dengan memiliki beberapa prosesor inti. Untuk alasan ini, RSS tidak menggunakan prosesor hyper-threaded.

Untuk memproses data yang diterima secara efisien, fungsi layanan interupsi penerimaan driver miniport menjadwalkan panggilan prosedur yang ditangguhkan (DPC). Tanpa RSS, DPC umum menunjukkan semua data yang diterima dalam panggilan DPC. Oleh karena itu, semua pemrosesan terima yang terkait dengan interupsi berjalan pada CPU tempat interupsi penerimaan terjadi. Untuk gambaran umum pemrosesan penerimaan non-RSS, lihat Pemrosesan Penerimaan Non-RSS.

Dengan RSS, NIC dan driver miniport memberikan kemampuan untuk menjadwalkan menerima DPC pada prosesor lain. Selain itu, desain RSS memastikan bahwa pemrosesan yang terkait dengan koneksi tertentu tetap pada CPU yang ditetapkan. NIC mengimplementasikan fungsi hash dan nilai hash yang dihasilkan menyediakan sarana untuk memilih CPU.

Gambar berikut mengilustrasikan mekanisme RSS untuk menentukan CPU.

diagram illustrating the rss mechanism for determining a cpu.

NIC menggunakan fungsi hashing untuk menghitung nilai hash melalui area yang ditentukan (jenis hash) dalam data jaringan yang diterima. Area yang ditentukan bisa tidak berdekatan.

Sejumlah bit paling tidak signifikan (LSB) dari nilai hash digunakan untuk mengindeks tabel tidak langsung. Nilai dalam tabel tidak langsung digunakan untuk menetapkan data yang diterima ke CPU.

Untuk informasi selengkapnya tentang menentukan tabel tidak langsung, jenis hash, dan fungsi hashing, lihat Konfigurasi RSS.

Dengan dukungan message signaled interrupt (MSI), NIC juga dapat mengganggu CPU terkait. Untuk informasi selengkapnya tentang dukungan NDIS untuk MSI, lihat NDIS MSI-X.

Dukungan perangkat keras untuk RSS

Gambar berikut mengilustrasikan tingkat dukungan perangkat keras untuk RSS.

diagram illustrating the levels of hardware support for rss.

Ada tiga kemungkinan tingkat dukungan perangkat keras untuk RSS:

Perhitungan hash dengan satu antrean
NIC menghitung nilai hash dan driver miniport menetapkan paket yang diterima ke antrean yang terkait dengan CPU. Untuk informasi selengkapnya, lihat RSS dengan Antrean PenerimaAn Perangkat Keras Tunggal.

Perhitungan hash dengan beberapa antrean penerima
NIC menetapkan buffer data yang diterima ke antrean yang terkait dengan CPU. Untuk informasi selengkapnya, lihat RSS dengan Antrean Perangkat Keras.

Interupsi Sinyal Pesan (MSI)
NIC mengganggu CPU yang harus menangani paket yang diterima. Untuk informasi selengkapnya, lihat RSS dengan Interupsi Sinyal Pesan.

NIC selalu meneruskan nilai hash 32-bit.

Cara RSS meningkatkan performa sistem

RSS dapat meningkatkan performa sistem jaringan dengan mengurangi:

  • Memproses penundaan dengan mendistribusikan pemrosesan terima dari NIC di beberapa CPU.

    Ini membantu memastikan bahwa tidak ada CPU yang banyak dimuat saat CPU lain menganggur.

  • Spin lock overhead dengan meningkatkan probabilitas bahwa algoritma perangkat lunak yang berbagi data dijalankan pada CPU yang sama.

    Overhead kunci spin terjadi, misalnya, ketika fungsi yang dijalankan pada CPU0 memiliki kunci spin pada data yang harus diakses fungsi pada CPU1. CPU1 berputar (menunggu) hingga CPU0 melepaskan kunci.

  • Memuat ulang cache dan sumber daya lainnya dengan meningkatkan probabilitas algoritma perangkat lunak yang berbagi data yang dijalankan pada CPU yang sama.

    Pemuatan ulang seperti itu terjadi, misalnya, ketika fungsi yang mengeksekusi dan mengakses data bersama di CPU0, dijalankan pada CPU1 dalam interupsi berikutnya.

Untuk mencapai peningkatan performa ini di lingkungan yang aman, RSS menyediakan mekanisme berikut:

  • Pemrosesan terdistribusi

    RSS mendistribusikan pemrosesan indikasi penerimaan dari NIC tertentu di DPC ke beberapa CPU.

  • Pemrosesan dalam urutan

    RSS mempertahankan urutan pengiriman paket data yang diterima. Untuk setiap koneksi jaringan, proses RSS menerima indikasi pada CPU terkait. Untuk informasi selengkapnya tentang pemrosesan penerimaan RSS, lihat Menunjukkan Data Penerimaan RSS.

  • Penyeimbangan beban dinamis

    RSS menyediakan sarana untuk menyeimbangkan kembali beban pemrosesan jaringan antara CPU karena beban sistem host bervariasi. Untuk menyeimbangkan kembali beban, driver yang terlalu berlebihan dapat mengubah tabel tidak langsung. Untuk informasi selengkapnya tentang menentukan tabel tidak langsung, jenis hash, dan fungsi hashing, lihat Konfigurasi RSS.

  • Penskalaian sisi-kirim

    RSS memungkinkan tumpukan driver memproses data sisi kirim dan terima untuk koneksi tertentu pada CPU yang sama. Biasanya, driver yang terlalu berlebihan (misalnya, TCP) mengirim bagian dari blok data dan menunggu pengakuan sebelum mengirim keseimbangan data. Pengakuan kemudian memicu permintaan pengiriman berikutnya. Tabel tidak langsung RSS mengidentifikasi CPU tertentu untuk pemrosesan data penerima. Secara default, pemrosesan pengiriman berjalan pada CPU yang sama jika dipicu oleh pengakuan terima. Driver juga dapat menentukan CPU (misalnya, jika timer digunakan).

  • Hash aman

    RSS menyertakan tanda tangan yang menyediakan keamanan tambahan. Tanda tangan ini melindungi sistem dari host jarak jauh berbahaya yang mungkin mencoba memaksa sistem ke status yang tidak seimbang.

  • Dukungan MSI-X

    RSS, dengan dukungan untuk MSI-X, menjalankan rutinitas layanan interupsi (ISR) pada CPU yang sama yang kemudian menjalankan DPC. Ini mengurangi overhead kunci putar dan memuat ulang cache.