我正在运行一个测试程序,它生成大量线程和异步 I/O。我在 /proc/interrupts 中看到这些中断的数量非常多,程序无法扩展超过某个点,因为 CPU 的软中断处理已 100% 饱和。
根据: http: //www.kernel.org/doc/man-pages/online/pages/man5/proc.5.html CAL代表“远程函数调用中断”,但这就是我在谷歌上可以找到的所有信息。那么...这是什么意思?我为我的 I/O 适配器卡分配了 smp_affinity,这些适配器卡不是占用大量 CAL 中断的 CPU。这是否表明我的程序正在以不正确的 SMP 亲和力运行?
我正在运行 VirtualBox(使用 Qiime 图像http://qiime.org/install/virtual_box.html)
物理硬件是一台 32 核的机器。VirtualBox 中的虚拟机拥有 16 个内核。
启动时我得到:
Ubuntu 10.04.1 LTS
Linux 2.6.38-15-server
# grep . /sys/devices/system/cpu/*
/sys/devices/system/cpu/kernel_max:255
/sys/devices/system/cpu/offline:1-15
/sys/devices/system/cpu/online:0
/sys/devices/system/cpu/possible:0-15
/sys/devices/system/cpu/present:0
/sys/devices/system/cpu/sched_mc_power_savings:0
# ls /sys/kernel/debug/tracing/per_cpu/
cpu0 cpu1 cpu10 cpu11 cpu12 cpu13 cpu14 cpu15 cpu2 cpu3 cpu4 cpu5 cpu6 cpu7 cpu8 cpu9
# ls /sys/devices/system/cpu/
cpu0 cpufreq cpuidle kernel_max offline online possible present probe release sched_mc_power_savings
# echo 1 > /sys/devices/system/cpu/cpu6/online
-su: /sys/devices/system/cpu/cpu6/online: No such file or directory
Run Code Online (Sandbox Code Playgroud)
所以看起来它检测了16个CPU的资源,但它只设置了一个在线。
我已经用另一个镜像进行了测试,VirtualBox 主机可以运行一个 16 核的来宾。那个有效。所以问题是麻烦拍摄 Qiime 图像以找出为什么这个访客图像只检测到 …
我必须永久更改中断的 smp_affinity。服务器重启时需要执行以下代码:
echo "1" > /proc/irq/152/smp_affinity_list
echo "2" > /proc/irq/151/smp_affinity_list
echo "3" > /proc/irq/150/smp_affinity_list
echo "4" > /proc/irq/149/smp_affinity_list
echo "5" > /proc/irq/148/smp_affinity_list
echo "6" > /proc/irq/147/smp_affinity_list
echo "7" > /proc/irq/146/smp_affinity_list
echo "8" > /proc/irq/145/smp_affinity_list
echo "9" > /proc/irq/144/smp_affinity_list
echo "10" > /proc/irq/143/smp_affinity_list
echo "11" > /proc/irq/142/smp_affinity_list
echo "12" > /proc/irq/141/smp_affinity_list
echo "13" > /proc/irq/140/smp_affinity_list
echo "14" > /proc/irq/139/smp_affinity_list
echo "15" > /proc/irq/138/smp_affinity_list
echo "16" > /proc/irq/137/smp_affinity_list
Run Code Online (Sandbox Code Playgroud)
我已将这些行添加到 /etc/rc.local 文件中,但更改并未应用于系统。我还添加了 echo "test" > /root/test ,它被正确执行,所以 rc.local 文件被执行。系统运行的是 Debian 6.0。
“SMP 内核现在可以在多达 64 个内核的机器上启动;”
那么 OpenBSD 确实支持多个 CPU/内核吗?
如果我的笔记本电脑 (t7100) 中有 Core2Duo cpu,那么如果我使用“SMP”内核会带来更高的性能吗?
如果这是真的,那么我如何在 OpenBSD 4.9 下安装/使用 SMP 内核?
smp ×4
interrupt ×2
cpu ×1
debian ×1
hot-plug ×1
kernel ×1
openbsd ×1
performance ×1
rhel ×1
virtualbox ×1