- Как работать с процессами через Powershell Get-Process
- Как вывести детальную информацию через Powershell Get-Process
- Как отфильтровать процессы по утилизации в Powershell
- Запуск и остановка процессов через Powershell
- ReadProcessMemory function (memoryapi.h)
- Syntax
- Parameters
- Return value
- Remarks
- Процесс «Система и сжатая память» в Windows 10
- Особенности технологии «Сжатой памяти» в Windows 10
- Процесс «Система и сжатая память» сильно грузит компьютер
- Как отключить сжатую память в Windows 10
- Заключение
- Почему процесс «Система и сжатая память» в Windows 10 занимает много оперативной памяти
- Особенности технологии «Сжатой памяти» в Windows 10
- Процесс «Система и сжатая память» сильно грузит компьютер
- Как отключить сжатую память в Windows 10
- Заключение
Как работать с процессами через Powershell Get-Process
Командлет Powershell Get-Process возвращает все процессы запущенные на локальном компьютере. Команда пишется так:
Мы так же можем посмотреть так же процессы, запущенные на удаленном компьютере:
Но для того, что бы мы смогли это сделать удаленно у нас минимум должен быть включен WinRM. Если вы впервые слышите об этом, то вы можете прочитать об этом в этой статье. Так же добавлю, что ключ -ComputerName частый признак того, что мы можем выполнить команду удаленно.
Навигация по посту
Скорее всего мы хотим получить более детальную информацию или отфильтровать её. Если мы хотим получить информацию об экземплярах, достаточно заполнить ключ -Name:
Где:
-IncludeUserName — выведет имя того, кто запустил экземпляр.
Если мы не знаем имени, можно добавить * :
При этом если у вас запущено несколько процессов с этим именем, вернуться все.
Расшифрую заголовки:
- Handles — Дескриптор процесса, кто-то может знать под HWND. Уникальное число потока ввода — вывода.
- NPM(K) — Non-paged memory. Данные, которые не выгружаются на диск в килобайтах.
- PM(K) — Pageable memory. Данные, которые могут быть выгружены на диск в килобайтах.
- WS(K) — Process working set. Рабочий набор процесса или сумма всех страниц, которые на данный момент находятся в памяти в килобайтах.
- CPU(s) — время использованное процессом на всех процессорах в секундах.
- ID — идентификатор процесса, мы по нему можем фильтровать.
- SI — Session ID. Идентификатор сеанса где 0 — запущен для всех сессий, 1 — запущен для первого залогиненного пользователя, 2 — для следующего.
Попробуем преобразовать значение из килобайтов в мегабайты:
Где:
-Select-Object обозначаем столбцы, которые хотим вывести.
Как вывести детальную информацию через Powershell Get-Process
Что бы вывести всю возможную информацию два варианта. Это либо вывести объект в виде листа:
Либо можно объявить в переменную, получить все имена свойств и вызывать их по отдельности:
Под такой командой powershell я могу узнать имя, которое пишется в окошке:
Свойств, которые хранит объект процесса (то что мы видим при $result | Get-Member) очень много и это главное, к чему нужно обращаться когда мы хотим узнать подробнее об объекте.
Так мы выведем все запущенные процессы, у которых есть GUI:
Как отфильтровать процессы по утилизации в Powershell
Так мы увидим процессы, которые используют больше 67 Мб в памяти с дополнительной информацией о приоритете:
Таким командлетом мы получи информацию по одному процессу, у которого самое высокое значение CPU. Из свойств этого объекта выбран ID, Имя, CPU и время запуска.
Запуск и остановка процессов через Powershell
Мы можем остановить любой процесс. Например таким образом мы остановим все процессы, которые не отвечают (зависли):
Конечно мы можем остановить процесс по идентификатору или имени:
Таким командлетом мы остановим самый старый процесс:
Запуск экземпляра и его завершение через 5 секунд:
Все остальные команды можно узнать с помощью:
Справки с вариантами использования команд powershell:
ReadProcessMemory function (memoryapi.h)
Syntax
Parameters
A handle to the process with memory that is being read. The handle must have PROCESS_VM_READ access to the process.
A pointer to the base address in the specified process from which to read. Before any data transfer occurs, the system verifies that all data in the base address and memory of the specified size is accessible for read access, and if it is not accessible the function fails.
A pointer to a buffer that receives the contents from the address space of the specified process.
The number of bytes to be read from the specified process.
A pointer to a variable that receives the number of bytes transferred into the specified buffer. If lpNumberOfBytesRead is NULL, the parameter is ignored.
Return value
If the function succeeds, the return value is nonzero.
If the function fails, the return value is 0 (zero). To get extended error information, call GetLastError.
The function fails if the requested read operation crosses into an area of the process that is inaccessible.
Remarks
ReadProcessMemory copies the data in the specified address range from the address space of the specified process into the specified buffer of the current process. Any process that has a handle with PROCESS_VM_READ access can call the function.
The entire area to be read must be accessible, and if it is not accessible, the function fails.
Процесс «Система и сжатая память» в Windows 10
Функция сжатия оперативной памяти в Windows 10 предназначена для ускорения работы (отзывчивости) системы за счет хранения части страниц в оперативной памяти в сжатом виде. Тем самым достигается уменьшение количества обращений на чтение и запись страниц памяти из медленного (по сравнению с RAM) файла подкачки на жестком диске. Нужные данные извлекаются из более быстрой оперативной памяти быстрее, даже с учетом того, что на их сжатие/декомпрессию тратятся дополнительные ресурсы процессора.
Особенности технологии «Сжатой памяти» в Windows 10
Изначально поток, отвечающий за работу подсистемы сжатой памяти, находилась внутри процесса System, что не очень удобно с точки зрения диагностики. В Windows 10 1511 этот функционал был выделен в отдельный процесс — Система и сжатая память (System and compressed memory).
В Windows 10 Anniversary edition (1607) появился отдельный процесс Сжатая память (Memory Compression), скрытый от диспетчера задач. Получить информацию об этом процессе можно с помощью PowerShell командлета Get-Process:
Get-Process -Name «Memory Compression»
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
——- —— —— —— —— — — ————
0 0 2184 53104 1 810,95 2388 0 Memory Compression
Также информацию об использовании сжатой памяти системой можно получить с помощью диспетчера задач. Перейдите на вкладку Производительность (Performance), выберите раздел Память (Memory). Текущее значение использования сжатой памяти отображается в значении параметра Использование (сжатая). В моем примере используется 3 Гб памяти, из которой в сжатом виде хранится 230 Мб. Чтобы понять, какой объем данных получилось упаковать в сжатый блок, нужно навести мышкой на график Структура памяти:
Используется сжатой памяти (230 Мб). В сжатой памяти хранится примерно 1012 Мб данных, освобождая для системы 782 Мб памяти.
Как вы видите, уровень компрессии достигает почти 400%, так что экономия довольно большая.
В большинстве случаев, если компьютер работает нормально и на нем установлен достаточный объём оперативной памяти, процесс «Сжатой памяти» работает отлично и не требует никакого вмешательства.
Процесс «Система и сжатая память» сильно грузит компьютер
Но иногда случается, когда процесс «Система и сжатая память» начинает довольно сильно грузить процессор или жесткий диск компьютера (вплоть до 100%, это видно в диспетчере задач), или же занимаеть в памяти слишком много места. Компьютер, при этом, естественно, начинает сильно тормозить и подвисать.
Что делать в этом случае?
Я приведу 2 совета, которые должны помочь исправить проблему с высокой загрузкой системы процессом «Сжатая память».
- Отключите файл подкачки системы (опция Без файла подкачки), перезагрузите компьютер, включите файл подкачки (опция Автоматически выбирать размер файла подкачки) и еще раз перезагрузитесь.
- Если проблема высокой загрузки процессом «Сжатая память» возникает только при выходе из режима сна или гибернации (а после перезагрузки пропадает), попробуйте скачать и установить с сайта производителя последние версии драйверов для ваших дисковых контроллеров (ACPI/ AHCI / RAID / SCSI), дисков и видеокарты. После чего желательно отключить автоматическое обновление драйверов.
Если указанные манипуляции не помогли, можно попробовать отключить сжатую память.
Как отключить сжатую память в Windows 10
Если вы хотите проверить стабильность работы Windows 10 без использования функции «сжатой памяти», можно временно отключать эту функцию. Для этого, откройте консоль PowerShell с правами администратора. Проверим, включена ли сейчас опция «Сжатой памяти»:
Строка MemoryCompression : True указывает на то, что сжатая память включена.
Отключим сжатую память:
И перезагрузим компьютер
После загрузки проверьте, как ведет себя система. Если производительность улучшилась, можно оставить ОС в режиме с отключенным режимом сжатой памяти.
Чтобы включить MemoryCompression, выполните команду:
Заключение
Технология «Сжатой памяти» в Windows 10, как правило работает довольно эффективно и не требует никаких вмешательств. В том случае, если она вызывает проблемы на вашем компьютере, скорее всего у вас имеются некоторые проблемы с настройками системы, оборудованием или драйверами. В случае необходимости, функцию сжатия памяти можно совсем отключить.
В некоторых случаях пользователям для исправления проблемы со сжатой памятью рекомендуют:
- отключить службу SuperFetch (services.msc -> SuperFetch -> тип запуска Отключена)
- Отключит задание обслуживания системы в планировщике RunFullMemoryDiagnosticEntry (Task Scheduler -> Библиотека планировщика -> Microsoft -> Windows — > MemoryDiagnostic -> RunFullMemoryDiagnosticEntry ->Отключить)
В некоторых случаях эти советы помогают избавится от чрезмерной нагрузки на компьютер со стороны процесса «Сжатая память», но при этом отключаются базовые подсистемы оптимизации производительности Windows, что может негативно сказаться на других аспектах производительности системы.
Почему процесс «Система и сжатая память» в Windows 10 занимает много оперативной памяти
Функция сжатия оперативной памяти в Windows 10 предназначена для ускорения работы (отзывчивости) системы за счет хранения части страниц в оперативной памяти в сжатом виде. Тем самым достигается уменьшение количества обращений на чтение и запись страниц памяти из медленного (по сравнению с RAM) файла подкачки на жестком диске. Нужные данные извлекаются из более быстрой оперативной памяти быстрее, даже с учетом того, что на их сжатие/декомпрессию тратятся дополнительные ресурсы процессора.
Особенности технологии «Сжатой памяти» в Windows 10
Изначально поток, отвечающий за работу подсистемы сжатой памяти, находилась внутри процесса System, что не очень удобно с точки зрения диагностики. В Windows 10 1511 этот функционал был выделен в отдельный процесс — Система и сжатая память ( System and compressed memory ).
В Windows 10 Anniversary edition (1607) появился отдельный процесс Сжатая память (Memory Compression), скрытый от диспетчера задач. Получить информацию об этом процессе можно с помощью PowerShell командлета Get-Process:
Get-Process -Name «Memory Compression»
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
——- —— —— —— —— — — ————
0 0 2184 53104 1 810,95 2388 0 Memory Compression
Также информацию об использовании сжатой памяти системой можно получить с помощью диспетчера задач. Перейдите на вкладку Производительность (Performance), выберите раздел Память (Memory). Текущее значение использования сжатой памяти отображается в значении параметра Использование (сжатая) . В моем примере используется 3 Гб памяти, из которой в сжатом виде хранится 230 Мб. Чтобы понять, какой объем данных получилось упаковать в сжатый блок, нужно навести мышкой на график Структура памяти :
Используется сжатой памяти (230 Мб). В сжатой памяти хранится примерно 1012 Мб данных, освобождая для системы 782 Мб памяти.
Как вы видите, уровень компрессии достигает почти 400%, так что экономия довольно большая.
В большинстве случаев, если компьютер работает нормально и на нем установлен достаточный объём оперативной памяти, процесс «Сжатой памяти» работает отлично и не требует никакого вмешательства.
Процесс «Система и сжатая память» сильно грузит компьютер
Но иногда случается, когда процесс «Система и сжатая память» начинает довольно сильно грузить процессор или жесткий диск компьютера (вплоть до 100%, это видно в диспетчере задач), или же занимаеть в памяти слишком много места. Компьютер, при этом, естественно, начинает сильно тормозить и подвисать.
Что делать в этом случае?
Я приведу 2 совета, которые должны помочь исправить проблему с высокой загрузкой системы процессом «Сжатая память».
- Отключите файл подкачки системы (опция Без файла подкачки) , перезагрузите компьютер, включите файл подкачки (опция Автоматически выбирать размер файла подкачки ) и еще раз перезагрузитесь.
Если проблема высокой загрузки процессом «Сжатая память» возникает только при выходе из режима сна или гибернации (а после перезагрузки пропадает), попробуйте скачать и установить с сайта производителя последние версии драйверов для ваших дисковых контроллеров (ACPI/ AHCI / RAID / SCSI), дисков и видеокарты. После чего желательно отключить автоматическое обновление драйверов.
Если указанные манипуляции не помогли, можно попробовать отключить сжатую память.
Как отключить сжатую память в Windows 10
Если вы хотите проверить стабильность работы Windows 10 без использования функции «сжатой памяти», можно временно отключать эту функцию. Для этого, откройте консоль PowerShell с правами администратора. Проверим, включена ли сейчас опция «Сжатой памяти»:
Строка MemoryCompression : True указывает на то, что сжатая память включена.
Отключим сжатую память:
И перезагрузим компьютер
После загрузки проверьте, как ведет себя система. Если производительность улучшилась, можно оставить ОС в режиме с отключенным режимом сжатой памяти.
Чтобы включить MemoryCompression, выполните команду:
Заключение
Технология «Сжатой памяти» в Windows 10, как правило работает довольно эффективно и не требует никаких вмешательств. В том случае, если она вызывает проблемы на вашем компьютере, скорее всего у вас имеются некоторые проблемы с настройками системы, оборудованием или драйверами. В случае необходимости, функцию сжатия памяти можно совсем отключить.
В некоторых случаях пользователям для исправления проблемы со сжатой памятью рекомендуют:
В некоторых случаях эти советы помогают избавится от чрезмерной нагрузки на компьютер со стороны процесса «Сжатая память», но при этом отключаются базовые подсистемы оптимизации производительности Windows, что может негативно сказаться на других аспектах производительности системы.