![你能限制基于 tmpfs 的 ramdisk 的带宽吗?](https://linux22.com/image/59417/%E4%BD%A0%E8%83%BD%E9%99%90%E5%88%B6%E5%9F%BA%E4%BA%8E%20tmpfs%20%E7%9A%84%20ramdisk%20%E7%9A%84%E5%B8%A6%E5%AE%BD%E5%90%97%EF%BC%9F.png)
我使用 tmpfs 创建了一个 ramdisk,如下所示:
sudo mount -t tmpfs -o size=1024m tmpfs /myramdisk
我正在研究 cgroup blkio 子系统带宽限制“read_bps_device”和“write_bps_device”,但它们似乎需要您想要限制访问的块设备的主要和次要数量。
有没有办法实现与内存中 tmpfs ramdisk 类似的带宽限制?
更新:我找到了一种迂回的黑客方法来实现这一点。我首先nfs导出ramdisk挂载。然后 nfs 将其挂载在同一台机器上的环回上。然后我使用 Linux 网络流量整形来设置带宽限制。这似乎提供了我所需要的。我正在执行一些测量,以了解这种可怕的分层所带来的惩罚。我将在几天内更新相关信息。
答案1
stat
或者/proc/[PID]/mountinfo
仍然应该告诉您设备编号是什么:
[root@XXXlin01 block]# stat --printf="%d" /tmp/mnt; echo
24
[root@XXXlin01 block]# stat --printf="%d" /tmp/mnt2; echo
25
[root@XXXlin01 block]# grep "/tmp/mnt" /proc/22195/mountinfo
40 20 0:24 / /tmp/mnt rw,relatime - tmpfs none rw
41 20 0:25 / /tmp/mnt2 rw,relatime - tmpfs none rw
两个输出均显示0:25
和0:24
作为相关设备编号。 “0”设备号用于“未命名”坐骑(如 tmpfs、sysfs、nfs、procfs 等)。例如,这是一个 NFS 挂载:
[root@XXXlin01 block]# grep "/LinuxHome" /proc/22195/mountinfo
39 36 0:23 / /home/jad87 rw,relatime - nfs duhsnas-xxx:/ifs/Application\040File\040Shares/DUHS/LinuxHomeDir_fs/jad87 rw,vers=3,rsize=4096,wsize=4096,namlen=255,soft,proto=tcp,timeo=14,retrans=2,sec=sys,mountaddr=10.1x.92.106,mountvers=3,mountport=300,mountproto=udp,local_lock=none,addr=10.1x.92.106
42 36 0:26 / /home/tsa20 rw,relatime - nfs 10.1x.92.117:/ifs/Application\040File\040Shares/DUHS/LinuxHomeDir_fs/tsa20 rw,vers=3,rsize=4096,wsize=4096,namlen=255,soft,proto=tcp,timeo=14,retrans=2,sec=sys,mountaddr=10.1x.92.117,mountvers=3,mountport=300,mountproto=udp,local_lock=none,addr=10.1x.92.117
上面的 NFS 挂载分别是0:23
和0:26
。