tmpfsがパーセンテージで定義された制限に達した場合はどうなるか

tmpfsがパーセンテージで定義された制限に達した場合はどうなるか

次のように定義したとします/etc/fstab

tmpfs /data tmpfs size=90% 0 0
そして私たちは

mount -a

/datatmpfs

次のシナリオでは何が起こるでしょうか

RAM メモリの/data使用率が90% に達した場合、この場合、それ以上の使用率はスワップ メモリに使用されることになりますか?90%tmpfs90%

答え1

短い答え: 物理メモリがパーセンテージ部分 (90%) を提供できない場合、最終的にはスワップが使用されます。IO が指定されたパーセンテージよりも大きい場合、IO エラーが発生します。

長い答え: パーセンテージはメモリの割合(物理メモリ + スワップパーティションまたはスワップファイル)を表します。1TiB DIMM(RAM)があり、Redhatの推奨に従ってスワップを100GiBに設定していると仮定すると、理論的には、0.989 TiBを超える/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
    

関連情報