![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
ssds |
|
|||
Unregistered |
Хотел бы спросить у того кто профессионально разбирается в ядре Линукса вопрос, который не дает покоя последнее время.
Вот вычитал: "В ядре 2.4 (и видимо 2.6 -мое примечание) исповедуется Сановский принцип: свободная память - потерянная память. Т.е. из вывода команды free: размер свободной памяти явлется суммой free+cached". Сached - это память страничного кэша. Рассмотрим ситуацию - программа работает с кучей файлов, постепенно открывая одни и закрывая другие, уже не нужные. Файлы засасываются в память, это как раз в страничный кэш. После закрытия файла - в кэше еще остаются страницы с этим файлом. Так вот можно ли считать что эти страницы не мешают дальнейшей работе?? Из утверждения про Сановский принцип по сути эти страницы -свободные, но ведь ядро выполнит какие то действия что бы использовать под другие задачи? В ядре употребляется "reclaim pages" -типа очищения-восстановления страниц - вроде это связанно именно с теми действиями. Имеет ли смысл "затачивая" ядро под упомянутую программу, ускорить каким либо образом очистку страничного кэша? (при большой нагрузке программы -памяти не хватает) И еще, в файле /proc/meminfo помимо значения Сached есть Active и Inactive. Если прочитать большой файл и закрыть его, то его кэш останется -это видно по значеню Cached и в то же время параметр "Active" будет показывать что страницы оставшиеся от файла - в списке активных. Вообще про этот параметр "Active" пишут что это есть память которая используется наиболее часто и будет очищена-восстановлена только при крайней необходимости. Возвращаясь к моему вопросу -может стоит делать эти страницы неактивными- чтобы они быстреевосстанавливались..? |
|||
|
||||
GrayCardinal |
|
||||||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
ИМХО, можно и нужно.
Однозначно ![]()
"Памяти не хватает". Ошибка такая вылазит что-ли ? Если кэш большой, а размер свободной памяти 1-2 мб. Это обычная ситуация. Смысла, имхо не имеет. Хотя не знаю. Я для "чистки" пользовал bzero(malloc (100000000), 100000000); - результат очень не понравился. Жуткий тормоз (потом, после чистки уже) |
||||||
|
|||||||
Ni@m |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 11.3.2004 Где: почти Киев Репутация: нет Всего: 6 |
Принцип линуксового ядра - оставлять кєшированные файлы в памяти как можно дольше. Естественно, если память понадобится под процессы - она освободится. Но когда файл закеширован, в следующий раз к нему обратится будет гораздо быстрее.
--------------------
Обучение - как переливание воды из одной чашки в другую: всегда лучше, чтоб чашка со знаниями нахордилась выше. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |