6 votes

Comment puis-je savoir si irqbalance fait quelque chose ?

J'ai regardé dans les docs de tuning des serveurs linux qui mentionnent l'installation de irqbalance ( http://www.irqbalance.org/ ) sur des systèmes SMP. Je le regarde maintenant sur un système à quatre cœurs, et bien que "ps axf" puisse me dire qu'il est en cours d'exécution, je ne vois pas de statistiques ou d'informations d'aucune sorte sur si/comment il a affecté le système.

Quelqu'un sait où chercher ?

5voto

Steve Scheffler Points 1166

Basé sur la réponse de evildeed qui court sudo cat /proc/irq/*/smp_affinity devrait vous le dire. Si vous obtenez plus d'une réponse, cela doit fonctionner.

Comme la sortie est une transformation entière d'un masque de bits, elle peut être difficile à comprendre pour les non-programmeurs.

eg :

  • Lié à cpu0 - 1
  • Lié à cpu1 - 2
  • Lié à cpu0 et/ou cpu1 - 3
  • Lié à cpu3,4,7 - 282

4voto

Ashlocke Points 478

Vous pouvez avoir une idée générale de ce qu'il fait en faisant cat /proc/interrupts et en voyant si les processus que vous essayez d'isoler créent des interruptions sur les processeurs qui sont censés exécuter votre processus prioritaire.

3voto

shin Points 523

Dans le code source, ils font référence à /proc plusieurs fois. Vous y trouverez peut-être vos réponses. root@[/usr/local/src/irqbalance-0.55]egrep -ri "proc|sys" *

activate.c:                     sprintf(buf, "/proc/irq/%i/smp_affinity", irq->number);
cpumask.h: * set of CPU's in a system, one bit position per CPU number.
cpumask.h: * The following particular system cpumasks and operations manage
cpumask.h: *  be plugged in at anytime during the life of that system boot.
cpumask.h:int highest_possible_processor_id(void);
cputree.c: * This file contains the code to construct and manipulate a hierarchy of processors,
cputree.c: * cache domains and processor cores.
cputree.c:#include <sys/types.h>
cputree.c:      dir = opendir("/sys/devices/system/cpu");
cputree.c:                      sprintf(new_path, "/sys/devices/system/cpu/%s", entry->d_name);
irqbalance.c:#include <sys/time.h>
irqbalance.c:   /* On single core UP systems irqbalance obviously has no work to do */
irqbalance.c:   /* On dual core/hyperthreading shared cache systems just do a one shot setup */
irqbalance.c:   parse_proc_interrupts();
irqbalance.c:   parse_proc_interrupts();
irqbalance.c:           parse_proc_interrupts();
irqbalance.c:           /* cope with cpu hotplug -- detected during /proc/interrupts parsing */
irqbalance.h:extern void parse_proc_interrupts(void);
irqlist.c:#include <sys/types.h>
irqlist.c: * This function classifies and reads various things from /proc about a specific irq
irqlist.c:      sprintf(buf, "/proc/irq/%i", number);
irqlist.c:                      sprintf(buf, "/proc/irq/%i/smp_affinity", number);
Makefile:LIBS=bitmap.o irqbalance.o cputree.o  procinterrupts.o irqlist.o placement.o activate.o network.o powermode.o numa.o classify.o
network.c:#include <sys/ioctl.h>
network.c:        sprintf(buffer,"/sys/bus/pci/devices/%s/irq", driver.bus_info);
network.c:      file = fopen("/proc/net/dev", "r");
numa.c:#include <sys/types.h>
numa.c: dir = opendir("/sys/bus/pci/devices");
numa.c:         sprintf(line,"/sys/bus/pci/devices/%s/irq", entry->d_name);
numa.c:         sprintf(line,"/sys/bus/pci/devices/%s/class", entry->d_name);
numa.c:         sprintf(line,"/sys/bus/pci/devices/%s/local_cpus", entry->d_name);
numa.c: * Ethernet gets the type via /proc/net/dev; in addition down'd interfaces
powermode.c:    file = fopen("/proc/stat", "r");
powermode.c:    dummy = strtoull(c, &c, 10); /* system */
procinterrupts.c:void parse_proc_interrupts(void)
procinterrupts.c:       file = fopen("/proc/interrupts", "r");

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X