如果 tmpfs 達到以百分比定義的限制,會發生什麼

如果 tmpfs 達到以百分比定義的限制,會發生什麼

假設我們定義了以下內容/etc/fstab

tmpfs /data tmpfs size=90% 0 0
然後我們

mount -a

現在/data是與tmpfs

以下場景可能會發生什麼

/data達到90%RAM 記憶體(達到 90%)的情況tmpfs是否意味著在這種情況下90%將使用交換記憶體?

答案1

簡短回答: 如果您的實體記憶體無法滿足百分比部分(90%),最終將使用交換。當IO大於指定百分比時發生IO錯誤。

長答案: 此百分比代表您的記憶體部分(實體記憶體 + 交換分割區或交換檔案}。假設您有 1TiB DIMM (RAM) 並依照 Redhat 的建議設定交換 100GiB,理論上講任何對 /data 超過 0.989 TiB 的 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. 我使用下面的腳本產生了 IO,該 IO 高於 /data 掛載路徑的 90%。

    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
    

相關內容