1
wtks1 2019-04-28 14:34:17 +08:00 via Android
可以用 cpulimit 来限制这个程序的 cpu 占用
|
2
mytry OP @wtks1 cpulimit 貌似是用户态的工具吧,通过不断暂停 /继续实现实现 CPU 限制? 我的想法是,并不限制进程使用多少 CPU,只是把优先级降到最低,随时让出资源给服务使用,自己用剩余的资源。
|
3
jackmod 2019-04-28 15:13:22 +08:00
扯个侧面的。以前有个 A4-3300M 的机器,在 windows 下改优先级非常好用,然而 linux 下的体感却不怎么好,generic 和 lowlatency 的都差不多。
|
4
zealot0630 2019-04-28 15:42:22 +08:00
你有几个概念没有搞清楚
1. 内存访问都是 CPU 发起的(除了 DMA), 把原本 halt 时候的 CPU 利用起来, 也就等于把原本空闲的内存带宽利用起来了. 2. 多核, 会影响其他核的内存访问. 3. L1/2/3 缓存会被刷, 可能影响其他程序. 4. 如果程序有 IO, 还需要配合 ionice |
5
iwtbauh 2019-04-28 18:29:05 +08:00 via Android
如果是 Linux,可以用 cgroup 限制一个(组)进程的 CPU 限制。
如果是 FreeBSD,可以用 resource limits 限制 CPU,不确定是否对其他 bsd 系统有效。 不清楚其他系统。 这个需求似乎挺常见的,但是似乎还没有进入 POSIX 等独立于操作系统的标准。 |
6
ryd994 2019-04-29 01:01:33 +08:00 via Android
会有一点,但很小,boinc 讨论过这个问题
|
7
abmin521 2019-04-29 09:19:05 +08:00 via Android
频繁切换也会有影响吧 不如买突发性实例?
|
8
ShangAliyun 2019-04-29 10:00:23 +08:00
密集计算建议用按量付费临时开一台高配 cpu 的机器,用完了释放掉。竞价实例也不错
|
9
mytry OP @ShangAliyun 就是为了“变废为宝”才用考虑方案,计算的不是及时要用的数据(姑且当做挖矿吧~)再开一个机器就背道而驰了。
|
10
CRVV 2019-04-29 14:14:38 +08:00
这种事情只有测试过才能知道
优先级会影响内核在调度时的选择,操作系统当然会尽力把 CPU 分给优先级高的进程,但普通的操作系统不能精准地把 CPU 恰好分给优先级最高的进程 另外当然还存在各种各样其它的影响 |