Почему моя система использует так много кэша?

Ранее, на моем настольном компьютере под управлением Ubuntu 14.04, у меня было 4 ГБ RAM, которая я думал, должно быть много. Однако после хождения некоторое время, мой компьютер, казалось бы, стал бы медленным. У меня есть приложение для монитора системного ресурса в моей панели Gnome, которую я принимаю, представляет доступную RAM (?). Это показывает темную зеленую зону, как являющуюся "Памятью" и светлой зеленой зоной как "Кэш". "Кэш" медленно рос бы, пока он не заполнил целый график, и затем программы станут медленными для загрузки, или он требовал бы времени к программам переключателя.

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

sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches"

Так, я полагал, что получу больше RAM, таким образом, я заменил одну палку на 2 ГБ палкой на 8 ГБ, и теперь у меня есть поршень на 10 ГБ.

И мой "кэш" все еще медленно макси и мой компьютер замедляются в результате. Кроме того, иногда запуски компьютера с "кэшем" maxed, когда я сначала загружаюсь и вхожу в систему. Не всегда, хотя, я не знаю, существует ли шаблон, который определяет, почему это происходит.

Почему Ubuntu израсходовала так много кэша? Достаточно 10 ГБ для Ubuntu?

Вот то, на что мой системный монитор похож в моей панели Gnome. Средний квадрат показывает Использование оперативной памяти. Светлой зеленой зоной является "кэш":

Cache near max

Это - моя память и история подкачки, которая, кажется, не включает информации о "кэше". Я понимаю в этой точке, я не полностью ясен на различии между "кэшем" и "подкачкой":

memory and swap

4
задан 10 June 2014 в 19:51

3 ответа

Вероятно, необходимо уменьшить swappiness.

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

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

Этим процессом свободно управляют /proc/sys/vm/swappiness. Для получения дополнительной информации проверьте превосходные ответы на то, Почему большинство людей рекомендует уменьшить swappiness до 10-20? и Как я настраиваю swappiness?.

8
ответ дан 23 November 2019 в 11:36

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

Кэширование в целом состоит в том, куда мы помещаем копию чего-то, что или медленно, чтобы получить или замедлиться, чтобы вычислить где-нибудь, что быстрее для получения. Программа могла бы сохранить результат вычисления в памяти, веб-прокси мог бы сохранить копию ресурса от сети на машине на Вашей LAN и, в этом случае, система могла бы хранить данные от жестких дисков в RAM (и некоторые другие данные).

И потому что это заставляет систему пойти быстрее, имеет логический смысл использовать каждый килобайт, это не используется чем-то еще. Опции для блока памяти, которую ничто иное не использует, в конце концов:

                      |Use For Cache | Don't Use For Cache
——————————————————————+——————————————+————————————————————
Data needed again     |Faster system | No difference
Data not needed again |No difference | No difference

Поэтому необходимо всегда использовать каждый бит памяти, это ничего не делает для кэша.

Система, которая имеет 10% RAM, используемой для различных вещей и 90% из него используемый для кэша, не должна считаться тем, "чтобы истратить". Это должно считаться используемыми 10% с еще свободными 90% и поэтому используемыми для кэша, в то время как ничему не нужен он.

Однако, если мы рассматриваем свопинг, это - почти противоположность кэширующихся данных из диска в RAM: Где кэширование использует RAM для ускорения ввода-вывода (и потенциально другие вещи), подкачка страниц использует дисковое пространство для расширения RAM.

Таким образом, когда система имеет всю свою RAM, используемую, и ей нужен больше, она имеет две опции:

  1. Выбросьте часть кэша, так как это - только оптимизация, в конце концов.
  2. Страница некоторая RAM, используемая для чего-то еще.

Нет никакого универсального ответа на, который из них является лучшим. Идеальный ответ зависит от набора вещей, которые не могут быть предсказаны, и даже лучший ответ зависит от набора вещей, которые зависят от Вашей настроенной системы и как Вы используете его.

Обратите внимание, что эти противоположные действия действительно имеют смысл одновременно: Каждый - о приоритизации slow-to-get информация, в которой Вы, вероятно, будете нуждаться, другой об информации о de-приоритизации, в которой Вы не испытываете необходимость скоро.

250 МБ не много, таким образом, я не был бы ужасно взволнован, но для настольной системы высокой RAM для интерактивного (а не сервер) использование, я мог бы экспериментировать с сокращением swappiness, для изменения уравновешивания здесь. Этот ответ очень хорош на том, почему это, вероятно, не будет иметь большого значения, но это - разумная вещь экспериментировать с видеть, идет ли это.

У Вас есть намного большая проблема для контакта с первым, который является, что кто-то работает sudo sh -c "sync; echo 3 > /proc/sys/vm/drop_caches" на Вашей машине время от времени, которая убирает быстрые к доступу данные из в других отношениях неиспользованной RAM и вынуждает систему повторно вычислить или повторно получить то, что это должно смочь просто захватить из памяти. Это собирается сделать систему медленнее и RAM пустая трата денег.

5
ответ дан 23 November 2019 в 11:36

И мой "кэш" все еще медленно макси и мой компьютер замедляются в результате.

Необходимо будет в другом месте искать причину замедления; память, описанная как “кэш”, является памятью, которую может свободно выбросить ядро, если чему-либо еще нужна RAM. Это - вещи как данные, недавно считанные с диска.

Это, в то время как довольно старый, является все еще разумным описанием некоторых подвижных частей в подсистеме памяти. Как это говорит,

Linux имеет это основное правило: страница свободной RAM является потраченной впустую RAM.

Неважно, сколько RAM Вы имеете, Ваш кэш вырастет для заполнения ее. Это не повод для беспокойства. Отнюдь нет это - очень значительная оптимизация производительности - RAM приблизительно в 100 раз быстрее, чем быстрый SSD, таким образом, любое время, которое Вы не должны читать из диска, является огромной победой.

4
ответ дан 23 November 2019 в 11:36

Другие вопросы по тегам:

Похожие вопросы: