Pouvez-vous limiter la bande passante à un disque virtuel basé sur tmpfs?

8

J'ai créé un ramdisk en utilisant tmpfs comme suit:

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

Je cherchais dans les limites de bande passante du sous-système cgroup blkio "read_bps_device" et "write_bps_device" mais elles semblent nécessiter le nombre majeur et mineur de votre périphérique de bloc auquel vous souhaitez limiter l'accès.

Existe-t-il un moyen d'atteindre une limite de bande passante similaire au ramdisk tmpfs en mémoire?

MISE À JOUR : J'ai trouvé un moyen détourné pour accomplir cela. J'ai d'abord exporté nfs le montage ramdisk. Ensuite, nfs le monte sur le bouclage sur la même machine. J'utilise ensuite la mise en forme du trafic réseau Linux pour définir les limites de bande passante. Cela semble fournir ce dont j'ai besoin. Je suis en train d'effectuer des mesures pour voir la pénalité que cette superposition hideuse entraîne. Je mettrai à jour les informations à ce sujet dans quelques jours.

weirdbluelights
la source
Pouvez-vous écrire ce que vous avez fait comme réponse pour que je puisse attribuer la prime? Bounty est une sorte de "l'utiliser ou le perdre" une fois qu'il est offert.
Bratchley

Réponses:

1

statou /proc/[PID]/mountinfodevrait toujours vous dire quels sont les numéros de périphérique:

[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

Les deux sorties affichent 0:25et 0:24comme les numéros de périphérique en question. Le numéro de périphérique "0" est utilisé pour les montages "sans nom" (tels que tmpfs, sysfs, nfs, procfs, etc.). Par exemple, voici un montage 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

Les montages NFS ci-dessus sont 0:23et 0:26respectivement.

Bratchley
la source
Merci pour l'info sur le numéro majeur / mineur du ramdisk. Mais le sous-système cgroups blkio ne semble pas permettre la limitation des périphériques sans nom. echo "0:32 1048576" > /sys/fs/cgroup/blkio/blkio.throttle.write_bps_devicem'a donné une "erreur d'écriture: argument non valide". Peut-être y a-t-il une autre façon que quelqu'un connaît.
weirdbluelights
Ah désolé, je ne savais pas ça. Par curiosité, quel est l'objectif de la mise en forme de la bande passante tmpfs? Juste pour faire de la place pour d'autres travaux sur le FSB ou quelque chose?
Bratchley
Il s'agit d'une étude de simulation pour un projet de cours. L'objectif est de tracer les performances d'une application par rapport à une large gamme de bandes passantes différentes en écriture / lecture.
weirdbluelights