
digamos que definimos lo siguiente en/etc/fstab
tmpfs /data tmpfs size=90% 0 0
Y luego nosotros
mount -a
ahora /data
es contmpfs
¿Qué podría suceder en el siguiente escenario?
En el caso de que /data
se haya alcanzado la 90%
cantidad de memoria RAM ( tmpfs
alcanzado el 90%), ¿significa que en este caso 90%
se utilizará una cantidad mayor de memoria de intercambio?
Respuesta1
Respuesta corta: Si su memoria física no puede atender la parte porcentual (90%), eventualmente se utilizará el intercambio. Cuando IO es mayor que el porcentaje designado, se producen errores de IO.
Respuesta larga: El porcentaje representa la porción de su memoria (memoria física + partición de intercambio o archivo de intercambio). Suponiendo que tiene 1 TiB DIMM (RAM) y configura el intercambio en 100 GiB como de acuerdo con la recomendación de Redhat, en teoría, se producirá cualquier IO a /datos por encima de 0,989 TiB. Errores de IO como cualquier otro sistema de archivos. En la práctica, dado que todas las demás cosas utilizan la memoria y el espacio de intercambio, tenga cuidado con los interbloqueos causados por.OOM no podrá borrar la memoria en caso de crecimiento excesivo.
Aquí está la prueba de lo que estoy hablando, ejecutada en mi computadora portátil:
Estado del sistema antes de escribir IO.
ceto@dell:~$ free total used free shared buff/cache available Mem: 8041716 2110100 3461592 208904 2470024 5464012 Swap: 2097148 0 2097148 ceto@dell:~$ cat /etc/fstab | grep data tmpfs /data tmpfs rw,nodev,nosuid,size=90% 0 0 ceto@dell:~$ mv rh/rhel-8.1-x86_64-dvd.iso /var/lib/libvirt/images/^C ceto@dell:~$ findmnt /data TARGET SOURCE FSTYPE OPTIONS /data tmpfs tmpfs rw,nosuid,nodev,relatime,size=7237548k ceto@dell:~$ df /data Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 7237548 0 7237548 0% /data
Utilicé el siguiente script para generar el IO que está por encima del 90 por ciento de la ruta de montaje /data.
ceto@dell:~$ cat deadlock.sh dd if=/dev/urandom of=/data/test.img bs=16M count=454 > deadlock.txt 2>&1 df /data >> deadlock.txt free >> deadlock.txt sleep 1 rm -rf /data/test.img sync /data
Generemos el IO y veamos qué pasa.
ceto@dell:~$ sudo sh deadlock.sh
En el archivo de salida vemos que se producen errores de IO y el sistema se vuelve descuidado.
ceto@dell:~$ cat deadlock.txt dd: error writing '/data/test.img': No space left on device 442+0 records in 441+0 records out 7411249152 bytes (7.4 GB, 6.9 GiB) copied, 39.6605 s, 187 MB/s Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 7237548 7237548 0 100% /data total used free shared buff/cache available Mem: 8041716 2284836 126108 5358092 5630772 139840 Swap: 2097148 2097084 64