Artikel ini menyenaraikan empat enjin koleksi paket Linux klasik Jika ada yang lain yang anda rasa OK, anda boleh meninggalkan mesej. Empat ini ialah:
"Salinan keempat hilang"), mengurangkan panggilan sistem yang kerap dan meningkatkan kecekapan penangkapan paket. Kami melihat bahawa libpcap mempunyai 4 salinan memori sebelum ini. libpcap_mmap mempunyai 3 salinan memori. Penyelesaian teras yang dicadangkan oleh PF_RING adalah untuk mengurangkan bilangan salinan mesej semasa penghantaran. Kita dapat lihat bahawa berbanding libpcap_mmap, pfring membenarkan memori ruang pengguna untuk mmap terus dengan rx_buffer. Ini mengurangkan satu lagi salinan ( "Salinan kedua libpcap_mmap" : rx_buffer->skb) PF-RING ZC melaksanakan teknologi DNA (Direct NIC Access direct network card access) untuk memetakan ruang memori pengguna ke memori pemandu ruang supaya aplikasi pengguna boleh terus mengakses daftar dan data kad rangkaian. Dengan cara ini, penimbalan paket data dalam kernel dielakkan dan satu salinan dikurangkan ("Salinan pertama libpcap", DMA kepada salinan penimbal kernel). Ini adalah salinan sifar sepenuhnya. Kelemahannya ialah hanya satu aplikasi boleh membuka gelang DMA pada satu masa (perhatikan bahawa kad rangkaian hari ini boleh mempunyai berbilang baris gilir RX/TX, membenarkan satu aplikasi berada pada setiap baris gilir pada masa yang sama), dengan kata lain Ringkasnya , berbilang aplikasi dalam mod pengguna perlu berkomunikasi antara satu sama lain untuk mengedarkan paket data. pf-ring zc dan dpdk kedua-duanya boleh mencapai sifar salinan paket data Kedua-duanya memintas kernel, tetapi prinsip pelaksanaannya berbeza sedikit. PF-ring zc mengambil alih paket data melalui pemacu zc (juga pada lapisan aplikasi), dan dpdk dilaksanakan berdasarkan UIO. UIO (Userspace I/O) ialah teknologi I/O yang berjalan dalam ruang pengguna. Peranti pemacu am dalam sistem Linux dijalankan dalam ruang kernel dan boleh dipanggil oleh aplikasi dalam ruang pengguna Walau bagaimanapun, UIO menjalankan sebahagian kecil pemacu dalam ruang kernel dan melaksanakan sebahagian besar pemacu dalam ruang pengguna. Menggunakan mekanisme UIO yang disediakan oleh Linux, Kernel boleh dipintas dan semua kerja pemprosesan paket selesai dalam ruang pengguna. Sekat pemacu UIO DPDK yang dikeluarkan oleh perkakasan, dan kemudian menggunakan tinjauan aktif dalam mod pengguna Mod ini dipanggil PMD (Pemacu Mod Tinjauan). Berbanding dengan DPDK, pf-ring (tiada zc) menggunakan tinjauan NAPI dan tinjauan lapisan aplikasi, manakala pf-ring zc adalah serupa dengan DPDK dan hanya menggunakan tinjauan lapisan aplikasi. Selepas pengenalan MMU (Memory Management Unit) dalam sistem pengendalian, CPU perlu mengakses memori dua kali untuk membaca data memori. Kali pertama adalah untuk menanyakan jadual halaman untuk menukar alamat logik kepada alamat fizikal, dan kemudian mengakses alamat fizikal untuk membaca data atau arahan. Untuk mengurangkan masalah masa pertanyaan yang panjang yang disebabkan oleh terlalu banyak halaman dan jadual halaman yang terlalu besar, TLB (Translation Lookaside Buffer) telah diperkenalkan, yang boleh diterjemahkan sebagai penimbal terjemahan alamat. TLB ialah unit pengurusan memori, biasanya disimpan dalam daftar, yang menyimpan sebahagian kecil daripada entri jadual halaman yang kemungkinan besar boleh diakses pada masa ini. Selepas TLB diperkenalkan, CPU akan mula-mula pergi ke TLB untuk menangani Memandangkan TLB disimpan dalam daftar dan mengandungi hanya sebahagian kecil daripada entri jadual halaman, kelajuan pertanyaan adalah sangat pantas. Jika pengalamatan dalam TLB berjaya (TLB hit), tidak perlu menanyakan jadual halaman dalam RAM jika pengalamatan dalam TLB gagal (TLB terlepas), anda perlu menanyakan jadual halaman dalam RAM akan dikemas kini ke dalam TLB. DPDK menggunakan HugePages, yang menyokong saiz halaman 2MB dan 1GB di bawah x86-64, yang sangat mengurangkan jumlah halaman dan saiz jadual halaman, sekali gus mengurangkan kebarangkalian kehilangan TLB dan meningkatkan prestasi menangani CPU. Satah pemprosesan data, xdp mencipta satah pantas data dalam lapisan pemacu. Paket data diproses sebelum data dma'd oleh perkakasan kad rangkaian ke dalam memori dan skb diperuntukkan. Sila ambil perhatian bahawa XDP tidak melakukan pintasan Kernel pada paket data, ia hanya melakukan sedikit pra-pemeriksaan terlebih dahulu. Berbanding DPDK, XDP mempunyai kelebihan berikut: Loadingan berasaskan XDPPF_RING
DPDK
1 UIO+mmap melaksanakan salinan sifar
2 UIO+PMD mengurangkan gangguan dan penukaran konteks CPU
3 HugePages Kurangkan TLB miss
4 Pengoptimuman lain
XDP
statistik
Atas ialah kandungan terperinci Beberapa enjin pengumpulan paket Linux klasik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!