irqbalance è un demone Linux che distribuisce gli interrupt tra i processori e i core del tuo computer. L'obiettivo di progettazione di irqbalance è trovare un equilibrio tra risparmio energetico e prestazioni ottimali. In larga misura, il lavoro svolto da irqbalance è invisibile per te. Il demone bilancia il risparmio di consumo energetico con le prestazioni.
irqbalance è rilevante sui sistemi multiprocessore x86, x86_64 e AMD. Il file di configurazione di irqbalance /etc/sysconfig/irqbalance permette di selezionare a quali CPU possono essere assegnate quali interrupt. Di seguito è riportato un file di configurazione di esempio dal sistema RHEL 7.
# cat /etc/sysconfig/irqbalance # irqbalance is a daemon process that distributes interrupts across # CPUS on SMP systems. The default is to rebalance once every 10 # seconds. This is the environment file that is specified to systemd via the # EnvironmentFile key in the service unit file (or via whatever method the init # system you're using has. # # ONESHOT=yes # after starting, wait for a minute, then look at the interrupt # load and balance it once; after balancing exit and do not change # it again. #IRQBALANCE_ONESHOT= # # IRQBALANCE_BANNED_CPUS # 64 bit bitmask which allows you to indicate which cpu's should # be skipped when reblancing irqs. Cpu numbers which have their # corresponding bits set to one in this mask will not have any # irq's assigned to them on rebalance # #IRQBALANCE_BANNED_CPUS= # # IRQBALANCE_ARGS # append any args here to the irqbalance daemon as documented in the man page # #IRQBALANCE_ARGS=
Gli elementi configurabili sono discussi di seguito:
Parametro | Predefinito | Descrizione |
---|---|---|
ONESHOT | NO | Dopo che il sistema è stato in esecuzione per 10 secondi, regola le assegnazioni del servizio di interruzione una volta e poi esci. |
IRQ_AFFINITY_MASK | vuoto | Una maschera di bit i cui 1 bit indicano quali CPU devono essere ignorate durante il bilanciamento delle richieste di interrupt. Ciò consente a un determinato set di CPU di non essere disturbato da alcun carico del servizio di interrupt. Questa impostazione è solo per la compatibilità legacy; usa invece IRQBALANCE_BANNED_CPUS. |
IRQBALANCE_BANNED_INTERRUPTS | vuoto | Un elenco delimitato da spazi dei livelli di richiesta di interruzione che irqbalance dovrebbe ignorare durante il bilanciamento. Ciò consente di mantenere un interrupt sulla stessa CPU; questo può migliorare le prestazioni aumentando la probabilità che il codice e il contesto del servizio di interrupt vengano mantenuti nella memoria cache ad alta velocità della CPU ed evitando costosi aggiornamenti della linea della cache. |
IRQBALANCE_BANNED_CPUS | vuoto | Una maschera di bit i cui 1 bit indicano quelle CPU a cui non dovrebbe mai essere assegnato un servizio di interrupt. Ciò può migliorare le prestazioni rimuovendo l'overhead del servizio di interrupt, in particolare i ricaricamenti della cache della CPU L1 e L2. |
Dettagli del servizio
– Posizione dello script Init.d -> /etc/init.d/irqbalance
– Esempio di “chkconfig –list [servizio]”
# chkconfig --list irqbalance irqbalance 0:off 1:off 2:on 3:on 4:on 5:on 6:off
– Opzioni di utilizzo del servizio disponibili:
# service irqbalance Usage: /etc/init.d/irqbalance {start|stop|status|restart|reload|condrestart}
# service irqbalance start Starting irqbalance: [ OK ]
# service irqbalance stop Stopping irqbalance: [ OK ]
# service irqbalance status irqbalance (pid 14857) is running...
# service irqbalance restart Stopping irqbalance: [ OK ] Starting irqbalance: [ OK ]
# service irqbalance reload Stopping irqbalance: [ OK ] Starting irqbalance: [ OK ]
# service irqbalance condrestart
– Quali demoni esegue:/usr/sbin/irqbalance
– Quali moduli carica:nessuno
Altre informazioni
– Pacchetti RPM:irqbalance-[versione]-[versione]
es:irqbalance-1.0.4-10.el6.x86_64
– File di configurazione:/etc/sysconfig/irqbalance
– Homepage del progetto:https://github.com/Irqbalance/irqbalance
Quando non utilizzare
Nella maggior parte delle volte, il servizio irqbalance è abilitato e dovrebbe essere utilizzato a meno che:
- Aggiungere manualmente app/IRQ a core specifici per un'ottima ragione (bassa latenza, requisiti in tempo reale, ecc.)
- Ospiti virtuali. Non ha davvero senso perché, a meno che tu non stia bloccando il guest su CPU e IRQ specifici e hardware di rete/storage dedicato, probabilmente non vedrai i vantaggi che avresti sul bare metal.