
digamos que definimos o seguinte em/etc/fstab
tmpfs /data tmpfs size=90% 0 0
E então nós
mount -a
Agora /data
está comtmpfs
O que poderia acontecer no seguinte cenário
caso que /data
atingiu o limite 90%
de memória RAM ( tmpfs
atingiu 90%) significa que neste caso 90%
será utilizado algum valor superior à memória swap?
Responder1
Resposta curta: Se a sua memória física não puder ser atendida, a parcela percentual (90%), eventualmente, a troca será usada. Quando IO é maior que a porcentagem designada, ocorrem erros de IO.
Resposta longa: A porcentagem representa a parte da sua memória (memória física + partição swap ou arquivo swap}. Supondo que você tenha 1TiB DIMM (RAM) e configure swap 100GiB como de acordo com a recomendação do Redhat, teoricamente falando, qualquer IO para /data acima de 0,989 TiB ocorrerá Erros de IO como qualquer outro sistema de arquivos. Na prática, como a memória e o espaço de troca estão sendo usados por todas as outras coisas, tome cuidado com os impasses causados por.O OOM não será capaz de limpar a memória em caso de crescimento excessivo.
Aqui está a prova do que estou falando, executada no meu laptop:
Estado do sistema antes de escrever 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
Usei o script abaixo para gerar o IO que está acima de 90% do caminho de montagem/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
Vamos gerar o IO e ver o que acontece
ceto@dell:~$ sudo sh deadlock.sh
No arquivo de saída, vemos que ocorrem erros de IO e o sistema fica desleixado
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