Aleksey Salow (w00dy) wrote,
Aleksey Salow
w00dy

Category:

Windows 10: Про своп в винде

В винде своп отключать нельзя. Я б даже больше сказал, ручное управление не имеет смысла, только system managed. Это, в принципе, всё что вам нужно знать о свопе.

Опущу предысторию как я докатился до такой жизни, перейду сразу к деталям. Ключевой момент в нашем повествовании - выделение памяти в винде гарантированное. Т.е. если вы запросили сотни гигабайт и система вам не ответила отказом - значит можно смело эти сотни гигабайт пользовать и никто их у вас не отберёт пока сами не вернёте. Здесь есть коренное отличие от линуксов, в которых память выделяется по оптимистичному сценарию, можно всем пообещать золотые горы, а там уже как получится. Оба подхода имеют свои плюсы и минусы и оба имеют полное право на жизнь. Но вернёмся к винде. Т.к. компьютер у нас не резиновый, то существует верхний предел, больше которого система выделить памяти просто не может, и называется он у нас Commit Limit. Посмотреть его можно в Task manager, на закладке Performance, выбираем граф Memory и внизу буде Commited xx,x/yy,y GB. Вот второе число это и есть этот самый лимит, по сути это сумма физической памяти и всех свопов. Первое же число показывает Commit Charge - количество виртуальной памяти которые приложения зарезервировали у системы. Это именно резерв, ибо реальное выделение страницы памяти происходит только при обращении к ней.

А теперь представим гипотетическую ситуацию. Вы начитались умных статей в интернетах и отключили своп, типа у меня 32gb памяти, зачем мне этот рудимент? Потом запускаете всякие приложения которые память выделяют и не пользуют. Что в итоге видно в Task Manager:
  • Memory in use: 8,4 GB
  • Commit charge: 14,9 GB

В принципе памяти хватает, но потом запустили второе приложение, третье, в первом открыли большой проект, etc. и тут выскакивает сообщение что ресурсы кончились. Если быстро не среагировать, то у меня через 10-15 сек просто гаснут экраны и система перестаёт отвечать на запросы. Единственный выход - перезагрузка. После чего в логе находим запись от Microsoft-Windows-Resource-Exhaustion-Detector: Windows successfully diagnosed a low virtual memory condition. The following programs consumed the most virtual memory: <список 3-4 особо ценных приложений>. В Details:
  <SystemCommitLimit>35378827264</SystemCommitLimit> 
  <SystemCommitCharge>35239473152</SystemCommitCharge> 
  <PhysicalMemorySize>34305085440</PhysicalMemorySize> 
  <PhysicalMemoryUsage>21225635840</PhysicalMemoryUsage> 


Видно что physical memory у нас ещё 13gb есть, а вот commit charge уже "кончился", система захлёбывается и становится непредсказуемой.
Tags: software
Subscribe

  • О датах

    Запишем даты в список проклятых тем в этом вашем вайти в которые никто не умеет. У всех с этими датами, временем, таймзонами выходит какая-то херня…

  • Ремонт: часть 3, электрификация всей страны

    Советы по электрической части. Без философских рассуждений, строго по делу. Выбирая вот это всё, я руководствовался двумя простыми правилами: не…

  • Ремонт: часть 2, генплан

    В основе ремонта должен быть план. Что где стоит, куда подключено, куда сливает, и ответы на прочие насущные вопросы. Так уж получилось, что…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 4 comments