Ошибка -12 в спящем образе. Недостаточно свободной памяти (иногда)

У меня проблема с гибернацией в Ubuntu 12.10, она отлично работала в 12.04. Когда я пытаюсь перейти в режим гибернации, иногда кажется, что режим гибернации выдает ошибку и возвращает меня на рабочий стол. Я получаю следующую ошибку:

PM: Creating hibernation image:
PM: Need to copy 375021 pages
PM: Normal pages needed: 117957 + 1024, available pages: 110205
PM: Not enough free memory
PM: Error -12 creating hibernation image

Теперь я понимаю, что означает ошибка, но она не имеет смысла. Мой файл подкачки имеет размер 5 ГБ и редко используется, так как у меня 4 ГБ ОЗУ. Я знаю, что рекомендуется иметь в 1,5 раза больше подкачки, чем ОЗУ и т. Д., Но, похоже, проблема не в объеме, несмотря на ошибку.

Например, я редко использую более 25-30% своей оперативной памяти, но проблема все еще остается выше.

Более того, при новой загрузке и входе в систему, при отсутствии открытых программ и использовании только около 12% ОЗУ, я могу получить вышеуказанную ошибку - но в других случаях я могу переходить в спящий режим, используя 25% своей ОЗУ.

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

PM: Creating hibernation image:
PM: Need to copy 295511 pages
PM: Normal pages needed: 95534 + 1024, available pages: 132627

Есть ли какие-то настройки, которые мне нужно настроить, или что-то, что мне нужно сделать перед гибернацией, чтобы избежать этой проблемы?

Я думаю, вопрос может лучше интерпретировать как: есть ли какой-нибудь способ безопасной очистки буферов и кеша перед гибернацией? Кроме попыток гибернации несколько раз, пока она не будет успешной!

Спасибо заранее.

1
задан 1 November 2012 в 20:28

2 ответа

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

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

По какой-то причине я снова попробовал спящий режим без команды ниже, чтобы очистить кеш, и все прошло успешно. Впервые с тех пор я впал в спячку без проблем, даже иногда с использованием 30-40% ОЗУ и без необходимости сначала очищать кэш, и это всегда успешно.

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

Надеюсь, это кому-нибудь пригодится.

0
ответ дан 1 November 2012 в 20:28

Я считаю, что я нашел здесь частичное решение . Если я ввожу команду:

sudo sync && sudo sysctl -w vm.drop_caches=3

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

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

Вероятность того, что это не так, является причиной рекомендуется иметь удвоенный размер оперативной памяти для подкачки; ужасно неэффективно, особенно во времена твердотельных накопителей, где, если у вас есть 16 ГБ ОЗУ, вы потеряете 32 ГБ (возможно, половину вашего HD-пространства) для файла подкачки, который когда-либо использовался только в спящем режиме.

С учетом постоянно увеличивающихся размеров оперативной памяти, я бы сказал, что это область, которая нуждается в изучении. HD-пространство может быть дешевым, но это не повод тратить его из-за неэффективности.

0
ответ дан 1 November 2012 в 20:28

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

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