Linux 2.6.31调度程序和多线程作业
我在具有24个内核的共享 Linux计算机上运行大规模并行的科学计算工作.大多数时候,当这台计算机上没有其他任何东西运行时,我的工作能够扩展到24个核心.然而,似乎即使一个不是我的单线程作业正在运行,我的24线程作业(我设置为高优值)只能获得~1800%的CPU(使用Linux表示法).同时,大约500%的CPU周期(再次使用Linux表示法)处于空闲状态.任何人都可以解释这种行为以及我能做些什么来获得所有其他人没有使用的核心? 笔记: >如果它是相关的,我已经在稍微不同的内核版本上观察到了这一点,尽管我不记得哪个是我的头脑. 编辑:我刚注意到的一件事是,最多30个线程似乎在某种程度上缓解了这个问题.它让我高达2100%的CPU. 解决方法这可能是由于调度程序试图将每个任务保持在先前运行的同一CPU上运行(这样做是因为该任务可能将其工作集带入该CPU的缓存中 – 它是“缓存热” “).以下是您可以尝试的一些想法: >运行两倍于核心的线程;>运行比核心少一两个线程;>减少/ proc / sys / kernel / sched_migration_cost的值(可能降至零);>将/proc/sys/kernel/sched_domain/…/imbalance_pct的值降低到接近100. (编辑:台州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux脚本与netcat在x小时后停止工作
- linux – dhclient:“RTNETLINK回答:文件存在”是什么意思
- linux – 如何在unix上找到没有日志文件的死进程的原因?
- linux-device-driver – add_disk()在insmod上挂起
- linux – 如何列出符号链接链?
- 是否有可能运行使用linux中的react-native开发的ios应用程序
- LINUX教程:CentOS 7 挂载ntfs磁盘格式的U盘
- linux – 在Mac OS上设置jenkins slave
- linux – svn导出除了一些目录以外的所有目录
- linux – 陷阱标志(TF)和监视器陷阱标志之间的区别?