请问:如何将CPU1上面所有任务全部移到CPU0上来运行?
如题,请问如何将CPU1上面所有任务全部移到CPU0上来运行?有什么OpenSource的Tool吗? 回复 1# jian9158101
“所有”指的范围有多大?
内核的服务线程算吗?
用户态Taskset命令有可以用呀。cgroup 的cpuset子系统也可以用。
对,包括内核线程跟用户进程,我来试试看哦,谢谢 我的CPU是双核的,当我用echo 0 > /sys/devices/system/cpu/cpu1/online将CPU1 Down掉后,用TOP查看状态发现所有的CPU内核线程原本在CPU1上的,都移到了CPU0,而原本在CPU1的用户进程则全部睡眠
我在想有什么办法可以将用户进程也全部移到CPU0上,然后在Down掉CPU1,用taskset貌似只能一个一个的设定比较不方便
回复 2# Tinnal
自己顶下:))求达人帮忙~ jian9158101 发表于 2015-01-21 09:31 static/image/common/back.gif
我的CPU是双核的,当我用echo 0 > /sys/devices/system/cpu/cpu1/online将CPU1 Down掉后,用TOP查看状态发现 ...
貌似会自动迁移到其它cpu的。你看看其它进程当前运行的核是哪一个?这些进程默认就是S状态吧? 回复 4# jian9158101
我的CPU是双核的,当我用echo 0 > /sys/devices/system/cpu/cpu1/online将CPU1 Down掉后,用TOP查看状态发现所有的CPU内核线程原本在CPU1上的,都移到了CPU0,而原本在CPU1的用户进程则全部睡眠
我在想有什么办法可以将用户进程也全部移到CPU0上,然后在Down掉CPU1,用taskset貌似只能一个一个的设定比较不方便
你确定CPU1的用户进程睡眠了?cpu offline的时候是不区分用户进程的,所有的进程都会迁移到其他CPU上的。
echo "0" > /sys/devices/system/cpu/cpu1/online 对应的内核代码如下:
static SYSDEV_ATTR(online, 0644, show_online, store_online);
store_online-->cpu_down-->_cpu_down-->__cpu_notify-->....
-->__stop_machine-->stop_cpus-->__stop_cpus-->stop_machine_cpu_stop-->take_cpu_down-->__cpu_disable-->native_cpu_disable-->cpu_disable_common.... 回复 6# humjb_1983
1. 看kernel doc下面的cpu-hotplug说是会自动迁移的~
2. 是S状态,比较top -b dump出来的所有task状态,有些用户进程迁移到了CPU0,有些没有,内核线程也是
回复 7# 瀚海书香
确定啊,看了下cat /proc/interrupts,只显示CPU0
jian9158101 发表于 2015-01-22 11:37 static/image/common/back.gif
回复 6# humjb_1983
1. 看kernel doc下面的cpu-hotplug说是会自动迁移的~
2. 是S状态,比较top -b dump出 ...
结果发来看看吧,谢谢!