在麒麟V10中限制单个软件CPU使用率有四种方法:一是用cpulimit通过进程名(-e)临时限制;二是通过PID(-p)精准控制;三是通过systemd的CPUQuota配置持久化限制;四是用cgroups v2手动创建CPU限制组实现精细管控。

在麒麟V10操作系统中限制单个软件的CPU使用率上限,可防止某个进程持续霸占CPU导致系统卡顿或响应迟滞,尤其适用于后台服务、Java应用或未优化的第三方程序。
使用cpulimit临时限制进程CPU占用
方法一:通过进程名实时限制(推荐用于已知名称的前台/后台程序)
打开终端 → 执行 sudo apt install cpulimit 安装工具 → 运行 cpulimit -e firefox -l 40 将Firefox限制为最多使用40% CPU。注意:-e 后必须是精确的进程名(如 chrome 不是 google-chrome),可用 ps aux | grep chrome 确认真实进程名。
方法二:通过PID精准控制(适用于多实例或同名进程)
先执行 pidof your_app_name 或 ps aux | grep your_app 查出目标进程PID → 再运行 cpulimit -p 12345 -l 30(将12345替换为实际PID)→ 此时该进程被硬性限频至30%,超出部分会被内核挂起调度。这一步不可逆,中断cpulimit后限制立即解除,适合调试场景。
通过systemd服务配置持久化CPU限制
此方式仅适用于以systemd服务形式启动的软件(如nginx、redis、自定义守护进程),普通GUI程序不适用。
第一步:确认服务名,执行 systemctl list-units --type=service | grep your_app 找到对应unit文件名(如 mysqld.service);
第二步:创建覆盖配置目录:sudo mkdir -p /etc/systemd/system/mysqld.service.d;
第三步:新建限制配置文件:sudo nano /etc/systemd/system/mysqld.service.d/limit.conf,写入以下内容:
[Service]<br>CPUQuota=65%
第四步:重载配置并重启服务:sudo systemctl daemon-reload → sudo systemctl restart mysqld。⚠️注意:【CPUQuota值必须带%符号,否则配置无效】。该限制由cgroup v2内核机制强制执行,重启后依然生效。
使用cgroups v2手动创建CPU限制组(高级用户)
适用于需要精细控制多个相关进程(如某软件主进程+子进程)的场景。
创建层级组:sudo mkdir -p /sys/fs/cgroup/myapp-limited;
设置CPU配额:echo "600000 1000000" | sudo tee /sys/fs/cgroup/myapp-limited/cpu.max(表示每1秒最多用600ms CPU时间);
将目标进程加入该组:echo PID | sudo tee /sys/fs/cgroup/myapp-limited/cgroup.procs(PID需替换为实际值);
验证是否生效:cat /sys/fs/cgroup/myapp-limited/cpu.stat 查看 usage_usec 是否稳定在预期范围内。这一步操作直接作用于内核cgroup接口,无需安装额外软件,但【一旦写入cgroup.procs,进程即脱离原调度组,不可误填PID】。

















