首页 > 编程语言 >ulimit限制磁盘I/O速度

ulimit限制磁盘I/O速度

来源:互联网 2026-07-03 08:03:12

ulimit无法限制磁盘I/O,只能管理文件描述符。Linux内核的cgroups可精准控制进程磁盘读写带宽。安装cgroup-tools,创建blkio组,设置读写速度上限(如1MB/s),将进程加入组即可限速。

你是否曾思考过:ulimit 能否限制磁盘 I/O 速度?

实际上,并不能。ulimit 主要用于约束用户进程资源,例如文件描述符数量、进程数、堆栈大小等。但磁盘 I/O 速度并不在其管辖范围之内。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

那么,如何精确控制某个进程的磁盘读写带宽?Linux 内核早已提供了专用于此的组件——cgroups(控制组)。

ulimit限制磁盘I/O速度

接下来,我们将逐步演示如何使用 cgroups 限制磁盘 I/O 速度。

第一步:安装 cgroup-tools

大多数现代 Linux 发行版默认未附带 cgroup-tools,需要手动安装。

    基于 Debian 的系统(如 Ubuntu):
    sudo apt-get install cgroup-tools
    基于 RHEL 的系统(如 CentOS):
    sudo yum install libcgroup-tools

第二步:创建新的 cgroup

安装完成后,创建一个专门用于限速的 cgroup。此处命名为 limited_io,可根据需要自定义。

sudo cgcreate -g blkio:/limited_io

该命令将在 /sys/fs/cgroup/blkio/limited_io 路径下生成一组控制文件。其中 blkio 代表 block I/O,专门用于管理磁盘 I/O。

第三步:设置读写速度上限

接下来,向 cgroup 写入限速参数。具体通过 blkio.throttle.read_bps_deviceblkio.throttle.write_bps_device 两个文件控制每秒读取和写入的字节数。

例如,将磁盘读写速度均限制为 1MB/s,执行以下命令:

echo "8:0 1048576" | sudo tee -a /sys/fs/cgroup/blkio/limited_io/blkio.throttle.read_bps_device
echo "8:0 1048576" | sudo tee -a /sys/fs/cgroup/blkio/limited_io/blkio.throttle.write_bps_device

8:0 为磁盘设备的主次设备号(major:minor)。可通过 lsblkcat /proc/partitions 查看,并替换为实际设备号。

第四步:将目标进程加入 cgroup

设置完成后,若未生效,则需要将目标进程移入该 cgroup。

查找目标进程的 PID,然后执行:

sudo cgclassify -g blkio:/limited_io 

替换为实际进程 ID。此操作相当于为进程施加了磁盘读写速度约束,使其被限制在 1MB/s 以内。

第五步:修改或删除限制

如需更改限速值或取消限制,直接修改对应的控制文件即可。例如,重新写入新的限速参数,或清空文件内容。

若需删除整个 cgroup,可使用 cgdelete 命令进行清理。

需要留意的是:cgroups 的功能在不同 Linux 发行版和内核版本上可能存在差异。上述步骤在大多数现代系统中可以正常运行,但若使用特别老旧或高度定制的内核,请根据实际情况调整。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。