NetAdapterCx menerima penskalaan sisi (RSS)

Receive side scaling (RSS) adalah teknologi driver jaringan yang memungkinkan distribusi pemrosesan penerimaan jaringan yang efisien di beberapa CPU dalam sistem multiprosesor. RSS meningkatkan performa sistem dan meningkatkan skalabilitas jaringan dengan memanfaatkan semua prosesor yang tersedia dalam sistem dan menyeimbangkan kembali beban kerja CPU secara dinamis.

Topik ini menyoroti RSS untuk driver klien NetAdapterCx dan mengasumsikan pengetahuan tentang konsep dan terminologi RSS. Untuk informasi selengkapnya tentang RSS secara umum, termasuk diagram yang mengilustrasikan RSS dalam skenario perangkat keras yang berbeda, lihat Menerima Penskalaan Sisi.

Gambaran umum RSS di NetAdapterCx

RSS di NetAdapterCx berfokus pada kemudahan konfigurasi, kesederhanaan pengaktifan dan penonaktifan, dan abstraksi kompleksitas prosesor-ke-interupsi. Driver klien untuk NIC berkemampuan RSS hanya perlu memenuhi tiga kriteria untuk mendukung RSS di NetAdapterCx:

  1. Driver harus mengatur kemampuan RSS saat memulai adaptor bersih, tetapi sebelum memanggil NetAdapterStart. Ini termasuk menerapkan empat panggilan balik RSS dan mendaftarkannya dalam struktur kemampuan RSS.
  2. Antrean datapath driver harus dibuat dan siap menerima permintaan.
  3. Driver harus dalam status daya D0 .

Desain RSS di NetAdapterCx menjamin bahwa sistem tidak akan memanggil panggilan balik RSS klien dan mengaktifkan RSS hingga akhir urutan power-up. Klien tidak perlu mengelola permintaan pemindahan tabel tidak langsung atau menangani peristiwa RSS lainnya sampai semua yang mereka butuhkan siap.

Kemudian, ketika driver sedang dibongkar, NetAdapterCx tidak akan memanggil panggilan balik RSS setelah antrean datapath dihancurkan selama urutan power-down. Karena antrean datapath dirangkai sebagai langkah pertama selama power-down, ini berarti bahwa klien tidak perlu menangani kemungkinan peristiwa RSS pada tahap lain selama power-down.

Mengatur kapabilitas RSS

Untuk mulai menggunakan RSS di NetAdapterCx, ikuti langkah-langkah berikut:

  1. Saat memulai adaptor bersih Anda, beri tahu sistem tentang kemampuan dan batasan RSS perangkat keras Anda menggunakan struktur NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES .
  2. Inisialisasi struktur kemampuan dengan memanggil NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES_INIT.
  3. Saat Anda menginisialisasi struktur kemampuan RSS, atur anggota panggilan balik RSS struktur untuk mendaftarkan implementasi Anda untuk panggilan balik ini:
    1. EvtNetAdapterReceiveScalingEnable
    2. EvtNetAdapterReceiveScalingDisable
    3. EvtNetAdapterReceiveScalingSetHashSecretKey
    4. EvtNetAdapterReceiveScalingSetIndirectionEntries
  4. Atur SynchronizeSetIndirectionEntries struktur kemampuan RSS yang sesuai.
  5. Teruskan struktur kemampuan RSS yang diinisialisasi ke metode NetAdapterSetReceiveScalingCapabilities .

Mengaktifkan dan menonaktifkan RSS

Setelah Anda mengatur kemampuan RSS, sistem akan melanjutkan dengan urutan power-up untuk driver Anda. NetAdapterCx mulai memanggil panggilan balik RSS driver Anda setelah langkah terakhir pembuatan antrean datapath selesai. Pada titik ini, RSS dapat diaktifkan dan dinonaktifkan sesuai kebutuhan sistem.

Penting

Anda tidak boleh menghapus atau mengatur ulang tabel tidak langsung saat mengaktifkan atau menonaktifkan RSS. Kerangka kerja akan mengatur status tabel tidak langsung awal Anda.

Mengaktifkan RSS

NetAdapterCx memungkinkan RSS dengan memanggil panggilan balik EvtNetAdapterReceiveScalingEnable driver Anda. Dalam konteks panggilan balik ini, Anda biasanya mengaktifkan bit kontrol di perangkat keras Anda.

Untuk contoh kode mengaktifkan RSS, lihat EvtNetAdapterReceiveScalingEnable.

Menonaktifkan RSS

NetAdapterCx menonaktifkan RSS dengan memanggil panggilan balik EvtNetAdapterReceiveScalingDisable driver Anda. Di sini, Anda biasanya menonaktifkan bit kontrol di perangkat keras yang sebelumnya Anda tetapkan di EvtNetAdapterReceiveScalingEnable.

