Ограничить буферный кеш - PullRequest
0 голосов
/ 17 марта 2011

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

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

Ответы [ 2 ]

3 голосов
/ 17 марта 2011

Чтение-запись не завершится просто потому, что BufferCache занимает много памяти.В качестве буфера для кэширования диска используется только неиспользуемая оперативная память, но если некоторым процессам требуется память, он получает более высокий приоритет.Это делается ядром автоматически, буферный кеш - оптимальное использование ресурсов, оно не наносит вреда нормальной работе системы.

1 голос
/ 12 января 2012

Общая проблема не в том, что чтение / запись не удастся, но ваши приложения зависнут и в конечном итоге потерпят неудачу.Вот очень простой эксперимент.Возьмите каталог с очень большими файлами и скопируйте его на очень медленное устройство.То, что вы найдете, 100% доступной памяти будет использовано кэшем записи.Этот кеш очищается только путем записи на медленное устройство.Проблема заключается в том, что происходит, когда приложению требуется память или необходимо выполнить обмен на что-то, что было перенесено на диск?Поскольку кэш-память пустует слишком медленно, единственным реальным вариантом является замена чего-либо еще на диск, чтобы освободить больше памяти.Так что теперь вся система бьется.Если у вас нет свободного места, у вас есть серьезные проблемы.В любом случае, ваш рабочий стол довольно вялый и, возможно, даже полностью заблокирован, пока не завершится копирование.

Пока я не знаю, как решить эту проблему, настройте vm.vfs_cache_pressure в направлении от 0 до и vm.swappiness в направлении0, чтобы помочь уменьшить эту проблему.

...