LINUX.ORG.RU

Кеш ФС, запретить кеширование опр. файлов, вытеснение важных вещей из памяти тупыми mp3-шниками.


0

0

Как я понимаю, shared libraries не обязательно должны быть загружены в памяти всё время. Динамический линкер или кто там за них отвечает, может выкинуть любую разделяемую библиотеку из памяти, даже если работают какие-то приложения, которые слинкованы с ней. В момент вызова какой-то функции из этой shared libraries линкер как-нибудь разберётся, что делать. Если shared library не в памяти, мы видим офигевание HDD.

Я так понимаю, shared libraries выкидываются из памяти растущим кешем файловой системы, который занимает всю не выделенную никем RAM. Какая там политика размещения файлов я не знаю, но по наблюдениям:

1. на каком-то из рабочих столов висел ktorrent, чё-то качал. Это такое приложение, которое слинковано более чем с 9000 библиотек, ибо оно толстое-КДЕ-шное. Ну вот, висит себе и работает. Переключаемся между рабочими столами, всё ништяк.

2. Начинаем распаковывать где-нибудь 4-гиговый архив. Распаковываемое, видимо, ложится в кеш, а некоторые гуёвые shared libraries, которые использовались Ktorrent из памяти выкидываются, да и ktorrent из них ничего не вызывает, ибо не нужно ничего рисовать, когда тебя не видно.

3. Переключаемся на рабочий стол, где запущен ktorrent. HDD начинает охреневать, ktorrent тужится себя нарисовать. Чё-то считывает с диска, и рожает свой GUI. В общем, я думаю, это охреневание - есть считывание динамическим линкером файлов .so, которые были вытеснены тем шлаком, который я распаковываю.


Вопрос такой: можно ли некоторым приложениям выделять лимит на использование этого кеша? То есть, чтобы распаковываемый архив с музоном не простирался на всю памяти, вытесняя реально нужные штуки?

Ответ на: комментарий от mriadus

включил ktorrent на отдельном десктопе
на другом поставил копироваться 4Гб файл. Вся свободная память забилась кешем, в свопе пусто. По окончанию переключился на рабочий стол с ktorrent - ничего с диска не грузилось, никаких задержек.

своп у меня отключён

может в этом проблема. Где-то слышал, что ядру не нравится работать совсем без свопа.
vfs_cache_pressure сколько установлено? Какой дистр и ядро?

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

Балансер, мне больше памяти под кеши не надо, т.к. эти кеши при любом их размере забьются при распаковке 20-гиговых архивчиков)

mriadus
() автор топика
Ответ на: комментарий от mriadus

уменьши dirty_ratio, highmem_is_dirtyable вписать 1, (http://www.linuxinsight.com/proc_sys_vm_hierarchy.html), покрути vfs_cache_pressure (все равно нет с него толку) и будет тебе счастье, то есть меньше будет жраться ОЗУ при копировании или вообще любых операциях с большими файлами...
но ведь кэш VFS не вытесняет никакие либы из памяти, что ты!!???

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

и отруби overcommit_memory или уменьши его значение (overcommit_ratio).
если у тебя нет свопа, а overcommit врублен (по дефолту там 50%), то оно и выделяет долбанную кучу памяти приложениям (а ее нет), вот в этом случае кстати и могут начать выгружаться либы, это да...

r0mik
()
Ответ на: комментарий от KRoN73

>Ну и зря. Включи и будет больше памяти под кеши.

У меня получилось строго наоборот. До выключения свопа кторрент за ночь отжирал всю память, сейчас сидит себе в паре гигабайт, и половина памяти уходит под буферы.

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