/proc/[PID]/stat
用于获取目标进程的CPU时间信息
限制指定进程cpu使用率的工具
cpulimit_fork PID
PERCENT
[OPTIONS]
cpulimit_fork 是一个用于限制指定进程CPU使用率的工具,通过发送SIGSTOP和SIGCONT信号来控制进程的运行状态,确保其CPU使用率不超过设定的阈值。
该工具通过以下方式工作: - 监控目标进程的CPU使用时间(从/proc文件系统读取jiffies数据) - 维护一个循环缓冲区存储进程的CPU使用快照 - 动态计算进程的CPU使用率并与限制阈值比较 - 根据比较结果发送信号控制进程运行或暂停 - 自动适应系统CPU核心数量调整限制范围
PID
|
目标进程的进程ID,必须是一个有效的非负整数。工具会验证该进程是否存在,并检查是否有控制权限。 |
|---|---|
PERCENT
|
CPU使用率限制值(百分比),必须在1到系统CPU核心数×100之间。例如,在4核系统上,有效范围是1-400。 |
--lazy
启用惰性模式(默认)。当目标进程不存在或已终止时,工具会立即退出。
--no-lazy
禁用惰性模式。当目标进程不存在或已终止时,工具会每2秒重试一次,直到进程出现。
-h, --help
显示帮助信息并退出。
-v, --version
显示版本信息并退出。
限制PID为1234的进程CPU使用率不超过50%:
|
cpulimit_fork 1234 50 |
|---|---|
在4核系统上限制PID为5678的进程CPU使用率不超过200%(相当于总CPU的50%):
|
cpulimit_fork 5678 200 |
禁用惰性模式,持续等待并限制PID为9012的进程,使用率不超过30%:
|
cpulimit_fork 9012 30 --no-lazy |
/proc/[PID]/stat
用于获取目标进程的CPU时间信息
/var/log/syslog
记录工具运行日志,包括进程ID和限制值
* 工具需要足够的权限才能向目标进程发送信号 * 不能用于限制自身进程(会提示错误并退出) * 退出时会自动发送SIGCONT信号恢复目标进程运行 * 限制精度依赖于系统时钟和调度机制