忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 35376 | 回复: 10

[内核入门] kworker 进程是何进程, top 看了下, 很占用系统时间,在那里屏蔽? [复制链接]

论坛徽章:
0
发表于 2014-06-19 15:32 |显示全部楼层
kworker 进程是何进程, top 看了下, 很占用系统时间,在那里屏蔽?

求职 : 系统工程师等
论坛徽章:
5
天蝎座
日期:2014-05-09 13:49:28技术图书徽章
日期:2014-04-19 22:01:05双子座
日期:2014-06-16 15:08:042015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:55:28
发表于 2014-06-19 15:49 |显示全部楼层
貌似跟电源管理有关。

论坛徽章:
0
发表于 2014-06-19 16:16 |显示全部楼层
workqueue的工作线程? 很多工作依赖这个线程吧 tty什么的

论坛徽章:
0
发表于 2014-06-19 17:41 |显示全部楼层
回复 3# chenyu105

内核为 linux-3.0.35, 好像以前没看到这个 进程呀


   

论坛徽章:
0
发表于 2014-06-19 17:42 |显示全部楼层
将电源管理部分关闭, 别的 象  ehci USB部件编译通不过

论坛徽章:
0
发表于 2014-06-19 17:51 |显示全部楼层
回复 2# qxhgd


    将电源管理部分关闭, 别的 象  ehci USB部件编译通不过

论坛徽章:
0
发表于 2014-06-20 08:11 |显示全部楼层
回复 4# pcl001

老的版本叫keventd,后来改名了吧。。
# cat /proc/328/stat
328 (kworker/9:1) S 2 0 0 0 -1 69238880 0 0 0 0 0 7 0 0 20 0 1 0 225 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744071629582160 0 0 18 9 0 0 0 0 0 0 0 0 0 0 0 0 0
# cat /proc/328/wchan
worker_thread#

static int create_workqueue_thread(struct cpu_workqueue_struct *cwq, int cpu)
{
        struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 };
        struct workqueue_struct *wq = cwq->wq;
        const char *fmt = is_wq_single_threaded(wq) ? "%s" : "%s/%d";
        struct task_struct *p;

        p = kthread_create(worker_thread, cwq, fmt, wq->name, cpu);


static int worker_thread(void *__cwq)
{
        struct cpu_workqueue_struct *cwq = __cwq;
        DEFINE_WAIT(wait);

        if (cwq->wq->freezeable)
                set_freezable();
        if(strncmp(current->comm,"rpciod",strlen("rpciod")==0)
                current->extra_flags |= PFE_RPCIOD;

        for (; {
                prepare_to_wait(&cwq->more_work, &wait, TASK_INTERRUPTIBLE);
                if (!freezing(current) &&
                    !kthread_should_stop() &&
                    list_empty(&cwq->worklist))
                        schedule();
                finish_wait(&cwq->more_work, &wait);

                try_to_freeze();

                if (kthread_should_stop())
                        break;

                run_workqueue(cwq);
        }

        return 0;
}
   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-06-23 08:35 |显示全部楼层
这应该是新的工作队列的实现~

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-06-23 12:40 |显示全部楼层
原有的工作队列机制存在两个主要问题:1、并发性差,队列中的任务串行执行。2、资源占用较多。
新的工作队列机制引入任务资源池worker_pool概念
工作线程由任务资源池负责创建和回收,工作队列不会创建工作线程。当工作队列创建时,将工作队列绑定到特定的任务资源池。当用户使用queue_work等接口向指定工作队列中添加工作任务时,工作队列负责向任务资源池中添加工作任务,由任务资源池管理的工作线程完成任务的执行。

kworker应该是不能关闭的,如果占用cpu较高,可以cat /proc/pid/stack看看堆栈。

论坛徽章:
18
卯兔
日期:2013-09-27 17:41:0615-16赛季CBA联赛之佛山
日期:2016-07-09 17:34:45操作系统版块每周发帖之星
日期:2015-12-02 15:01:04IT运维版块每日发帖之星
日期:2015-12-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-07 06:20:00IT运维版块每日发帖之星
日期:2015-10-03 06:20:00IT运维版块每日发帖之星
日期:2015-10-01 06:20:00羊年新春福章
日期:2015-04-01 17:56:06拜羊年徽章
日期:2015-04-01 17:56:062015年迎新春徽章
日期:2015-03-04 09:49:452015年辞旧岁徽章
日期:2015-03-03 16:54:15天秤座
日期:2015-01-14 06:39:28
发表于 2015-03-14 15:57 |显示全部楼层
!!!!!!!!!!!!!!!!!111
翻出这个帖子,当前 kworker太消耗性能了,不知道什么原因?

百度,google都没有解决办法,有没有大拿帮看看?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP