У меня есть система, которая собирает много данных, которые время от времени создают их резервные копии и отправляют в другую сервер. Моя проблема в том, что, хотя процесс сбора данных занимает 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
Установите пакет nocache:
sudo apt-get install nocache
Затем запустите свой процесс с помощью команды nocache:
nocache whatever
Это должно управлять сборкой кеша проблема с источником.
Чтобы отключить кеш записи, попробуйте следующее:
Отредактируйте /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
У вас НЕТ свопа!
$ 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, который очищал бы память.