我怎么知道irqbalance是否在做什么?

我已经研究过Linux服务器调优文档,提到在SMP系统上安装irqbalance( http://www.irqbalance.org/ )。 我现在正在四核系统上查看,而“ps axf”可以告诉我它正在运行,但是如果/如何影响系统,我没有看到任何types的统计信息。

任何人都知道在哪里看?

在源代码中他们引用/ proc几次。 也许你会在那里find你的答案。 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"); 

您可以通过执行cat / proc / interrupts来获得是否正在执行任何操作的一般信息,并查看您正在尝试隔离的进程是否正在创build应该运行高优先级进程的处理器上的中断。

根据evildeed的回答,运行sudo cat /proc/irq/*/smp_affinity告诉你。 如果你感到厌倦,那么应该是一个答案。

由于输出是位掩码的整数变换,所以对于非程序员types可能很难理解。

例如:

  • 绑定到cpu0 – 1
  • 绑定到cpu1 – 2
  • 绑定到cpu0和/或cpu1 – 3
  • 绑定到cpu3,4,7 – 282