Apakah masih ada gunanya irqbalance pada perangkat keras modern?

39

Pertanyaan ini telah diajukan sebelumnya, tetapi saya percaya bahwa dunia telah cukup berubah untuk ditanyakan lagi.

Apakah irqbalance ada gunanya pada sistem saat ini di mana kita memiliki CPU yang mampu NUMA dengan berbagi memori antara inti mereka?

Menjalankan irqbalance --oneshot --debugmenunjukkan bahwa tamu virtual di lingkungan VMware ESXi modern berbagi NUMA node antara core.

# irqbalance --oneshot --debug 3
Package 0:  numa_node is 0 cpu mask is 0000000f (load 0)
    Cache domain 0:  numa_node is 0 cpu mask is 0000000f  (load 0)
            CPU number 0  numa_node is 0 (load 0)           
            CPU number 1  numa_node is 0 (load 0)
            CPU number 2  numa_node is 0 (load 0)
            CPU number 3  numa_node is 0 (load 0)

irqbalance dalam hal ini akan mendeteksi bahwa ia sedang dijalankan pada sistem NUMA, dan keluar. Ini mengacaukan pemantauan proses kami.

Haruskah kita melihat menjalankan numad bukan irqbalance pada sistem seperti itu?

Ini sebagian besar menarik untuk server virtual VMware.

espenfjo
sumber

Jawaban:

27

Berikut ini satu jawaban dari seorang teknisi di RedHat. Meskipun saya percaya bahwa sebagian besar perangkat keras perusahaan mampu NUMA. Dan sejauh yang saya tahu VMware juga akan mencoba untuk menyesuaikan VMs Anda pada node NUMA yang sama selama konfigurasi CPU-nya cocok.

Pengalaman (Khususnya tentang VMware) akan sangat dihargai.

Ini benar "karena" server modern. Perlu diingat bahwa Multi-CPU / Muli-Core tidak sama dengan NUMA. Ada banyak sistem Multi-CPU / Core yang tidak memiliki NUMA.

Sebelum membaca penjelasan saya di bawah ini, silakan baca dokumen IRQ Affinity di atas, serta panduan berikut:

RHEL 6 Panduan Penyesuaian Kinerja

Penyesuaian Kinerja Latensi Rendah untuk RHEL 6

Sudah membaca semua itu? Hebat, Anda tidak perlu mendengar apa-apa lagi dari saya! ;-) Tapi kalau-kalau Anda tidak sabar, inilah mengapa Anda menginginkannya ...

IRQbalance menjaga semua permintaan IRQ dari membuat cadangan pada satu CPU. Saya telah melihat banyak sistem dengan 4+ core CPU berkinerja lambat karena semua proses pada berbagai CPU sedang menunggu pada CPU 0 untuk memproses permintaan IRQ jaringan atau penyimpanan. CPU 0 terlihat sangat, sangat sibuk, semua CPU lainnya tidak sibuk, namun aplikasinya sangat lambat. Aplikasi lambat karena mereka menunggu permintaan IO mereka dari CPU 0.

IRQbalance mencoba menyeimbangkan ini dengan cara yang cerdas di semua CPU dan, jika memungkinkan, menempatkan pemrosesan IRQ sedekat mungkin dengan proses. Ini mungkin inti yang sama, inti pada die yang sama berbagi cache yang sama, atau inti di zona NUMA yang sama.

Anda harus menggunakan irqbalance kecuali:

Anda menyematkan aplikasi / IRQ secara manual ke inti tertentu untuk alasan yang sangat bagus (latensi rendah, persyaratan waktu nyata, dll.)

Tamu Virtual. Ini tidak terlalu masuk akal karena kecuali jika Anda menjepit tamu ke CPU dan IRQ tertentu dan perangkat keras penyimpanan / penyimpanan khusus, Anda kemungkinan tidak akan melihat manfaat yang akan Anda dapatkan pada bare metal. Tapi host KVM / RHEV Anda HARUS menggunakan irqbalance dan numad dan disetel .

Alat penyetelan lain yang sangat penting adalah profil yang disetel dan numad. Baca tentang mereka! Gunakan mereka!

Numad mirip dengan irqbalance karena mencoba memastikan bahwa suatu proses dan memorinya berada di zona numa yang sama. Dengan banyak core, kami melihat pengurangan yang signifikan pada latensi yang menghasilkan kinerja yang jauh lebih lancar dan lancar di bawah beban.

Jika Anda terampil, rajin, dan memantau secara teratur atau memiliki beban kerja yang sangat mudah ditebak, Anda mungkin mendapatkan kinerja yang lebih baik dengan secara manual menyematkan proses / IRQ ke CPU. Bahkan dalam situasi ini, irqbalance dan numad nyaris cocok. Tetapi jika Anda tidak yakin atau beban kerja Anda tidak dapat diprediksi, Anda harus menggunakan irqbalance dan numad.

espenfjo
sumber
5
FWIW, beberapa manual 10GbE merekomendasikan menonaktifkan irqbalance untuk mendapatkan throughput yang lebih baik ...
rogerdpack
8
Untuk mendapatkan jumlah maksimum absolut yang cocok dengan angka tolok ukur mereka, ya, Anda harus menghubungkan semuanya dengan cara tertentu, tetapi tolok ukur ini umumnya tidak cocok dengan beban kerja kehidupan nyata. Jika Anda memiliki SATU aplikasi yang berjalan di server dengan persyaratan yang sangat latensi sensitif dalam pola penggunaan yang sangat mudah diprediksi, baiklah, silakan dan secara manual mengkonfigurasi afinitas prosesor untuk berbagai hal. Tetapi jika aplikasi lebih merupakan kasus penggunaan dunia nyata di mana berbagai hal dapat bervariasi pada berbagai proses dan beban, saya setuju dengan teknologi Red Hat. Linux NUMA balancing berjalan dengan baik.
GeorgeB