AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 25025
In Process
Peter Mortensen
Peter Mortensen
Asked: 2009-06-13 12:47:30 +0800 CST2009-06-13 12:47:30 +0800 CST 2009-06-13 12:47:30 +0800 CST

有没有可能让一个程序占用的CPU不超过50%?

  • 772

目前我有一个程序占用了太多的 CPU。

我如何限制它占用的 CPU 数量?

操作系统是 Linux、Fedora。

我无法修改该程序的源代码。

我需要的是一个Bash命令。

linux
  • 8 8 个回答
  • 473 Views

8 个回答

  • Voted
  1. z -
    2009-06-13T12:47:31+08:002009-06-13T12:47:31+08:00

    您可以尝试通过使用 nice 降低优先级来限制您的程序。那里不涉及编程。

    • 8
  2. nos
    2009-06-13T12:52:23+08:002009-06-13T12:52:23+08:00

    以“50%”的 CPU 运行并没有什么意义。您希望程序在可用时使用所有可能的资源。如果 CPU 没有做任何其他事情,那么该程序还不如充分利用它。如果您希望程序真的什么都不做,您必须修改源代码并在可能的情况下暂停/休眠。

    你想要的是让其他一切都具有更高的优先级。查看 nice 命令的手册页,在 nice 19 处运行它

    限制资源的另一种可能更有效的方法是安装 schedutils 包,并使用 SCHED_BATCH 进程调度程序运行程序。

    • 4
  3. Aiden Bell
    2009-06-13T12:47:30+08:002009-06-13T12:47:30+08:00

    Setrlimit和合作...

    #include <sys/resource.h>
    #include <sys/time.h>
    #include <unistd.h>
    
    int main ()
    {
     struct rlimit rl;
    
     /* Obtain the current limits. */
     getrlimit (RLIMIT_CPU, &rl);
     /* Set a CPU limit of 1 second. */
     rl.rlim_cur = 1;
     setrlimit (RLIMIT_CPU, &rl);
     /* Do busy work. */
     while (1);
    
     return 0;
    }
    

    从这里

    • 2
  4. andrewd18
    2009-06-17T12:28:39+08:002009-06-17T12:28:39+08:00

    您正在寻找简单快速的东西吗?试试cpulimit 程序。赶紧跑:

    cpulimit name-of-program
    

    瞧,它是有限的。

    • 2
  5. RichardOD
    2009-06-13T12:47:31+08:002009-06-13T12:47:31+08:00

    如果您不想修改程序,另一个需要考虑的选项是虚拟化。

    • 1
  6. Kyle Brandt
    2009-06-13T14:34:18+08:002009-06-13T14:34:18+08:00

    如果你想限制一个进程的cpu,基于百分比的概念,考虑cpulimit。

    • 1
  7. sean riley
    2009-06-13T12:47:31+08:002009-06-13T12:47:31+08:00

    您可以在应用程序中手动进行时间切片,方法是使用高性能计时器并测量顶级循环的每次迭代所花费的时间,然后在该循​​环中放入适当的睡眠(或 nanosleep)。这不会直接与 CPU 的百分比相关,尤其是跨机器,但它会限制程序占用的 cpu 资源。

    • 0
  8. Zan Lynx
    2009-06-17T12:18:45+08:002009-06-17T12:18:45+08:00

    看看对照组。

    LWN 有一篇关于它们的文章。

    Redhat、Fedora、CentOS 有一个名为 libcgroup 的 RPM 包,它有几个方便的命令行工具、一个系统守护进程和一些用于管理控制组的配置文件。

    这是基于在SourceForge 上托管的libcg。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve