如何限制cargo run时rustc的CPU占用率?
如何限制rustc的CPU使用率?
问题描述
执行cargo run时,rustc默认会占用全部CPU资源,尝试用cpulimit -l 40限制cargo进程,但rustc子进程仍会占用100%的CPU。
环境信息
- Fedora release 40 (Forty),内核版本:6.9.7-200.fc40.x86_64 #1 SMP PREEMPT_DYNAMIC
- rustc 1.79.0 (129f3b996 2024-06-10)
- cargo 1.79.0 (ffa9cf99a 2024-06-03)
- stable-x86_64-unknown-linux-gnu 工具链未变更,对应rustc 1.79.0
解决方案
直接用cpulimit限制cargo进程无效,原因是cargo会启动多个独立的rustc子进程执行编译任务,这些子进程不受父进程的CPU限制规则约束。
可以通过cargo自带的并发控制功能来解决:
- 命令行参数方式:执行编译或运行命令时加上
-j参数指定并发任务数,例如:cargo build -j 2 # 限制为2个并发编译任务 cargo run -j 2 # 运行项目时同时限制编译并发数 - 环境变量方式:设置
CARGO_BUILD_JOBS环境变量,该配置会全局作用于cargo的所有编译操作:export CARGO_BUILD_JOBS=2 # 临时生效 # 若要永久生效,可将上述命令添加到shell配置文件(如~/.bashrc、~/.zshrc)
通过控制并发编译的任务数量,就能有效控制rustc整体的CPU使用率,避免占用全部系统资源。
内容的提问来源于stack exchange,提问作者ArtEm
相关产品推荐
相关产品推荐

