作为序言,我在 AMD64 芯片组上使用带有内核 3.2 的 Debian Wheezy。我的机器有两个至强 E5-2690 内核。我设置了启动参数,以便一个 CPU 上的所有内核专用于单个进程。为此,我在 grub 中设置了 isolcpus=8,9,10,11,12,13,14,15。
到现在为止还挺好。现在假设我想对给定命令使用隔离的 CPU,简单地说,我将使用一个简单的无限循环:
$ taskset -c 8-15 bash -c 'while true ; 做回声你好>/dev/null; 完毕' &
到目前为止一切顺利,top 表明核心 8 的利用率接近 100%。现在假设我再次启动该命令:
$ taskset -c 8-15 bash -c 'while true ; 做回声你好>/dev/null; 完毕' &
现在 top 显示内核 9-15 保持空闲并且两个进程共享内核 8。如果相反,我这样做:
$ taskset -c 8 bash -c 'while true ; 做回声你好>/dev/null; 完毕' &
$ taskset -c 9 bash -c 'while true ; 做回声你好>/dev/null; 完毕' &
核心 8 和 9 各获得 …