Ubuntu'da IRQBALANCE_BANNED_CPUS ile donanım kesintilerini nasıl yasaklayabilirim?


9

Belirli CPU'lardan kesintileri yasaklamak istiyorum. IRQBALANCE_BANNED_CPUS seçeneğini duydum. Görüyorum ki irqbalance makinemin arka planında çalışıyor. Düzenlemeye nereye gideceğim ve bu seçeneği nasıl yapılandırabilirim? Örneğin, cpus 2,3,4,5'i kesintilerden hariç tutmak istiyorum. Bağımsız değişken tanımlayıcısı :

İrqbalance'in görmezden gelmesi gereken ve asla kesinti atamayan bir cpus maskesi

Bir maske ile ne anlama geliyor? Ve bu seçeneği kullanarak dengesizliği nerede yapılandırabilirim?

EDIT1: Yapılandırmamın etkin olduğunu, başka bir deyişle CPU'mda NO kesinti aldığını nasıl öğrenebilirim ? Kontrol ediyorum / proc / kesintiler ama bazı sayılar orada artıyor.

EDIT2: Şimdi makinemi IRQBALANCE_BANNED_CPUS = 3e ile önyükledim, bu yüzden sadece CPU 0 kesintilere karşı yasak DEĞİLDİR. Bu yüzden, cpo0'ın çok fazla kesinti aldığını ve diğer cpus'un kesinti almadığını görmeliyim, değil mi? İşte benim / proc / kesintilerim. Kalın harfli satırlar ALL cpus için değişiyor. 22, 24, 35 ve LOC hatları değişiyor.

            CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       
   0:         26          0          0          0          0          0   IO-APIC-edge      timer
   1:          2          0          0          0          0          0   IO-APIC-edge      i8042
   6:          3          0          0          0          0          0   IO-APIC-edge      floppy
   8:          1          0          0          0          0          0   IO-APIC-edge      rtc0
   9:          0          0          0          0          0          0   IO-APIC-fasteoi   acpi
  12:          4          0          0          0          0          0   IO-APIC-edge      i8042
  14:      13556          0          0          0          0          0   IO-APIC-edge      ata_piix
  15:          0          0          0          0          0          0   IO-APIC-edge      ata_piix
  18:          0          0          0          0          0          0   IO-APIC-fasteoi   ata_piix
  19:          2          0          0          0          0          0   IO-APIC-fasteoi   ohci1394
  20:          3          0          0          0          0          0   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb3, uhci_hcd:usb6
  21:        197        635         39          0          0          0   IO-APIC-fasteoi   uhci_hcd:usb4, uhci_hcd:usb7, HDA Intel
  22:        344       3506          0        702          0          0   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8
  24:        162         48          0          0          0          0   IO-APIC-fasteoi   nvidia
  35:        174          0         47          0          0          0   IO-APIC-fasteoi   nvidia
  53:       3517          0          0          0          0          0   PCI-MSI-edge      eth0
 NMI:          0          0          0          0          0          0   Non-maskable interrupts
 LOC:      11007       8840       6480       5652       4272       3046   Local timer interrupts
 SPU:          0          0          0          0          0          0   Spurious interrupts
 PMI:          0          0          0          0          0          0   Performance monitoring interrupts
 PND:          0          0          0          0          0          0   Performance pending work
 RES:        292        169        217        125        122        126   Rescheduling interrupts
 CAL:         86        280        254        292        293        291   Function call interrupts
 TLB:       1147       1031       1348        616        177        322   TLB shootdowns
 TRM:          0          0          0          0          0          0   Thermal event interrupts
 THR:          0          0          0          0          0          0   Threshold APIC interrupts
 MCE:          0          0          0          0          0          0   Machine check exceptions
 MCP:          2          2          2          2          2          2   Machine check polls
 ERR:          5
 MIS:          0

EDIT3: Görünüşe göre IRQBALANCE_BANNED_CPUS seçeneği Ubuntu'da tamamen IGNORED . 1, 3e ile makinemi yeniden başlatmayı denedim ve her yerde kesintiler aldım. Ben sadece cpu0 ve başka hiçbir cpu temiz / proc / keser olsun ENABLED = 0 ayarlayarak irqbalance devre dışı bıraktığımda.

