计算化学公社

标题: 双路机器开超线程,申请物理核数,能否让一个核只放1线程,而不是优先一个核堆2个? [打印本页]

作者
Author:
bobosiji    时间: 2021-12-27 12:17
标题: 双路机器开超线程,申请物理核数,能否让一个核只放1线程,而不是优先一个核堆2个?
我们按sob老师提点(科音某个帖子),双路服务器开超线程,实际申请物理核数(一个节点往往跑多个任务,
申请的总核数是物理核数)。然后观察到系统安排任务喜欢往一个核堆2个线程。使得1颗U负担很重,温度很高。
比如2686v4CPU,两颗U分别是83,33度这种(四子星机器,就是1个2U机器里有4个双路节点)。即使是普通双路2U机器
(单双路节点),温度也是77/52度。我们实际观察了,2颗U负担确实不一样。
请问系统(比如slurm)安排任务能否让一个核只放一个线程,使2颗U的负担和温度都均衡些?
不然只好关超线程了。
多谢各位提点~~


作者
Author:
abin    时间: 2021-12-27 13:10
关闭超线程,
或采用手动绑定处理器,不同任务指定cpu0 cpu1之类。

或者用队列调度,
比如slurm,可能需要开启accounting
具体看手册。


作者
Author:
bobosiji    时间: 2021-12-27 15:17
abin 发表于 2021-12-27 13:10
关闭超线程,
或采用手动绑定处理器,不同任务指定cpu0 cpu1之类。

----ntasks--per--core=<ntasks>:每颗CPU核运行<ntasks>个任务,需与-n, --ntasks=<number>配
合,并自动绑定<ntasks>个任务到每个CPU核。 脚本里加这一条,能否让一个核只放1线程,而不是优先一个核堆2个?
猜想一个节点跑单任务的话应该可以,跑多任务就不知道了
作者
Author:
abin    时间: 2021-12-27 16:32
bobosiji 发表于 2021-12-27 15:17
----ntasks--per--core=:每颗CPU核运行个任务,需与-n, --ntasks=配
合,并自动绑定个任务到每个CPU核 ...

No.

Check out socket.
作者
Author:
abin    时间: 2021-12-27 16:32
bobosiji 发表于 2021-12-27 15:17
----ntasks--per--core=:每颗CPU核运行个任务,需与-n, --ntasks=配
合,并自动绑定个任务到每个CPU核 ...

No.

Check out socket.
作者
Author:
liyuanhe211    时间: 2021-12-27 17:45
本帖最后由 liyuanhe211 于 2021-12-27 17:49 编辑

我观察在28核56线程的双路机器里跑nprocshared=28,默认状态就是每个物理核心一个线程(虽然会有某两个线程突然交换CPU核的情况)

作者
Author:
bobosiji    时间: 2021-12-27 20:19
liyuanhe211 发表于 2021-12-27 17:45
我观察在28核56线程的双路机器里跑nprocshared=28,默认状态就是每个物理核心一个线程(虽然会有某两个线程 ...

你的情况是跑一个gaussian任务吧?我们主要跑gromacs,raspa,一个节点还往往跑多个任务
作者
Author:
abin    时间: 2021-12-27 20:42
slurm

Accounting and resources limit 章节。

用户会被锁定到调度器分派的资源上。
比如用户在28核心机器,申请了12核心,
自己的作业在跑,自作聪明上去直接做任务。
那么他只会在系统分派的12个核心祸害自己,不会影响他人。

用户根本用不着折腾什么cpu GPU绑定之类的。

简单操作,就是srun -n XX App,啥都不用折腾。


作者
Author:
snljty    时间: 2021-12-28 10:08
本帖最后由 snljty 于 2021-12-28 10:09 编辑

感觉这事有点离奇,因为你说的这种任务调度是操作系统的最基本功能。如果不是专门进行了特殊的指定,除非是12代Core这种不是所有操作系统都能很好处理调度问题的情况,一般操作系统会在几微妙内完成好任务调度,一般不会或者极少出现物理核心还没用满,先把两个CPU密集任务挤到一个物理核的情况。
可能是有些软件有特殊设计,比如gmx开-pin on默认是-pinoffset 0,强制从0号核开始绑定。
个人建议,如果不是一堆相似任务批量处理,还是把全部资源用于一个任务,算完一个再算下一个,大家都养成(用作业系统)排队的习惯,这样比较好。你这两个CPU温度差的有点多...但是有差别是正常的,和风路之类的有关,比如一个的出风口对着另一个进风口。

作者
Author:
abin    时间: 2021-12-28 13:45
没搞定的话,
看看这个页面.
https://slurm.schedmd.com/mc_support.html
你应该有看到了...

结合
--ntasks-per-core=1
--ntasks-per-node=12
--ntasks-per-socket=12
所有的任务, 都限定在一个具有12个物理核心的处理器上.

slurm配置要, 应该要结合cgroup做限定.

如果搞不定, 关闭超线程.

通过IPMPI操作, 又不用去机房.
也就是点鼠标的事情. 不过需要重启.

作者
Author:
KiritsuguPapa    时间: 2021-12-28 19:59
关闭超线程就行了。sob的测试文你也看出来(除了gmx的个别情况)开超线程没有什么好处  虽然他建议开超线程 但是据我所知sob是不用队列系统的 而开超线程对队列系统很麻烦 所有超算都是关闭超线程的
slurm不仅仅管理任务调度 还管理资源调度 所以就不是系统自动调度了。楼上liyuanhe和snljty可能不了解这一点。





欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3