Можете ли вы ограничить пропускную способность ramdisk на базе tmpfs?

8

Я создал виртуальный диск с помощью tmpfs следующим образом:

sudo mount -t tmpfs -o size=1024m tmpfs /myramdisk

Я искал ограничения пропускной способности подсистемы cgroup blkio "read_bps_device" и "write_bps_device", но, похоже, они требуют старшего и младшего номера вашего блочного устройства, к которому вы хотите ограничить доступ.

Есть ли способ достичь такого же ограничения полосы пропускания для виртуального диска tmpfs в памяти?

ОБНОВЛЕНИЕ : я нашел окольный хакерский способ сделать это. Сначала я экспортирую монтирование в ramdisk. Затем nfs монтирует его через loopback на той же машине. Затем я использую формирование сетевого трафика Linux для установки ограничений полосы пропускания. Кажется, это обеспечивает то, что мне нужно. Я нахожусь в процессе выполнения некоторых измерений, чтобы видеть наказание, которое влечет за собой это отвратительное наслоение. Я обновлю информацию об этом через несколько дней.

weirdbluelights
источник
Можете ли вы написать, что вы сделали в качестве ответа, чтобы я мог присудить награду? Щедрость - это своего рода «используй или потеряй», как только она предложена.
Братчли

Ответы:

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соответственно.

Bratchley
источник
Спасибо за информацию о старшем / младшем номере виртуального диска. Но подсистема cgroups blkio, похоже, не позволяет регулировать неназванные устройства. echo "0:32 1048576" > /sys/fs/cgroup/blkio/blkio.throttle.write_bps_deviceдал мне «ошибка записи: неверный аргумент». Может быть, есть другой способ, о котором кто-то знает.
странные голубые огни
Ах, прости, не знал этого. Из любопытства, какова цель в формировании полосы пропускания tmpfs? Просто чтобы освободить место для другой работы на ФСБ или что-то?
Братчли
Это для симуляции исследования для курсового проекта. Цель состоит в том, чтобы представить график производительности приложения в широком диапазоне различных полос записи / чтения.
странные голубые огни