LINUX.ORG.RU

Как ограничить долю файлового кеша, который может отожрать опр. процесс или опр. файл.


0

0

Есть 10-гиговый файл - диск виртуалки. Когда по этому файлу шарится виртуалка, прочитанные части этого файла кладутся в файловый кеш (вся невыделенная процессами часть ОЗУ), вытесняя гораздо более полезные для меня в данный момент файлы оттуда.

Хотелось бы ограничить долю этого кеша, которая может быть использована для кеширования кусков этого 10-гигового файла. Грубо говоря, хотелось бы сказать системе «не юзай больше 50 мегабайт кеша для кеширования кусков данного файла».

Спасибо. Чеснокоеды.

Нормальные люди используют блочные девайсы (читай logical volume) вместо файлов. Сделай 10Гб раздел, слей на него файл -диск виртуалки и ничего не будет кэшироваться, да и работать будет быстрее.

sdio ★★★★★
()
Ответ на: комментарий от sdio

Уже нет места для разделов, к сожалению, на диске. Новых дисков не добавить - ноут.

mriadus
() автор топика

Если Вы готовы программировать, можно попробовать поступить примерно так:
1. Пишем библиотеку, которая перекрывает open (man 2 open) так, чтобы добавить в флаги открытия O_DIRECT
2. Подгружаем ее через $LD_PRELOAD перед запуском эмулятора
Более простые варианты, типа игрищ с sysctl, влияют на всю систему.

Nastishka ★★★★★
()
Ответ на: комментарий от Nastishka

Ну или еще одна «вариация на тему» - подшаманить losetup чтобы он открывал файл с O_DIRECT, а потом инициализированное блочное устройство подсовывать в виртуальную машину. Эффект будет тот же, но достигается практически гарантированно, в отличие от LD_PRELOAD.

Nastishka ★★★★★
()

Копать в сторону ядра и cgroup

AX ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.