Ошибка -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

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

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

Заранее спасибо.

2 ответа

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

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

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

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

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

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

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

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

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

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

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

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