单核机器 nice -n 19 执行一个很耗 CPU 的程序,会影响其他程序性能吗?

2019-04-28 11:12:09 +08:00
 mytry
现有个单核的机器,CPU 日常使用率很低,打算把剩余 CPU 资源用来做一些密集计算,但不想影响已有的程序性能。

现打算用 nice -n 19 执行这个高耗能程序,会对其他程序性能有较大影响吗?这个程序主要是耗 CPU,但觉得内存访问也会占用内存带宽,影响其他程序访问内存速度吧。

不知有没有人尝试过类似的方案,把服务器剩余 CPU 用来跑一些计算,同时不影响主要服务。
2189 次点击
所在节点    程序员
10 条回复
wtks1
2019-04-28 14:34:17 +08:00
可以用 cpulimit 来限制这个程序的 cpu 占用
mytry
2019-04-28 15:09:09 +08:00
@wtks1 cpulimit 貌似是用户态的工具吧,通过不断暂停 /继续实现实现 CPU 限制? 我的想法是,并不限制进程使用多少 CPU,只是把优先级降到最低,随时让出资源给服务使用,自己用剩余的资源。
jackmod
2019-04-28 15:13:22 +08:00
扯个侧面的。以前有个 A4-3300M 的机器,在 windows 下改优先级非常好用,然而 linux 下的体感却不怎么好,generic 和 lowlatency 的都差不多。
zealot0630
2019-04-28 15:42:22 +08:00
你有几个概念没有搞清楚

1. 内存访问都是 CPU 发起的(除了 DMA), 把原本 halt 时候的 CPU 利用起来, 也就等于把原本空闲的内存带宽利用起来了.
2. 多核, 会影响其他核的内存访问.
3. L1/2/3 缓存会被刷, 可能影响其他程序.
4. 如果程序有 IO, 还需要配合 ionice
iwtbauh
2019-04-28 18:29:05 +08:00
如果是 Linux,可以用 cgroup 限制一个(组)进程的 CPU 限制。

如果是 FreeBSD,可以用 resource limits 限制 CPU,不确定是否对其他 bsd 系统有效。

不清楚其他系统。

这个需求似乎挺常见的,但是似乎还没有进入 POSIX 等独立于操作系统的标准。
ryd994
2019-04-29 01:01:33 +08:00
会有一点,但很小,boinc 讨论过这个问题
abmin521
2019-04-29 09:19:05 +08:00
频繁切换也会有影响吧 不如买突发性实例?
ShangAliyun
2019-04-29 10:00:23 +08:00
密集计算建议用按量付费临时开一台高配 cpu 的机器,用完了释放掉。竞价实例也不错
mytry
2019-04-29 10:07:19 +08:00
@ShangAliyun 就是为了“变废为宝”才用考虑方案,计算的不是及时要用的数据(姑且当做挖矿吧~)再开一个机器就背道而驰了。
CRVV
2019-04-29 14:14:38 +08:00
这种事情只有测试过才能知道

优先级会影响内核在调度时的选择,操作系统当然会尽力把 CPU 分给优先级高的进程,但普通的操作系统不能精准地把 CPU 恰好分给优先级最高的进程

另外当然还存在各种各样其它的影响

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

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

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

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

© 2021 V2EX