Что произойдет, если tmpfs достигнет предела, определенного в процентах

Переменные dql можно установить из сетевых драйверов, используя API библиотеки dql .

РЕДАКТИРОВАТЬ :Существует этот API netdev_tx_completed_queue, который будет обновлять значения dql. Я использовал собственный драйвер igb, и он никогда не вызывал этот API. Вот почему я получаю сообщения об истечении времени передачи.

-2
23.03.2020, 08:25
1 ответ

Краткий ответ:Если ваша физическая память не может обслуживаться процентной частью (90% ), в конечном итоге будет использоваться своп. Когда ввод-вывод превышает указанный процент, возникают ошибки ввода-вывода.

Длинный ответ:Процент представляет собой часть вашей памяти (физической памяти + раздел подкачки или файл подкачки}. Предполагая, что у вас есть 1TiB DIMM (RAM )и установлен swap 100GiB, как в соответствии с рекомендацией Redhat, теоретически любой ввод-вывод в /data выше 0,989 TiB будет вызывать ошибки ввода-вывода, как и любая другая файловая система. На практике, поскольку память и пространство подкачки используются всеми остальными компонентами, остерегайтесь взаимоблокировок, вызванных OOM не сможет очистить память в случае чрезмерного роста.

Вот доказательство того, о чем я говорю, выполненное на моем ноутбуке:

  1. Состояние системы перед записью ввода-вывода.

    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. Я использовал приведенный ниже сценарий для создания операции ввода-вывода, которая превышает 90 процентов пути монтирования /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 
    
  3. Давайте сгенерируем IO и посмотрим, что произойдет

    ceto@dell:~$ sudo sh deadlock.sh
    
  4. В выходном файле мы видим, что возникают ошибки ввода-вывода и система работает неряшливо

    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
    
1
28.04.2021, 23:19

Теги

Похожие вопросы