Untuk contoh kode menonaktifkan RSS, lihat EvtNetAdapterReceiveScalingDisable.

Mengatur kunci rahasia hash

Setelah RSS diaktifkan, NetAdapterCx memanggil panggilan balik EvtNetAdapterReceiveScalingSetHashSecretKey untuk memberi driver Anda kunci rahasia hash yang harus digunakan NIC Anda dalam memverifikasi perhitungan hash. Panggilan balik ini dapat dipanggil kapan saja ketika RSS berjalan jika kunci rahasia hash berubah.

Untuk contoh kode pengaturan kunci rahasia hash, lihat EvtNetAdapterReceiveScalingSetHashSecretKey.

Memindahkan entri tabel tidak langsung

Saat RSS berjalan pada sistem, driver protokol lapisan atas memantau beban kerja prosesor dan mempertahankan tabel tidak langsung yang memetakan menerima antrean ke prosesor. Ketika driver protokol perlu menyeimbangkan kembali beban kerja prosesor di RSS, pertama-tama penghitungan pemetaan baru untuk setiap entri tabel tidak langsung ke prosesor baru. Kemudian protokol meneruskan informasi ini ke NetAdapterCx, yang menangani kompleksitas pemetaan menerima antrean dan vektor gangguan perangkat keras ke prosesor yang benar atas nama driver klien NIC Anda. NetAdapterCx menyimpan tabel tidak langsung baru, dengan entri yang dipetakan untuk menerima ID antrean, dalam struktur NET_ADAPTER_RECEIVE_SCALING_INDIRECTION_ENTRIES dan meneruskannya ke driver Anda saat memanggil fungsi panggilan balik EvtNetAdapterReceiveScalingSetIndirectionEntries .

Dalam panggilan balik ini, Anda memindahkan setiap entri dalam tabel tidak langsung NIC Anda ke antrean terima yang ditentukan. Setiap struktur NET_ADAPTER_RECEIVE_SCALING_INDIRECTION_ENTRY dalam array NET_ADAPTER_RECEIVE_SCALING_INDIRECTION_ENTRIES berisi indeks hash untuk entri tersebut dalam tabel, antrean penerima baru untuk menetapkan entri, dan bidang status yang menunjukkan apakah pemindahan individu tersebut berhasil atau tidak.

Metode penetapan entri indeks ke antrean penerima perangkat keras tergantung pada desain NIC Anda dan jumlah antrean terima yang dimilikinya. Untuk informasi selengkapnya dan contoh kode, lihat EvtNetAdapterReceiveScalingSetIndirectionEntries.

Dukungan CPU heterogen

Penting

Dukungan CPU Heterogen adalah fitur prarilis yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.

Sistem CPU heterogen menggunakan beberapa jenis inti yang memiliki kecepatan dan fungsionalitas jam yang berbeda. Dibandingkan dengan sistem homogeneous-multiprocessor di mana setiap inti identik satu sama lain, sistem CPU heterogen dapat lebih menyesuaikan diri dengan beban komputasi dinamis dan menggunakan lebih sedikit energi.

Mulai pratinjau WDK versi 25197, NetAdapterCx menawarkan dukungan sistem CPU heterogen dengan memanfaatkan berbagai jenis inti secara efisien. Saat RSS berjalan, sistem memutuskan prosesor mana yang akan digunakan tergantung pada beban kerja lalu lintas yang diterima oleh driver klien. Ketika ada lebih sedikit lalu lintas yang diterima, inti yang lebih kecil dan lebih hemat daya dapat menangani lalu lintas. Ketika ada lebih banyak lalu lintas, inti yang lebih besar dan lebih berkinerja diperlukan untuk terus melakukan polling paket yang diterima.

Untuk ikut serta dalam dukungan sistem heterogen, administrator sistem harus mengatur kata kunci INF standar*RSSProfile ke NdisRssProfileBalanced. Ini adalah profil default untuk sistem heterogen. Untuk memungkinkan sistem memutuskan inti terbaik untuk digunakan, Anda tidak dapat mengatur kata kunci tingkat lanjut RSS.

Profil RSS lainnya juga didukung untuk sistem heterogen. Jika Anda ingin mengontrol pengaturan tingkat lanjut seperti nomor prosesor dasar RSS dan nomor prosesor maks RSS pada sistem, Anda harus menggunakan profil RSS yang berbeda.

Anda juga dapat menggunakan NdisRssProfileBalanced pada sistem CPU homogen. Dalam hal ini, sistem memutuskan prosesor mana yang akan digunakan untuk RSS.