我定义了一个cpuset来包含这个系统上的24个CPU中的12个。
我把一个过程放进去。 / proc / PID / cpuset给出正确的答案。
top -p PID,后面跟1,显示CPU中不在集合中的大量CPU时间。
另外一个奇怪的情况是CPU时间以%ni代替%us显示,即使没有重新启动。
Ubuntu 11.10是一款采用英特尔(R)至强(R)CPU X5680 @ 3.33GHz芯片的双插槽机器。
编辑
我不好意思,我在这里有四个sockets。
这不是一个4sockets机器,对不起,56xx系列芯片只有双插槽。
X5680具有六个超线程核心,可以configurationNUMA中的另外一个X5680,所以在Linux(2 * 6 * 2)中会显示24个CPU。
U11默认具有HT和NUMA感知的内核,所以除非另有说明,否则会试图利用相同内核上的线程和死亡来确保有效的L2cachingpipe理。
我不太清楚你使用cpusets所要做的是什么,因为这样做有更多的机会来错误地configuration性能,而不是把它放到内核上 – 你试图达到什么目的?
下载压力工具并在您感兴趣testing的CPU屏蔽/集合内运行。 类似于stress -c 12会在12个CPU上产生负载。 它应该在您的发行版的仓库中可用。
我很关心你对系统架构的陈述。 英特尔X5680 CPU是6核CPU,仅在双插槽configuration中可用。 你确定你有4个sockets吗? 有没有可能只是简单地启用超线程来让24核处于top ? 如果是这样,你在cpuset中看到的结果是倾斜的。
你真的有12个处理器。 如果这是您希望进行确定性处理的任何types的关键应用程序,则应禁用“超线程”并使用物理CPU内核。 这意味着你的私人空间必须更小。