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

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

다음을 정의한다고 가정하자/etc/fstab

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

mount -a

이제 /data그것은tmpfs

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

/dataRAM 메모리 도달 90%(90% 도달) 상황은 tmpfs이 경우 90%스왑 메모리가 사용된다는 의미입니까?

답변1

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

긴 답변: 이 백분율은 메모리 부분(물리적 메모리 + 스왑 파티션 또는 스왑 파일)을 나타냅니다. 1TiB DIMM(RAM)이 있고 Redhat의 권장 스왑 100GiB 설정을 따른다고 가정하면 이론적으로 0.989TiB를 초과하는 /data에 대한 모든 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
    

관련 정보