Network adapter tidak harus mengirim interrupt ke CPU untuk setiap paket yang diterima atau transmisi yang selesai. Banyak NIC dapat menahan pengiriman interrupt sebentar lalu melaporkan beberapa completion sekaligus. Interrupt moderation ini mengurangi traffic interrupt dan overhead masuk ke CPU, tetapi juga dapat menunda saat software menyadari adanya pekerjaan yang sudah selesai.
Mekanisme ini berada di antara DMA paket dan pemrosesan receive atau transmit oleh driver. Yang berubah adalah waktu notifikasi; format paket di wire, aturan ordering Ethernet, dan kewajiban driver untuk memproses descriptor yang selesai tetap terpisah dari kebijakan tersebut.
Completion dan notifikasi adalah dua peristiwa berbeda
Receive path umum memakai descriptor ring di host memory. Driver menyiapkan buffer, NIC menulis data paket melalui DMA, lalu perangkat mencatat completion state sesuai kontrak interface-nya. Interrupt kemudian dapat memberi tahu CPU bahwa ada pekerjaan tersedia.
Urutannya secara konseptual:
frame tiba
|
NIC menulis data paket
|
NIC memperbarui completion state
|
kebijakan interrupt moderation
|
interrupt dikirim
|
driver menjadwalkan receive processingKarena itu, DMA dapat sudah selesai sementara CPU belum menerima interrupt. Jaminan ordering yang tepat untuk visibilitas descriptor dan data berasal dari interface NIC, arsitektur bus, serta aturan memory ordering driver; interrupt moderation hanya mengatur waktu notifikasi dalam batas tersebut.
Batching mengurangi tekanan interrupt
Tanpa moderation, queue yang sibuk dapat menghasilkan interrupt dengan laju mendekati laju completion. Setiap interrupt dapat melibatkan pengiriman hardware, masuk ke kernel interrupt handling, bookkeeping, dan transisi menuju polling path driver.
Moderation membuat beberapa completion berbagi biaya notifikasi tersebut. NIC dapat memakai timer, threshold jumlah completion, atau kombinasi vendor-specific. Kontrol yang tersedia beserta satuannya bergantung pada perangkat.
Hal ini tidak berarti interval moderation yang lebih besar selalu menghasilkan throughput lebih tinggi. Batas throughput dapat berada di link rate, packet processing, memory bandwidth, queue contention, perilaku aplikasi, atau dinamika protokol. Moderation hanya mengubah satu bagian dari jalur notifikasi CPU.
Linux NAPI mengubah peran interrupt
Driver jaringan Linux umumnya memakai NAPI. Dalam model ini, satu interrupt tidak berarti tepat satu paket diproses di interrupt context. Interrupt menandakan adanya pekerjaan, driver menjadwalkan NAPI polling, lalu poll routine memproses paket sampai batas budget.
Secara konseptual:
NIC interrupt
|
schedule NAPI
|
poll receive queue
|
proses beberapa paket
|
masih ada pekerjaan?
/ \
ya tidak
| |
poll complete NAPI
lagi aktifkan notifikasiModel ini sudah mengamortisasi biaya per-interrupt saat beban tinggi. Hardware interrupt moderation menambahkan titik batching lain sebelum interrupt mencapai CPU.
Urutan masking interrupt, re-arming, dan polling yang tepat bergantung pada driver serta perangkat. NAPI menetapkan framework polling Linux, bukan satu model register NIC universal.
Queue MSI-X membuat moderation terkait dengan queue
NIC multi-queue modern sering memakai vector MSI-X yang terkait dengan kelompok receive/transmit queue. Receive Side Scaling dapat mendistribusikan flow ke beberapa queue, dan Linux dapat mengarahkan interrupt vector ke CPU tertentu.
Akibatnya, perilaku moderation dapat berinteraksi dengan penempatan queue. Queue dengan beban tinggi dan queue yang hampir idle belum tentu cocok dengan waktu notifikasi yang sama. Sebagian hardware dan driver menyediakan adaptive moderation yang mengubah setting berdasarkan kondisi traffic; perangkat lain hanya menyediakan parameter tetap atau kontrol terbatas.
Perbedaan ini penting saat membaca penggunaan CPU agregat. Jumlah interrupt seluruh sistem yang lebih rendah masih dapat menyembunyikan queue tidak seimbang yang membuat satu CPU terus sibuk.
Biaya latensi muncul sebelum software melihat paket
Jika NIC sengaja menunggu sebelum mengirim interrupt, CPU yang sebelumnya idle dapat mulai memproses paket lebih lambat dibanding notifikasi langsung. Tambahan jeda ini paling terlihat pada traffic jarang karena belum tentu ada siklus NAPI poll aktif yang segera mengambil completion.
Pada beban berkelanjutan, relasinya berubah. NAPI mungkin sudah melakukan polling pada queue sibuk, sehingga pemrosesan paket dapat berlanjut tanpa interrupt baru untuk setiap kedatangan. Dampak latensi karena itu bergantung pada pola traffic, state queue, perilaku driver, CPU scheduling, dan kebijakan perangkat.
Satu nilai moderation bukan angka latensi universal. Hardware dapat menafsirkan nilai timer secara berbeda, algoritma adaptif dapat mengubahnya, dan host dapat menambahkan scheduling delay setelah interrupt dikirim.
ethtool mengekspos kontrol yang bergantung pada perangkat
Di Linux, parameter interrupt coalescing yang didukung sering dapat diperiksa dengan:
ethtool -c eth0Perangkat yang mengizinkan perubahan dapat menerima setting seperti:
sudo ethtool -C eth0 rx-usecs 20Ketersediaan, nama, rentang valid, dan efek parameter bergantung pada driver serta NIC. Nilai yang diterima satu adapter tidak dapat dianggap valid atau setara pada adapter lain. Sebagian driver juga mendukung adaptive receive atau transmit coalescing.
Aktivitas interrupt saat ini dapat diperiksa secara terpisah:
cat /proc/interruptsCounter per-queue, statistik driver, dan pengukuran latensi aplikasi memberikan sudut pandang berbeda. Tidak satu pun dari data tersebut secara terpisah membuktikan moderation sebagai faktor pembatas.
Tuning merupakan tradeoff workload
Bulk transfer, packet forwarding, RPC, storage-over-network, dan traffic interaktif dapat memberi bobot berbeda pada efisiensi CPU dan notification delay. Konfigurasi yang sesuai untuk data path jenuh dapat merugikan service sensitif latensi dengan request yang jarang.
Perbandingan yang relevan harus spesifik terhadap workload: CPU time, interrupt rate, distribusi queue, packet rate, tail latency, dan throughput perlu diukur bersama. Default driver umumnya menjadi kompromi serbaguna, sedangkan mode adaptif mencoba menggeser kompromi tersebut saat traffic berubah.
Interrupt moderation pada akhirnya adalah kebijakan notifikasi. NIC dapat menyelesaikan DMA terkait paket sebelum memberi sinyal ke CPU, dan batching sinyal tersebut dapat mengurangi overhead host. Konsekuensinya, software dapat melihat pekerjaan yang selesai lebih lambat, dengan keseimbangan praktis ditentukan oleh adapter, driver, state queue, dan workload.