Как отключить PageCache?

У меня есть система, которая собирает много данных, которые время от времени создают их резервные копии и отправляют в другую сервер. Моя проблема в том, что, хотя процесс сбора данных занимает 2-3% памяти, остальная часть ОЗУ заполняется PageCache, что вызывает у меня проблемы.

sysctl -w vm.drop_caches = 1

очищает память , и я могу настроить хронологическую очистку сейчас и потом, но это кажется неэлегантным решением. Я бы предпочел полностью отключить кеш страниц на рейд-диске, который использует приложение, или, если это невозможно, на всем сервере.

Я пробовал этот код для запуска приложения, и у меня это не работает, кэш страниц продолжает накапливаться.

Я запускаю программу на сервере Ubuntu 20

Как мне отключить кэш страниц на жестком диске / всей системе?

ОБНОВЛЕНИЕ

Вот это бесплатно со временем:

>>> free
              total        used        free      shared  buff/cache   available
Mem:        3981820      202180     3600504         852      179136     3565116
Swap:             0           0           0
>>>free
              total        used        free      shared  buff/cache   available
Mem:        3981820      202336     3593204         852      186280     3561364
Swap:             0           0           0
>>>free
              total        used        free      shared  buff/cache   available
Mem:        3981820      203132     3505208         852      273480     3547512
Swap:             0           0           0

Buff / cache продолжает расти, пока я не очищу память

>>>sudo lshw -C memory
  *-firmware                
       description: BIOS
       vendor: Amazon EC2
       physical id: 0
       version: 1.0
       date: 10/16/2017
       size: 64KiB
       capacity: 64KiB
       capabilities: pci edd acpi virtualmachine
  *-memory
       description: System memory
       physical id: 1
       size: 4GiB
>>>sysctl vm.swappiness
vm.swappiness = 60
0
задан 25 August 2020 в 19:22

3 ответа

Установите пакет nocache:

sudo apt-get install nocache

Затем запустите свой процесс с помощью команды nocache:

nocache whatever

Это должно управлять сборкой кеша проблема с источником.

0
ответ дан 4 January 2021 в 08:24

Чтобы отключить кеш записи, попробуйте следующее:

Отредактируйте /etc/hdparm.conf.[1247 providedUncomment the second из этих двух строк, чтобы это выглядит так:

# -W Disable/enable the IDE drive's write-caching feature
write_cache = off

Чтобы включить кэш записи:

Отредактируйте /etc/hdparm.conf.

Прокомментируйте вторую из этих двух строк, чтобы она выглядела так:

# -W Disable/enable the IDE drive's write-caching feature
# write_cache = off
0
ответ дан 4 January 2021 в 08:24

У вас НЕТ свопа!

$ free

              total        used        free      shared  buff/cache   available
Mem:        3981820      202180     3600504         852      179136     3565116
Swap:             0           0           0

Давайте создадим /swapfile...[1254ghtNote: неправильное использование команды dd может привести к передаче данных потеря. Предложите скопировать / вставить.

sudo swapoff -a           # turn off swap
sudo rm -i /swapfile      # remove old /swapfile

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

sudo chmod 600 /swapfile  # set proper file protections
sudo mkswap /swapfile     # init /swapfile
sudo swapon /swapfile     # turn on swap
free -h                   # confirm 4G RAM and 4G swap

Подтвердите эту строку в / etc / fstab ... и подтвердите отсутствие других строк «подкачки» ...

/swapfile    none    swap    sw      0   0

reboot                    # reboot and verify operation

Обновление №1:

Я провел небольшое расследование проблемы и обнаружил, что Проблема, с которой я столкнулся, когда приближался к пределу свободной памяти, на самом деле заключалась в том, что программа достигла предела открытых файлов, поэтому я решил это исправить. Добавление / удаление подкачки не имело никакого значения, равно как и запуск cronjob, который очищал бы память.

2
ответ дан 4 January 2021 в 08:24

Другие вопросы по тегам:

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