private bytes что это
Не доверяйте информации о памяти в Диспетчере задач
tl;dr: Диспетчер задач скрывает информацию о подкачке (paged memory) и виртуальном пространстве процесса. Лучше используйте Process Explorer из комплекта Sysinternals.
Выделение памяти в Windows
При запуске нового процесса ОС присваивает этому процессу непрерывное адресное пространство. В 32-разрядных системах это пространство может составить 4 ГБ, обычно 2 ГБ для ядра, а остальное для процесса. В этой статье проигнорируем использование памяти ядром. В 64-разрядных системах зарезервированная процессом память может вырасти до колоссальных 64 ТБ. Что этот процесс будет делать с несколькими терабайтами памяти, когда у нас на самом деле жалкие 8 ГБ? Сначала нужно понять, что такое зарезервированная и переданная память.
Зарезервированная и переданная память
Не все части этого огромного адресного пространства равны. Некоторые части адресного пространства процесса фактически поддерживаются либо физической оперативной памятью, либо диском (см. ниже). Зарезервированная память считается переданной (Committed), если ОС предлагает вам эту память при попытке её использовать. Остальная часть адресного пространства, а это подавляющее большинство, остаётся доступным для резервирования. То есть не всегда ОС может предложить вам этот блок памяти для использования: она может сделать копию на диске (файл подкачки), например, а может и не сделать. В C++ резервирование памяти осуществляется вызовом VirtualAlloc. Так что переданная память является аппаратно ограниченным ресурсом в ОС. Давайте посмотрим.
Файл подкачки ОС
Файл подкачки — замечательная идея. В принципе, ОС понимает, что некоторые части памяти особо не используются вашим приложением. Зачем тратить на него реальную физическую память? Вместо этого процесс в ядре записывает этот неиспользуемый фрагмент на диск. Пока к нему не обратятся снова, только тогда он вернётся в память.
Для более подробного объяснения, как работает память в Windows, рекомендую лекцию «Тайны управления памятью» Марка Руссиновича.
Отслеживание памяти
Здесь много за чем нужно следить и анализировать. К кому обратиться? Конечно, к Диспетчеру задач!
Память в RAM обычно называют рабочим набором (Working Set), в то время как всю выделенную память обычно именуют Private Bytes. Библиотеки DLL вносят путаницу в определения, поэтому пока их проигнорируем. Иначе говоря:
Private Bytes [выделенная память] = рабочий набор + файл подкачки
По умолчанию Диспетчер задач показывает для любого процесса именно рабочий набор:
Диспетчер задач позволяет добавить информацию о переданной памяти, если щёлкнуть правой кнопкой мыши по столбцам и выбрать соответствующий пункт
Эффективные метрики памяти
К счастью, есть много других ресурсов для отслеживания ресурсов. На каждой машине под Windows установлен PerfMon (Системный монитор), который выдаёт очень подробную информацию о каждом процессе и системе в целом:
Интересно, что Системный монитор умеет фактически исследовать и сравнивать метрики на двух или более компьютерах в сети. Это очень мощный инструмент, но Диспетчер задач, очевидно, удобнее для пользователей. В качестве промежуточного решения рекомендую Process Explorer:
Бум! Visual Studio, чего это ты до сих пор в 32-битном режиме (обратите внимание на его Virtual Size)? Пиковое использование памяти на моём компьютере на уровне 89% от максимума, ещё терпимо. Это пригодится позже.
Дополнение: многие указали на другие удобные инструменты, в том числе VMMap и RAMMap.
Отладка по информации о памяти
К счастью, это не какие-то ненужные мелочи ОС. Актуальная информация о потреблении памяти многократно помогала мне в отладке разных проблем.
Самое главное, это найти нетронутые части выделенной памяти. Данные о подкачке тоже важны: эта память передана, но используется редко или вообще не используется.
Даже если память будет иногда использоваться, важно понимать, что это дорогой ресурс, так что идти по такому пути ни в коем случае нельзя. Здесь появятся и утечки памяти.
По этим причинам я ранее слышал предложение полностью удалить файл подкачки и приравнять выделенную память рабочему набору. Однако это обоюдоострая идея. Тогда ОС не в состоянии сбросить память в случае неправильной работы приложений, которые иногда впустую резервируют память.
Знакомство с Process Explorer
2. Знакомство с Process Explorer
Полное руководство по Process Explorer
В этом уроке из «Серии уроков по пакету утилит SysInternals» рассматривается Process Explorer, возможно, наиболее часто используемое и полезное приложение в наборе инструментов SysInternals. Но насколько хорошо вы действительно знаете эту утилиту?
Process Explorer, диспетчер задач и приложение для мониторинга системы, существует с 2001 года, и хотя раньше оно работало даже в Windows 9x, современные версии поддерживают только XP и выше, и они постоянно пополняются новыми функциями для современных версий Windows. Фактически, эта программа стала стандартом для устранения неполадок.
Если вы скачали полный пакет SysInternals, то для запуска Process Explorer дважды кликните на файл procexp64.exe или на файл procexp.exe (для 64- и 32-битных систем соответственно.
Итак, что может сделать Process Explorer?
Некоторые из лучших функций включают следующие, хотя это ни в коем случае не исчерпывающий список. Это приложение имеет множество функций, и многие из них скрыты глубоко внутри интерфейса. Удивительно, но это всё помещается в маленький файл.
Каждый раз, когда у вас возникает проблема с приложением, или что-то продолжает зависать на вашем компьютере, или, может быть, вы пытаетесь выяснить, для чего используется конкретный файл DLL, Process Explorer — это инструмент как раз для этой работы.
Понимание древовидного представления процессов
Когда вы запускаете Process Explorer, вам сразу же предоставляется множество визуальных данных — по умолчанию показывается иерархическое древовидное представление процессов, запущенных на вашем компьютере, среди прочего для каждого процесса показывается использование ЦП и ОЗУ. В верхней части панели инструментов есть несколько небольших мини-графиков, показывающих использование ЦП, которые можно щёлкнуть для отображения в отдельном окне.
Определённо много чего происходит, и при первом взгляде происходящее на экране может ошеломить.
Давайте начнём разбираться с каждым из элементов того, что показывает Process Explorer.
На начальном экране отображается набор столбцов, в который входят:
Вы можете настроить эти столбцы и добавить множество других параметров, или вы можете просто щёлкнуть любой из столбцов для сортировки по этому полю. Если вы когда-либо использовали Диспетчер задач раньше, вы, вероятно, сортировали по памяти или ЦП, и вы также можете сделать это здесь.
При нажатии на «Process» выполняется переключение между сортировкой по имени процесса или возвратом к древовидному представлению, которое мы видим по умолчанию, что очень полезно, когда вы к этому привыкнете.
Выводимая информация обновляется один раз в секунду, но вы можете перейти в меню View → Update Speed и настроить частоту обновления: минимальное значение составляет 0,5 секунды, а верхний уровень — 10 секунд. Если вы используете его для устранения неполадок, значение по умолчанию, вероятно, подойдёт, но если вы хотите использовать его в качестве монитора ЦП, находящегося на панели задач, то чтобы программа потребляла меньше процессорного времени, то можно выбрать частоту обновления в 5 или 10 секунд.
Вы также можете приостановить просмотр в том же подменю или просто нажав клавишу пробел. Это заморозит экран программы и вы получите моментальный снимок, что может быть полезно, если вы пытаетесь определить процесс, который запускается и быстро умирает, или если вы решили отсортировать по загрузке ЦП, а все строки продолжают прыгать.
Для запущенного процесса можно открыть подробное представление и детально изучить все столбцы. Вам нужно знать, что если вы нажали на паузу и экран не обновляется, то хоть вы и сможете видеть процесс, который завершил свою работу, в подробном представлении для завершённых процессов не показывается дополнительная информация. По этой причине следует заранее добавить дополнительные столбцы в окно программы, если вы отлавливаете и изучаете процесс, который быстро завершает свою работу.
Что означают цвета в Process Explorer
В типичном списке Process Explorer определённо много цветов, что может немного сбивать с толку начинающего компьютерщика. Очень важно узнать, что означают все эти цвета, потому что они предназначены не только для красоты — каждый из них имеет своё значение.
Если вы не можете вспомнить, что означает один из цветов, вы можете перейти в меню Options → Configure Colors, чтобы открыть диалоговое окно «Color Selection». По сути, это краткая шпаргалка что какой цвет означает. Продолжайте читать, так как мы собираемся объяснить здесь значение всех цветов Process Explorer.
Основываясь на цветах на картинке выше, вот что означает каждый из выбранных элементов (остальные на самом деле не важны).
Поскольку, очевидно, что один и тот же процесс может иметь свойства более чем одной описанной группы, цвета будут применяться в порядке приоритета. Если процесс является сервисом и приостановлен, он будет отображаться тёмно-серым цветом, поскольку этот цвет более важен.
Порядок приоритета процессов, который нам удалось составить во время исследования программы: Suspended → Packed → Immersive → Services → Own Processes (то есть Приостановлено → Упаковано → Иммерсивное → Службы → Собственные процессы).
Проверка идентичности приложения
Один действительно полезный параметр, который, к нашему удивлению, не включён по умолчанию, находится в разделе Options → Verify Image Signatures (Проверить подписи образа).
Эта опция проверяет цифровую подпись для каждого исполняемого файла в списке, что является неоценимым инструментом для устранения неполадок, когда вы смотрите на какое-то работающее подозрительное приложение этом в списке.
На данном этапе подавляющее большинство программного обеспечения с хорошей репутацией должно иметь цифровую подпись. Если что-то не так, вам следует очень внимательно подумать, следует ли вам его использовать.
Действия над процессами
Вы можете быстро принять меры к любому процессу, щёлкнув его правой кнопкой мыши и выбрав один из вариантов или, если хотите, используя сочетания клавиш. Эти варианты включают:
И, очевидно, если вы откроете Properties (Свойства), это приведёт вас к ещё более полезной информации о процессе, многое из чего мы рассмотрим в следующем уроке.
Запуск от имени администратора
Хотя вам совершенно не обязательно запускать Process Explorer от имени администратора, без этого многие полезные функции не будут работать, и вы не сможете увидеть так много информации о каждом процессе, как запустив программу с повышенными привилегиями.
Если вы работаете в Windows XP или 2003, вам нужно будет работать под учётной записью с полными правами администратора для использования большинства функций. Вероятно, это не проблема для большинства людей, потому что XP в любом случае предоставляет дефолтной учётной записи полные права, но если вы пытаетесь использовать программу на работе без прав администратора, это не сработает.
Чтобы запустить приложение в качестве администратор просто щёлкните правой кнопкой мыши и выберите нужный вариант в меню.
Интересный факт: Process Explorer на самом деле использует привилегию Debug Programs, которая во многом объясняет, почему она настолько эффективна.
Как сделать так, чтобы Process Explorer всегда запускался от имени администратора
Если вы хотите, чтобы Process Explorer всегда открывался с правами администратора без необходимости открывать контекстное меню, то в контекстном меню откройте Свойства файла procexp64.exe (или procxp.exe), перейдите на вкладку «Совместимость», а затем выберите параметр «Запускать эту программу от имени администратора».
Использование Process Explorer для замены диспетчера задач
Process Explorer долгое время использовался в качестве мощной замены ранее анемичного встроенного Диспетчера задач — если вы хотите получить реальную мощь в своих руках, он справится с этой задачей.
Примечание. Диспетчер задач Windows 10 значительно улучшен по сравнению с предыдущими версиями. Он все ещё не такой мощный, как Process Explorer, но, вероятно, его проще использовать обычным людям. Так что не меняйте в компьютере мамы Диспетчер задач на Process Explorer.
Чтобы заставить Process Explorer заменить диспетчер задач, все, что вам нужно сделать, это выбрать в меню Options → Replace Task Manager. Всё готово.
Как только вы это сделаете, сочетание клавиш CTRL+SHIFT+ESC или щелчок правой кнопкой мыши по панели задач запустит Process Explorer, а не диспетчер задач. Легко, правда?
Предупреждение: если вы все же замените Диспетчер задач, убедитесь, что вы поместили Process Explorer в такое место, где вы случайно не переместите и не удалите файл. В противном случае вы застрянете с системой, которая не сможет запускать диспетчер задач.
Использование Process Explorer для добавления отличных значков монитора системы в трей
Одной из лучших функций Process Explorer является возможность сворачивать его в системный лоток, но вместо одного значка он может сворачиваться в полный набор значков, которые могут контролировать ЦП, ввод-вывод, диск, сеть, графический процессор и RAM, или любое их сочетание. Вы можете настроить их отображение отдельно или не отображать вовсе, если хотите.
Чтобы настроить это, откройте меню «Options», перейдите в раздел Tray Icons, а затем щёлкните, чтобы включить все значки, которые вы хотели бы видеть на панели задач.
Вы можете просто запускать Process Explorer каждый раз при запуске компьютера, а затем свернуть его в системный лоток, чтобы он всегда был рядом с вами. И, конечно же, если вы использовали вариант замены диспетчера задач, вы можете быстро получить к нему доступ в любое время с помощью сочетания клавиш — хотя вы можете использовать параметр Allow Only One Instance («Разрешить только один экземпляр»), чтобы убедиться, что вы не открываете кучу окон с Process Explorer.
Использование Process Explorer для быстрого поиска по VirusTotal
Если вы работаете на проблемном ПК и хотите выяснить, является ли процесс вирусом, вы можете сэкономить время, используя Process Explorer версии 16 или выше, потому что они добавили интеграцию VirusTotal непосредственно в приложение. Просто щёлкните что-либо в списке правой кнопкой мыши, чтобы увидеть этот параметр.
При первом запуске вам будет предложено принять условия использования VirusTotal, но после этого вы увидите, что результаты VirusTotal появятся прямо в списке.
Вы можете нажать на результат, чтобы перейти к VirusTotal и просмотреть подробности. Это отличное дополнение к одной из лучших утилит на свете.
Следующий урок: Использование Process Explorer для устранения неполадок и диагностики
В следующем уроке нашей серии мы собираемся более подробно рассказать о том, как использовать Process Explorer в некоторых реальных сценариях для устранения распространённых проблем, таких как вредоносное и проблемное ПО. Следите за обновлениями до конца серии.
Process Explorer позволяет:
— получать подробнейшую информацию о всех процессах, выполняющихся в среде Windows;
— получать доступ к важнейшим функциям управления процессами из главного меню или из контекстного меню выбранного процесса;
— управлять не только приложениями, но и службами системы (остановить, приостановить, возобновить, перезапустить);
— кроме функции принудительного завершения процессов (Kill), использовать функции приостановки (Suspend) и продолжения выполнения (Resume);
— управлять не только процессами, но и потоками (Threads), т.е. динамически внедряемыми в основной процесс программными модулями (DLL);
— изменять приоритеты выполняющихся процессов, их права доступа и разрешения, задавать соответствие процессорам в многопроцессорных (многоядерных) системах;
— создавать новые процессы с возможностью запуска от имени текущего пользователя, пользователя с ограниченными правами и администратора;
— в любой момент времени принудительно выполнять дампы памяти (Minidump или Fill Dump) с сохранением в выбранный файл;
— выполнять завершение работы Windows, завершение сеанса пользователя, переход в спящий режим, режим гибернации и блокировку рабочего стола;
В целом, Process Explorer позволяет получить подробнейшую картину активности процессов Windows и использования ресурсов системы.
Остальная часть дерева отображает иерархию реально выполняющихся в Windows процессов. Так, например, приложение служб и контроллеров SERVICES.EXE обеспечивает создание, удаление, запуск и остановку служб (сервисов) операционной системы, что и отображается в списке порождаемых им процессов.
Иерархический характер дерева процессов способствует визуальному восприятию родительски-дочерних отношений каждого активного процесса. Нижняя панель дает информацию обо всех DLL, загруженных выделенным в верхней панели процессом, открытых им файлах, папках, разделах и ключах реестра.
При выборе уровня System дерева процессов в нижней панели можно получить информацию обо всех загруженных драйверах системы, их описание, версию, путь исполняемого файла, адрес в оперативной памяти, размер. Кроме того, можно проверить цифровую подпись испольняемого файла, а также просмотреть строковые значения как в самом исполняемом файле, так и в оперативной памяти, выделенной под его выполнение.
Пункты основного меню File
Пункты основного меню Options
Пункты основного меню View
Пункты основного меню Process
  Панель инструментов Process Explorer во многом содержит те же кнопки, что и большинство утилит мониторинга от Sysinternals и позволяет быстро выполнить наиболее необходимые и часто повторяющиеся действия.
Кроме кнопок, в правой части панели отображаются графики использования ресурсов системы.
Примерный перечень действий :
Процедуру запуска Process Explorer с указанными правами можно оформить в виде командного файла, запускаемого от имени администратора.
Использование Process Explorer для поиска причин замедления работы системы.
Process Explorer удобно использовать для создания комфортной работы интерактивных приложений на фоне выполнения длительных ресурсоемких задач. Например, когда выполняется архивирование больших файлов с использованием алгоритма, требующего высокой степени использования центрального процессора. Работа пользователя за рабочим столом может сопровождаться замедлением реакции приложений и общим «подтормаживанием» системы. Process Explorer позволяет легко обнаружить процесс, максимально использующий ресурсы CPU и, например, понизить его приоритет с уровня Normal (8) до уровня Below Normal (6) или Idle (4). В результате, работа за рабочим столом пользователя с использованием интерактивных задач, работающих с приоритетом 8 станет заметно приятней.
Несколько сложнее выглядит ситуация, когда замедление видимого быстродействия системы не связано с выполнением ресурсоемких приложений, и сопровождается кратковременными «подвисаниями», рывками при перемещении окон или даже указателя мышки.
В режиме PIO передача данных выполняется с помощью процессорных команд ввода-вывода, а не непосредственно контроллером диска с использованием прямого доступа в память (без использования CPU). После принудительного включения режима UltraDMA в свойствах контроллера система вернулась к нормальной производительности с обработкой прерываний процессором на уровне 05-1.5%.
Подобное поведение системы, нередко, является следствием некорректно работающих драйверов или системных служб антивирусов, вирусов, брандмауэров и прочих недостаточно отлаженных или не универсальных программных продуктов.
Утилита от Microsoft Kernrate Viewer позволяет относительно просто определить степень использования процессора отдельными драйверами в процессе обработки прерываний
Поддерживаемые операционные системы: Windows 2000, Windows XP и Windows 2003 Server. Поддерживаемые процессоры: Intel x86 processors (Pentium и старше), эквивалентные им процессоры AMD, а также 64-битные процессоры от Intel и AMD.
После установки Kernrate, в папке \Program Files\krview\kernrates будут находиться исполняемые файлы
Kernrate_i386_Win2000.exe
Kernrate_i386_XP.exe
Kernrate_ia64_XP.exe
Для удобства использования в командной строке, можно один из модулей, соответствующий вашей операционной системе, перетащить в папку, которая присутствует в путях поиска исполняемых файлов ( например \Windows\system32) и присвоить ему более короткое имя (например kernrate.exe).
После запуска утилита выдает на экран сообщение:
При нажатии CTRL-C программа завершает работу, и на экран выводятся собранные данные профилирования системы, включающие суммарную статистику по использованию процессоров, физической и виртуальной памяти, а также счетчики использования модулей в режиме ядра. Вся информация, как правило, на экране не помещается, поэтому лучше использовать запуск Kernrate с перенаправлением вывода в текстовый файл:
В этом случае, после нажатия CTRL-C, результаты работы программы можно будет просматривать в файле C:\kernrate.log.
Пример содержимого файла журнала работы Kernrate:
Вначале присутствует общая информация о компьютере и самой Kernrate. Затем, собранные и обработанные данные об использовании ресурсов системы:
————Overall Summary:—————
P0 K 0:00:19.437 (25.4%) U 0:00:09.109 (11.9%) I 0:00:48.125 (62.8%) DPC 0:00:01.062 ( 1.4%) Interrupt 0:00:00.171 ( 0.2%) Interrupts= 52771, Interrupt Rate= 688/sec.
Далее в журнале выводится информация об использовании памяти и статистика операций ввода-вывода.
Результаты для режима ядра отображаются после строки :
Проценты в таблице базируются на количестве зафиксированных утилитой событий (Hits).
Информация данного раздела журнала дает относительно подробную картину использования ресурсов системы в режиме ядра.
Список модулей упорядочен по убыванию степени использования центрального процессора и позволяет легко определить имя модуля, являющегося причиной видимого замедления, кратковременного периодического подвисания или подтормаживания системы.
Утилита Kernrate имеет несколько десятков ключей командной строки, позволяющих выполнить более тонкое и точное профилирование и, например, получить данные по вызовам отдельных функций ядра конкретными процессами
После запуска RATTV3, в системном трее будет отображаться иконка программы, с помощью которой можно вызвать всплывающее меню, содержащее пункты:
CSWA создает файлы отчетов, которые содержат имя компьютера, дату, время и данные о компонентах, работающих в режиме ядра и вызвавших события обработки прерываний (ISRs и/или DPCs) в процессе мониторинга.
Программа очень проста в использовании и позволяет обнаружить сам факт повышенного потребления ресурсов обработкой отложенного вызова процедур (DPC)
Использование Process Explorer для поиска вредоносных программ.
Process Explorer позволяет довольно просто обнаружить симптомы наличия вредоносных программ по некоторым, нехарактерным для стандартного программного обеспечения, признакам.
— процесс выделен фиолетовым цветом, т.е. имеет упакованный загрузочный модуль. Обычно, упаковка образов используется для затруднения исследования приложения с помощью дизассемблеров. Это не бесспорный признак вредоносного программного обеспечения, но факт, который должен вызвать более пристальное внимание к процессу.
Для дальнейшего анализа процесса можно воспользоваться кнопкой панели инструментов Properties или вызовом свойств процесса с использованием контекстного меню.
Дополнительные признаки, которые могут принадлежать вредоносной программе:
Примеры использования утилиты Process Explorer для исследования различных проблем с функционированием системы можно найти в блоге Марка Руссиновича
Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»