Как частные байты processа могут быть значительно меньше его влияния на стоимость фиксации системы?

На 64-разрядной Windows Server 2003 я вижу, что с помощью taskmgr или explorer processа общий сбор транзакций составляет около 3,5 ГБ, но когда я суммирую частные байты, потребляемые каждым processом (путем запуска pslist -m и добавления всех значений под Priv ) общая sum составляет 1,6 ГБ.

Я знаю, какой process, по-viewимому, вызывает это (sqlservr.exe), как когда я убиваю process, плата фиксации резко падает. Однако рассматриваемый process потребляет только ~ 220 Мбайт частных байтов, но при этом process снижает стоимость фиксации на ~ 1,6 ГБ.

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

Примечание. Я утверждаю, что я уже понимаю разницу между зарезервированной и зафиксированной memoryю : мои исследования выше относятся конкретно к частным байтам, который вkeyает только зафиксированную memory и исkeyает зарезервированную memory. виртуальный размер processа в этом случае превышает 4 ГБ, но это должно быть неактуальным. Виртуальный размер в procexp представляет собой зарезервированную, не зафиксированную memory и не должен вносить свой вклад в плату фиксации.

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

Дальнейшие расследования

Я замечаю, что указание Sysinternals VMMap на этот process сообщает о преданных «частных данных » 1,6 ГБ, несмотря на то, что Procexp сообщил о частных байтах в 220 МБ. Это особенно странно, учитывая, что в документации для этого поля в «Справочнике администратора Windows® Sysinternals» указано, что:

Частная memory данных – это memory, которая выделяется VirtualAlloc и которая не обрабатывается диспетчером кучи или исполняемой средой .NET или не назначена категории Stack … Определение VMMap «Private Data» более подробно, чем у Process Explorer «Private bytes». «Частные байты» Procexp include в себя всю конфиденциальную memory, принадлежащую processу.

т.е. то, что данные VMMap «Частные данные» должны быть меньше, чем «Частные байты» procexp.

Кроме того, после прочтения раздела «Обработанная memory» превосходного « Потока границ Windows»: «Виртуальная memory» Марка Руссиновича он выделяет два случая, которые не будут отображаться в «Частных байтах»:

  • Отображение сопоставления fileов с семантикой copy-on-write (однако, согласно VMMap, для Mapped Files less значительного пространства).
  • (однако, я попробовал testlimit с флагом -l как было предложено, и значительная memory не потребляется разделами с подписями)

One Solution collect form web for “Как частные байты processа могут быть значительно меньше его влияния на стоимость фиксации системы?”

Изменить: Обратите внимание, что раздел комментариев теперь не имеет значения, потому что мой первоначальный ответ ушел.

Ваш вопрос:

Как частные байты processа могут быть значительно меньше его влияния на стоимость фиксации системы?

На это можно ответить прямой цитатой от Марка Руссиновича:

Существует два типа виртуальной памяти processа, которые относятся к пределу фиксации: private и подкасты.

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

Файловая memory, защищенная fileом подкапотного fileа, трудно отнести к определенному processу, поскольку она совместима между processами. Не существует счетчика производительности, специфичного для processа, который может рассказать вам, сколько виртуальной памяти, поддерживаемой fileом подкасты, какой-либо process был выделен или ссылается, но все же он учитывает лимит фиксации.

Эта статья является авторитетной статьей на эту тему, и в этой статье он специально демонстрирует случай, когда process выделил тонны VM с поддержкой fileовой системы, но частные байты processа остаются очень низкими.

Он также показывает вам, как использовать handle.exe для определения размера выделения дескрипторов для objectов раздела. Вот как вы можете определить, какой process оказывает такое большое влияние на плату фиксации.

Вы упомянули, что вы уже посмотрели sqlservr.exe с помощью handle.exe и что у него less дескрипторов, открытых для значительного количества objectов раздела, которые учитывали бы плату фиксации, которая была выпущена, когда вы убиваете sqlservr.exe .

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

SQL Server – это массивный и сложный продукт, состоящий из множества различных processов, которые совместно работают над системой для предоставления всех служб SQL Server. Фактически SQL Server имеет свой собственный менеджер внутренней памяти, который может сделать его простым и понятным с точки зрения инструментов, предназначенных для измерения распределения виртуальной памяти Windows.

sqlservr.exe не действует в одиночку. Есть также

  • msmdsrv.exe (службы Analysis Services)
  • sqlwriter.exe (SQL VSS Writer)
  • sqlagent.exe (агент SQL)
  • fdlauncher.exe (полноtextовый filter Daemon Launcher)
  • fdhost.exe (полноtextовый хост)
  • ReportingServicesService.exe
  • SQLBrowser.exe

Когда я убиваю sqlservr.exe , sqlagent.exe также автоматически умирает. Это означает, что стоимость фиксации системы будет уменьшаться на величину, приносимую ему обоими processами. Другие SQL-связанные processы могут также выпускать разделы с sqlservr.exe при sqlservr.exe , даже если сами processы остаются запущенными. Все это приведет к тому, что текущий сбор sqlservr.exe системы упадет, когда sqlservr.exe будет убит, даже если они никогда не были частью частных байтов sqlservr.exe .

  • Как установить и использовать инструменты cli53 в Windows?
  • linux 802.1x на проводной сети Windows
  • Массовые windows serverов обновлений
  • Автоматическая перезагрузка службы Windows в зависимости от определенного интервала времени
  • Служба Java не может отображать fileы в directoryах
  • Разрешить стандартным пользователям запускать программу в качестве локального администратора без запроса на ведение
  • конфликт с режимом киоска Internet Explorer и панель задач Windows 10
  • SSL не работает с Apache в Windows
  • Доступ к вложенным папкам из общего доступа к windowsм из linux
  • Удаленное подkeyение к рабочему столу прерывается при вkeyении машины vmware
  • Как save настройки при переустановке Ubuntu 9.04?
  • Interesting Posts