免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9876 | 回复: 17
打印 上一主题 下一主题

[进程管理] 进程A在CPU0上,CPU占用率99%;进程B在CPU1上,占用率20%,为何进程B还会被调度到CPU0 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-12 00:09 |只看该作者 |倒序浏览
本帖最后由 lofeng410 于 2012-09-13 00:34 编辑

进程A在CPU0上,CPU占用率99%;进程B在CPU1上,占用率20%,为何进程B还会被调度到CPU0上呢?
进程A是读flash,大块的读,大概5M级别;
而进程B是收发包,这样调度后导致进程B抢不到CPU,进而丢包。

为何CPU调度会出现这个状况呢?
CPU1的负载也只有20%左右,CPU2 CPU3基本上都是空闲,却将CPU1上唯一使用CPU的进程调度到最繁忙的CPU上,很想不通。

补充信息:
进程B设置为实时进程,进程A陷入到内核态后,使用了spin_lock,然后做memcpy,持续时间大概为1-2s。在这个期间,进程B无法抢到CPU。
我觉得问题的根本在于调度算法不应该将进程B调度到CPU0上。
怎样才能避免这点呢?

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2012-09-12 07:40 |只看该作者
回复 1# lofeng410
进程A在CPU0上,CPU占用率99%;进程A在CPU1上,占用率20%,为何进程B还会被调度到CPU0上呢?


没搞明白lz说的什么啊?
你的进程A不可能同时在两个CPU上(除非用多线程),如果A被调度到CPU1上,那么B就有可能调度到CPU0上啊。
   

论坛徽章:
0
3 [报告]
发表于 2012-09-12 09:17 |只看该作者
回复 2# 瀚海书香


  版主,很抱歉,后面说的有点晕了,现在已经修改过来

论坛徽章:
0
4 [报告]
发表于 2012-09-12 09:24 |只看该作者
内核版本为2.6.32

论坛徽章:
0
5 [报告]
发表于 2012-09-12 16:17 |只看该作者
楼主这个问题挺有意思的,看看有没有高手解答。

论坛徽章:
0
6 [报告]
发表于 2012-09-12 22:07 |只看该作者
非实时进程的调度不是均衡CPU占用率,也就是会出现一个CPU忙死,其他CPU嫌死的情况。

论坛徽章:
0
7 [报告]
发表于 2012-09-13 00:30 |只看该作者
回复 6# wyyzxml
1.这里的进程B为实时进程
2.如何才能避免这个现象呢?2.6.32内核中调度算法已经是cfq了


   

论坛徽章:
0
8 [报告]
发表于 2012-09-13 10:20 |只看该作者
设置  进程的cpu亲和性应该就可以了
参考
http://www.vpsee.com/2010/07/process-balancing-with-cpu-affinity/

其实用 cgroup应该也可以,不过不知道你那个版本的系统有cgroup可以用没有,如果有我觉得用cgroup更好一些吧

论坛徽章:
0
9 [报告]
发表于 2012-09-13 10:34 |只看该作者
你说的是cpu上面进程的调度的问题,这个应该是说的 “ CFS 完全公平调度器” 吧?

那个 cfq是 磁盘 io调度的啊, 不过听说 flash磁盘上面使用 cfq确实没什么优势,好像说用noop更好些。我也不知道是不是

论坛徽章:
0
10 [报告]
发表于 2012-09-13 13:13 |只看该作者
static cpumask_t affinity_set(unsigned int cpu)
{
        cpumask_t oldmask = current->cpus_allowed;
        cpumask_t newmask = CPU_MASK_NONE;
        cpu_set(cpu, newmask);
        set_cpus_allowed(current, newmask);
        return oldmask;
}
把B的限制到CPU1 上
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP