У нас есть задание на производственном веб-сервере, которое требует архивирования файлов из всей файловой системы. Он работает примерно 105 минут, и в это время Apache начинает подкачку, потому что чтение нескольких гигабайт файлов увеличило объем памяти для кеша файловой системы.
Данные, которые читает tar, не обязательно должны находиться в кеше файловой системы. Он попадает в tarfile и все. Есть ли что-нибудь, что можно сказать вроде tar cvf whatever/ --no-system-file-buffer-reads
? Мое чтение man tar
не показывает ничего, что могло бы помочь.
Вы не должны указывать, что это можно рассматривать как ситуацию «Док, больно, когда я так хожу! Так что не ходи так». Каким-то образом нам нужно выгружать файлы в tar-файл, поэтому не делать этого - не вариант.
Я думаю, на это есть ответ Вот:
Здесь нокаш служебная программа, которая может добавляться к командам, например, ionice и nice. Он работает путем предварительной загрузки библиотеки, которая добавляет
posix_fadvise
сPOSIX_FADV_DONTNEED
отмечать любые открытые звонки.Проще говоря, он сообщает ядру, что кэширование для этого конкретного файла не требуется; в этом случае ядро обычно не кэширует файл. Видеть Вот для технических деталей.
Он творит чудеса для любых огромных копий, например. грамм. если вы хотите сделать резервную копию многотерабайтного диска в фоновом режиме с минимальным влиянием на вашу работающую систему, вы можете сделать что-нибудь вместе
nice -n19 ionice -c3 nocache cp -a /vol /vol2
.