Yanıtlar:


7

Siz IRQBALANCE_BANNED_CPUS set / etc / default / irqbalance . Bunu /etc/init.d/irqbalance ifadesine bakarak buldum . Ancak bu ayar için geçerli değerler nelerdir? Red Hat'in adam sayfasından:

Bu, önde gelen '0x' içermeyen bir altıgen maskedir, çok sayıda işlemciye sahip sistemlerde sekiz onaltılık basamaklı her bir grup virgülle ayrılmıştır. örneğin export IRQBALANCE_BANNED_CPUS=fc0, irqbalance'ın 7.-12. cpus'a (cpu6-cpu11) export IRQBALANCE_BANNED_CPUS=ff000000,00000001irqs atamasını önleyecek veya irqbalance'in 1. (cpu0) ve 57.-64. cpus'a (cpu56-cpu63) irqbalance tahsis etmesini engelleyecektir.

Maske kavramı wikipedia açıklanmıştır. Bunu okuyun, sonra geri gelin. Red Hat'ın ilk örneğini yıkalım. Onaltılık olarak fc0 olarak yazılan sayı, ikili dosyaya 111111000000 olarak yazılır. (Yani sağdan sola Tarama en önemli bit için en anlamlı bit ), altı sıfır vardır. Bu, 1.-5. cpus'a (cpu0-cpu5) kesmeler atanabileceği anlamına gelir. Sonra altı tane var. Bu, 7.-12. Cpus (cpu6-cpu11) kesintilerinin atanmayacağı anlamına gelir.

Cpu0 ve cpu1'in kesintileri almasına izin vermek istiyor, ancak cpu2, cpu3, ​​cpu4 ve cpu5'in kesintilere atanmasını önlemek gibi görünüyor. Bu, iki sıfır ve dört tane veya 111100'e ihtiyacınız olduğu anlamına gelir. Bu, onaltılık olarak 3C'dir. Böylece, içeriklerle / etc / default / irqbalance oluşturursunuz

ENABLED="1"
ONESHOT="0"
IRQBALANCE_BANNED_CPUS="3f"

Neler olduğunu görmek için deneyin

$ sudo service irqbalance stop
Stopping SMP IRQ Balancer: irqbalance.
$ source /etc/default/irqbalance 
$ sudo irqbalance --debug

Açıklama için teşekkürler. Buradaki karışıklık: CPU-0'ı 6-cpu makinesinde BAN'a. Şunu mu kullanıyorum: 000001 (1) veya 111110 (3e). Birincisi, değil mi?
TraderJoeChicago

Lütfen orijinal sorudaki düzenlememi kontrol edin. Konfigürasyonumun çalıştığından ve cpu'mun kesilmekten yasaklandığından emin olmak için nasıl okunacağını / proc / kesmeleri bilmem gerekiyor. Teşekkürler!
TraderJoeChicago

Düzenleme numaram 3'e bakın: IRQBALANCE_BANNED_CPUS, maskeyi bozmadığımız sürece Ubuntu'da yer alıyor. Ama 1 ve 3e'yi hiç denemeden denedim. :(
TraderJoeChicago

Hata ayıklama düzenlemelerime bakın.
sciurus

2
HAYIR. Ubuntu 10.04.1 üzerinde çalışmadığını onaylayabilirim. Bu yapılandırma seçeneği IRQBALANCE_BANNED_CPUS = "1" yok sayılır.
TraderJoeChicago


0

Çalışması için yukarıdaki gibi 3c kullanmanız gerekir. Daha sonraki sürümler bunu otomatik olarak yapar (en az debian / sid üzerinde v 1.9 ile)


0

Yukarıdaki irqbalance sorunlarını giderme hakkındaki önerilere ekleme - irqbalance'ın çalıştırılmasından kaynaklanan kesme yakınlıklarını görüntülemek için yararlı bir komut:

find /proc/irq/ -name smp_affinity | xargs cat | less
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.