Mac OS X Mavericks зависает, перестает отвечать при нехватке памяти

9

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

Я могу использовать компьютер, если я вхожу в систему с другого компьютера с помощью SSH или с пульта дистанционного управления с телефона (я использую Rowmote). Он очень медленный, но реагирует.

В этом состоянии я могу делать очень мало вещей. Запуск новых приложений - это рулетка, например, я мог запустить Activity Monitor (ничего странного не было видно), но запустить консоль после этого было невозможно. Закрытие приложений дало странные результаты, пока, наконец, оно не перестало отвечать и на пульт. Интересно, что удаленное приложение не считало, что оно потеряло соединение, поэтому каким-то образом оно все еще получало и подтверждало удаленные команды.

Вот соответствующий /var/log/system.logвывод с момента, когда это произошло:

Jan  3 10:39:19 knifen.local WindowServer[119]: CGXCreateShmem : mach_make_memory_entry(268453900: unknown error code) : Cannot map memory
Jan  3 10:39:19 knifen.local WindowServer[119]: _CGXCreateWindowInline: Creation failure 1007
Jan  3 10:39:19 knifen.local Dock[15204]: CGSNewWindowWithOpaqueShape: Cannot create window
Jan  3 10:39:19 knifen.local WindowServer[119]: CGXCreateShmem : mach_make_memory_entry(268453900: unknown error code) : Cannot map memory
Jan  3 10:39:19 knifen.local WindowServer[119]: _CGXCreateWindowInline: Creation failure 1007
Jan  3 10:39:19 knifen.local Dock[15204]: CGSNewWindowWithOpaqueShape: Cannot create window
Jan  3 10:39:28 knifen.local WindowServer[119]: BUG in libdispatch: 13A603 - 2930 - 0x1000480c
Jan  3 10:39:51 knifen kernel[0]: IOHIDSystem: postEvent LLEventQueue overflow.
Jan  3 10:40:50 knifen.local Spotify[13941]: Got disconnected: Error Domain=GCDAsyncSocketErrorDomain Code=4 "Read operation timed out" UserInfo=0xfa075f0 {NSLocalizedDescription=Read operation timed out}
Jan  3 10:40:55 knifen kernel[0]: IOHIDSystem: postEvent LLEventQueue overflow.
Jan  3 10:41:50 knifen.local hidd[95]: IOHIDEventQueue unable to get policy for event of type 11. (e00002e8)
Jan  3 10:41:56 --- last message repeated 113 times ---

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

lericson
источник

Ответы:

4

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

Маверикс гораздо реже выделяет полный объем ОЗУ для / var / db / sleepimage, поэтому у людей, привыкших к тому, что это пространство было выделено заранее, могут возникнуть сюрпризы, когда ОС требуется небольшое пространство для увеличения образа сна, если этого требуют условия работы.

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

Вот мои рекомендации:

  • Какого масштаба или меры придерживается «давление памяти» Маверикса и Йосемити? имеет некоторую хорошую информацию о мониторинге и вызывая давление памяти на команду
  • загрузите вашу систему, войдите под одним пользователем, закройте все приложения
  • откройте монитор активности и наблюдайте / записывайте экран памяти
  • переведите машину в режим сна и разбудите ее через 30 секунд
  • запустите sudo du -sm /var/vm/*и обратите внимание, насколько велик ваш файл образа сна, а также созданы ли на диске какие-либо файлы подкачки.

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

Кроме того, если вы чувствуете, что настройка системы неверна, вы можете легко подать отчет об ошибке, запустив sysdiagnoseпосле чистой загрузки, как описано выше, еще раз, когда система правильно выполняет запланированную рабочую нагрузку, и один последний sydiagnoseзапуск после того, как вы вызвали память ассигнования, чтобы начать ломать систему. Возможно, есть и лучший выбор, который Apple могла бы сделать, но это также может быть из-за того, что ваше программное обеспечение содержит ошибки или происходит утечка памяти, а система ломается, как и предполагалось, когда ограниченные ресурсы исчерпаны. Без подробностей трудно сказать, в чем дело.

bmike
источник
2

«shmem» является общей памятью, и OS X не может выделить общую память. Поэтому кажется, что в компьютере не хватает памяти, как ОЗУ, так и памяти жесткого диска. Это тот случай? Во время замораживания оставалось около 1 ГБ свободного места.

  • Освободите место на диске, удалив файлы
  • Освободите память, закрыв приложения

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

lericson
источник