如何提升程序抢占内存带宽的能力?

2021-03-07 12:09:33 +08:00
 xuegy

本人是做科学计算的,简单来说就是解几百万几千万的大型稀疏矩阵。计算的性质决定了 Cache 命中率不会高。实际使用中,CPU 几乎很难达到瓶颈,运行速度基本与系统总内存带宽成正比。

最近在用超算的时候发现一个非常棘手的问题:内存带宽抢不过那些炼丹的。例如一台双路服务器有 24 个核,实际分配是 22 个核心给 CPU 任务,2 个核心给 GPU 任务。然而炼丹的抢内存带宽效率奇高。假如那台服务器碰巧有人在炼丹,我的计算速度几乎会减半,也就是说我用 22 个核心抢占内存带宽的速度和炼丹的 2 个核心差不多。但是超算的“价格”是按 CPU 核心 x 时间计算的,我消耗了 22 份的资源却只得到了 12 份的性能,实在是不太公平。

我这里没有贬低炼丹的意思,GPU 计算本身没有问题,我只是想提升自己程序抢占内存带宽的能力,得到我付出的“价格”应得的性能。

7579 次点击
所在节点    程序员
61 条回复
bbyan2006
2021-03-07 12:21:28 +08:00
关注。关注
Kagari
2021-03-07 12:24:05 +08:00
是不是还有一种可能,你和炼丹的速度都减半了
liprais
2021-03-07 12:25:26 +08:00
把你的数据文件锁在内存里面
xuegy
2021-03-07 12:26:33 +08:00
@Kagari 但是我花了 22 份 SU 拿到了 12 份内存带宽。炼丹的花了 2 份 SU 也拿到了 12 份内存带宽,凭什么啊?
lithiumii
2021-03-07 12:30:04 +08:00
跟卖服务器的聊聊,让他们改成按内存带宽收费?
Yc1992
2021-03-07 12:43:32 +08:00
开 root 把炼丹程序 kill 掉
0TSH60F7J2rVkg8t
2021-03-07 13:04:48 +08:00
弱弱问一句,啥是炼丹的程序啊?
zckevin
2021-03-07 13:04:57 +08:00
xuegy
2021-03-07 13:12:53 +08:00
@zckevin 大概看了一下,对 ECC 无效啊
noqwerty
2021-03-07 13:15:17 +08:00
把你的数据文件都放到 /dev/shm 下面?
zckevin
2021-03-07 13:30:47 +08:00
@xuegy 没有,只是看到你的问题想到而已。似乎现在的 kernel 是无法对内存带宽做限制的,而且两个频繁 cache miss 访存的应用,除非把另一个干掉,不然注定是会达到各自占用一半带宽的均衡状态吧。我感觉稍微靠谱的方法应该是给 sysadmin 写邮件去商量。
f165af34d4830eeb
2021-03-07 13:32:31 +08:00
实在不行找老板申请买服务器吧,有经费就拿来花嘛,何必跟自己过不去呢。
xuegy
2021-03-07 13:33:13 +08:00
@f165af34d4830eeb 超算是我们写 proposal 申请来的,都没花钱,为啥要自己买...
czfy
2021-03-07 13:41:08 +08:00
@ahhui 机器学习
hitmanx
2021-03-07 13:56:46 +08:00
这事应该向服务器提供商去询问,而不是你自己去想办法。
你是他的客户,甚至是大客户,你花了 22 份的钱,炼丹的只花了 2 份的钱,他不会为了这些“添头”失去大客户的
f165af34d4830eeb
2021-03-07 13:57:41 +08:00
@xuegy 你要用超算那就得和别人挤嘛,毕竟超算是共享的,组里不差钱搞个好点的机器又不是不行。
f165af34d4830eeb
2021-03-07 14:02:56 +08:00
或者用纯 cpu 节点的超算?这样就不担心有炼丹佬抢你们 cpu 了
f165af34d4830eeb
2021-03-07 14:03:51 +08:00
@hitmanx 我猜是学校或者研究所的机器,学生没话语权,管理员才不管这些事
xuegy
2021-03-07 14:08:21 +08:00
@f165af34d4830eeb 可以认为是学校的机器吧,不过管理员想管也管不了啊。我还从来没听说过有什么东西能限制进程访问内存占用带宽的,只能从自己这想办法了。
xuegy
2021-03-07 14:09:14 +08:00
@f165af34d4830eeb 纯 CPU 的节点,随着这一波 Xeon 换 EPYC 的大潮,基本快要绝迹了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/759249

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX