tmpfs가 백분율로 정의된 제한에 도달하면 어떻게 되나요?

tmpfs가 백분율로 정의된 제한에 도달하면 어떻게 되나요?

우리가 다음을 정의했다고 가정해 보겠습니다./etc/fstab

tmpfs /data tmpfs size=90% 0 0
그리고 우리는

mount -a

지금 /data은 함께tmpfs

다음 시나리오에서는 어떤 일이 일어날 수 있나요?

RAM 메모리 /data용량에 도달 한 경우 (90% 도달) 이 경우 스왑 메모리를 더 많이 사용한다는 의미입니까 ?90%tmpfs90%

답변1

짧은 답변: 실제 메모리가 백분율 부분(90%)을 제공할 수 없는 경우 결국 스왑이 사용됩니다. IO가 지정된 백분율보다 큰 경우 IO 오류가 발생합니다.

긴 답변: 백분율은 메모리 부분(물리적 메모리 + 스왑 파티션 또는 스왑 파일)을 나타냅니다. Redhat의 권장 사항에 따라 1TiB DIMM(RAM)이 있고 스왑을 100GiB로 설정했다고 가정하면 이론적으로 0.989TiB 이상의 /data에 대한 IO가 발생합니다. 다른 모든 파일 시스템과 마찬가지로 IO 오류는 실제로 다른 모든 항목에서 메모리와 스왑 공간을 사용하고 있으므로 교착 상태에 주의해야 합니다.OOM은 메모리가 너무 많아지면 메모리를 지울 수 없습니다.

다음은 제가 말하는 내용에 대한 증명이며, 제 노트북에서 실행됩니다:

  1. 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. 아래 스크립트를 사용하여 /data 마운트 경로의 90%가 넘는 IO를 생성했습니다.

    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. IO를 생성하고 무슨 일이 일어나는지 살펴보겠습니다.

    ceto@dell:~$ sudo sh deadlock.sh
    
  4. 출력 파일에서 IO 오류가 발생하고 시스템이 엉성해지는 것을 볼 수 있습니다.

    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
    

관련 정보