¿Qué sucede si tmpfs alcanzó el límite definido en porcentaje?

¿Qué sucede si tmpfs alcanzó el límite definido en porcentaje?

digamos que definimos lo siguiente en/etc/fstab

tmpfs /data tmpfs size=90% 0 0
Y luego nosotros

mount -a

ahora /dataes contmpfs

¿Qué podría suceder en el siguiente escenario?

En el caso de que /datase haya alcanzado la 90%cantidad de memoria RAM ( tmpfsalcanzado 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:

  1. 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
    
  2. 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 
    
  3. Generemos el IO y veamos qué pasa.

    ceto@dell:~$ sudo sh deadlock.sh
    
  4. 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
    

información relacionada