首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  
  •   mytry · 177 天前 · 1366 次点击
    这是一个创建于 177 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现有个单核的机器,CPU 日常使用率很低,打算把剩余 CPU 资源用来做一些密集计算,但不想影响已有的程序性能。

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

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

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

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

    不清楚其他系统。

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

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

    另外当然还存在各种各样其它的影响
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1737 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 16:40 · PVG 00:40 · LAX 09:40 · JFK 12:40
    ♥ Do have faith in what you're doing.