跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 有没控制程序 cpu 使用的开源项目?
未分類
1 9 月 2020

有没控制程序 cpu 使用的开源项目?

有没控制程序 cpu 使用的开源项目?

資深大佬 : 52coder 5

有没控制程序 cpu 使用的开源项目?我目前在 github 上就找到一个 7 8 年没维护的项目 cpulimit,大致使用方法: ./cpulimit –limit 30 process_name ./process_name 大概看了下代码,当 cpu 超过后会发送 stop,sleep 一段时间后发送 cont 信号,代码大致搂了一眼,发现两个大 bug.( fork 了个仓库,地址 https://github.com/52coder/cpulimit )

一个是 ifdef 和 if defined 搞混了,另一个是 kill 本来是要传递进程号,结果用了-1 ? 想问下大家,有没有更好的选择,最好是 c/c++实现。这个 cpulimit 不敢用呀,我这么菜都能发现 bug,说明问题有点多呀,

大佬有話說 (15)

  • 資深大佬 : liberty1900

    这个叫 throttle 吧

  • 資深大佬 : billlee

    这个项目叫 Linux, 功能叫 cgroup.

  • 資深大佬 : codehz

    Linux 的话,可以试试自带的 cgroup,通过控制 cpu 核心分配,时间片分配来限制最大 cpu 使用量

  • 主 資深大佬 : 52coder

    @billlee 多谢大佬,献丑了,我搜了下,cgroup 正是我要的。

  • 主 資深大佬 : 52coder

    @codehz 感谢推荐,我研究下。

  • 資深大佬 : vk42

    上 cgroup 正解,不过 lz 找到的两个”bug“看起来并不是 bug:
    ifdef 和 if defined 大多数情况下是等价的,不知道你说的搞混是什么意思
    kill 的-1 应该是 signum,1 对应 SIGHUP,也就是挂起进程……

  • 資深大佬 : wevsty

    Windows 的话可以通过 job 来限制 CPU 使用,也可以通过限制运行再某一个核心的方式来限制 CPU 。
    Linux 的话 cgroup 是正解。

    另外,恐怕主找到的都不是 bug,反倒是乱改可能改出 bug 了。

    @vk42
    这里的 kill 不是命令行的 kill 而是指 kill().

    pid 为-1 时会给除了 init 以外的所有有权限访问的进程都发送一遍指定的信号。
    文档写的很清楚:

    If pid equals -1, then sig is sent to every process for which the calling process has permission to send signals, except for process 1 (init).

  • 主 資深大佬 : 52coder

    @vk42 #ifdef A|| B 就是错的,ifdef 只能一个条件,if defined 才可以多个条件
    kill() -1 的话是群发,man kill 里有 wevsty 里的评论有,可以看下我仓库里倒数第二次提交

  • 資深大佬 : js8510

    假设你部署的程序是一个 service,常见的做法是 cgroup 然后 service 本身实现一些 monitor demon. Cgroup 用来设定上限,比如 cpu, mem, network I/O etc. Monitor demon 用来 monitor queue size, processing etc 然后动态的 export 给 load balancer, elastic capacity managing service etc. 如果是面向用户的前端软件,确实不太清楚常见的做法。docker 或类似的 container 其实多数本质也是通过 cgroup 限制资源。

  • 主 資深大佬 : 52coder

    @js8510 客户服务器中没有 cgroup 怎么破?

  • 主 資深大佬 : 52coder

    @liberty1900 后端实现,你说的这个应该是 js 的,搞不通

  • 資深大佬 : js8510

    我突然想到。最简单应急的方法,应该可以用 nice 限制你 process 的 priority. 这样 unix like 都肯定有。 对于 window 应该有类似的东西。 然后启动的时候给你的应用一个 shell script wrapper 应该就可以限制 cpu

  • 資深大佬 : js8510

    其实我不是很能理解,如果是 unixlike 的环境。。没有,你为什不能装一下。。写部署脚本的时候把, 没有 cgroup 你就装一下。。内网你就和应用本身一起打包。或许你工作要求比较特殊吧。

  • 資深大佬 : iceheart

    ControlGroup 是内核功能,2.6.24 以上内核开始提供,大概有 12 年历史了。

  • 主 資深大佬 : 52coder

    @js8510 我司产品非常另类,支持的系统从 centos5 到 centos8,架构支持 x86-64 aarch64 mips64,如果有源码,交叉编译啥的,基本上不用太费心,如果和应用打一起就非常难受呀

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具