V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
mytry
V2EX  ›  程序员

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

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

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

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

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

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

    不清楚其他系统。

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

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

    另外当然还存在各种各样其它的影响
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2890 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:22 · PVG 17:22 · LAX 01:22 · JFK 04:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.