vmmem docker процесс что это

Процесс Vmmem — что это?

Приветствую друзья! vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что этоСегодня мы поговорим про один процесс, который вы можете заметить в диспетчере задач… название его — Vmmem. Постараемся выяснить — зачем он нужен? Это может быть процесс вполне легальной программы, но это может быть и вирус.. поэтому давайте разбираться))

Описание

Процесс Vmmem — это оперативная память, которая выделена для использования виртуальной машиной (Hyper-V).

Простыми словами — виртуальная машина, это в некотором смысле виртуальный компьютер, который имеет свой процессор, свою оперативку. Сколько виртуальная машина (или несколько) потребляет памяти — столько примерно и будет кушать оперативы процесс Vmmem.

Разбираемся

Чтобы отключить процесс Vmmem, попробуйте следующее:

Можно также ограничить ресурсы Vmmem путем создания файла %UserProfile%\.wslconfig, внутри которого прописать:

[wsl2]
memory=6GB # Ограничиваем память для WSL2 VM.
processors=5 # Ограничиваем количество процессов для WSL2 VM.

Вот пример сколько процесс может потреблять оперативки (это еще далеко немного):

vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

Картина может быть и такой, здесь уже намного больше используется:

vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

Заключение

Удачи и добра, до новых встреч друзья! vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Источник

Внутреннее устройство памяти Microsoft Hyper-V

В статье были описаны методы доступа к памяти гостевых разделов Hyper-V, создаваемых в самых разных случаях

vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

Память гостевых ОС.

Программное обеспечение, используемое в статье (операционные системы с патчами от августа 2019):

Windows 10, build 1903 x64

Windows Server 2019

Windows Server 2016

Visual Studio 2019

PyKd плагин для WinDBG

Термины и определения:

WDAG – Windows Defender Application Guard.

Full VM (виртуальная машина) – обычная полноценная виртуальная машина, созданная в Hyper-V manager. В отличие от контейнеров WDAG, Windows Sandbox, docker в режиме изоляции Hyper-V.

Root ОС – операционная система, в которой установлена серверная часть Hyper-V.

Гостевая ОС – операционная система, которая работает в контексте эмуляции Hyper-V, в т.ч. используя виртуальные устройства, предоставляемые гипервизором. В контексте статьи, это могут быть как Full VM, так и контейнеры.

TLFS – документ Hypervisor Top-Level Functional Specification 5.0.

GPA (guest physical address) – физический адрес памяти гостевой операционной системы.

SPA (system physical address) – физический адрес памяти root ОС.

Гипервызов (hypercall) – сервис гипервизора, вызываемый посредством выполнения команды vmcall с указанием номера гипервызова.

Исходники драйвера доступны на github.com:

Python-скрипт для вывода информации о GPAR и MBlock-объектах

Технологии виртуализации компании Microsoft давно и прочно вошли в нашу жизнь как в серверном сегменте, так и в клиентских ОС. Они используются не только для запуска гостевых ОС, но и для работы защитных механизмов, таких как Virtualization Based Security (VBS), Credential Guard, Device Guard, Hypervisor Code integrity (HVCI).

Компонент Hyper-V впервые появился в Windows Server 2008 и предоставлял достаточно простые на тот момент возможности по созданию гостевых операционных систем. Но Microsoft активно развивает эту технологию, и в настоящее время она глубоко интегрирована в ядро операционной системы Windows. Корневым компонентом является модуль hvix64.exe для процессоров Intel, hvax64.exe для процессоров Amd и hvaa64.exe для ARM.

Также описание архитектуры памяти Hyper-V (помимо TLFS) было сделано Andrea Allievi (www.andrea-allievi.com/files/Recon_2017_Montreal_HyperV_public.pptx) на конференции Recon 2017. Но слайды довольно абстрактно описывают модель реализации, и сопоставить эту информацию с реальным кодом, понять, что и как работает, очень сложно. Презентация была сделана до того, как Microsoft опубликовала символьную информацию компонентов виртуализации, так что, возможно, причина в этом.

В 2018 году Microsoft выпустила WDAG, которые представляет из себя надстройку к браузеру, запускающую браузер Microsoft Edge в контейнере Hyper-V со slim RDP-фронтендом, что создаёт ощущение, как будто вы работаете непосредственно в браузере. Подобные технологии очень давно использовала компания Citrix в своих терминальных решениях. У меня появилось желание понять, как же работает WDAG.

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

Сперва я планировал написать отдельную статью про контейнеры Hyper-V, но учитывая количество компонентов (см. скриншот), провести полное исследование слишком трудоёмко.

vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

Сам гипервизор находится в изолированной области памяти, память root-ОС отображается 1 в 1, возможность чтения памяти средствами гипервизора с помощью гипервызова HvReadGpa отсутствует (отдельная блокировка в коде для раздела с идентификатором, равным 0, т.е. для root-ОС). Основные моменты работы подсистемы памяти описаны в TLFS.

Так что основной упор будет сделан на методы доступа к памяти гостевых ОС. Будут описаны механизмы работы памяти для обычных виртуальных машин Microsoft и контейнеров WDAG и Windows Sandbox. Docker будет упомянут кратко и только в контексте Hyper-V, т.к. это отдельная экосистема, которой и так посвящено огромное количество ресурсов.

В ходе исследования был создан драйвер hvmm.sys, который может читать содержимое памяти гостевой ОС напрямую из root-ОС минуя интерфейсы гипервизора и драйвера vid.sys. Драйвер hvmm.sys был интегрирован в проект LiveCloudKd.

В целом статья представляет материал в стиле Windows Internals и описывает то, как работает память ОС. Зачем? Чтобы узнать, как работает достаточно популярная технология Microsoft. Также может пригодиться специалистам, увлекающимся форензикой и разбирающим дампы памяти. Andrea Allievi готовит детальное описание актуальной версии Hyper-V для 2-й части 7-й версии книги Windows Internals, но пока книга не была издана, можно будет почитать эту статью и кратко ознакомиться с архитектурой памяти.

К сожалению, информация о структурах в символах для vid.sys отсутствует, поэтому название таких структур в статье выполнено произвольно исходя из сигнатур, которые в них присутствуют. Andrea Allievi упоминал “bucket” структуры в своей презентации, но как конкретно они реализованы в драйвере vid.sys – неизвестно. Если в следующей части Windows Internals будет детальное описание этих структур, то наименования будут исправлены, технические детали работы от этого не изменятся.

Работа с памятью Full VM и контейнеров посредством прямого доступа

Основным процессом, который управляет работой виртуальной машины, является vmwp.exe. Его запускает vmms.exe в случае запуска полноценной виртуальной машины, или vmcompute.exe в случае запуска контейнеров. При запуске процесс vmwp.exe через интерфейс vid.dll обращается к интерфейсам гипервизора – гипервызовам (hypercalls). Я собрал статистику гипервызовов для VM Windows Server 2019, контейнера Docker в режиме изоляции Hyper-V (образ nanoserver:1809) и контейнера WDAG. WDAG-контейнер генерирует слишком много гипервызовов, поэтому из-за торможения, вызванным записью результатов отладчиком, контейнер сразу начал выключаться после включения (управляющее приложение контролирует таймауты выполнения некоторых процедур), в связи с чем результаты по WDAG содержат общий показатель (надеюсь попробовать dtrace, относительно недавно доработанный под Windows, для сбора подобной статистики – по идее, он должен снизить издержки на запись собранных данных). Отдельно зафиксирован показатель по выключению, так что порядок оценить можно. По сравнению с обычными виртуальными машинами он достаточно большой:

vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

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

Функция winhvr!WinHvMapGpaPagesFromMbpArrayScanLargePages. В Rdx указывается номер страницы, в rsi – размер (так же в страницах).

При запуске Windows Server 2019 с 1500 Mb оперативной памяти получаем.

При запуске Windows Server 2019 с 2300 Mb оперативной памяти получаем

1-й вызов: rdx=0000000000000000 rsi=000000000008fc00

2-й вызов: rdx=00000000000f8000 rsi=0000000000000800

3-й вызов: rdx=0000000000fff800 rsi=000000000000024a

Источник

Vmmem eating up CPU after last update even without running any docker image #8742

Comments

Bleki commented Oct 1, 2020 •

Expected behavior

No Vmmem high CPU usage

Actual behavior

High CPU usage for Vmmem

Information

Steps to reproduce the behavior

The text was updated successfully, but these errors were encountered:

johanseland commented Oct 7, 2020

I can confirm that I am also experiencing this problem. I am running Windows 10 Pro and using Docker Desktop 2.4.0.0 (48506)

For me, the high Vmmem CPU usage seems to be tied to running compilation of a large C++ code base using parallel make/ninja.

johanseland commented Oct 8, 2020

I did some more digging into this and I have come up with an acceptable workaround. I wonder if the root causes it that Docker Desktop 2.4.0 uses slightly more memory than before, causing the system to start paging to this earlier than it did for 2.3.

These are my observations:

According to https://docs.microsoft.com/en-us/windows/wsl/wsl-config the default available memory to wsl2 is 80% of physical RAM. On my 16 GB machine this amounts to 12GB, which was enough for the system to start swapping with quite light usage of application on the host system (e.g. Visual Studio Code, Edge, some terminal windows). Limiting the amount to 10GB removed the problem for me altogether yesterday. I could successfully run the large compilation mentioned above without vmmem using all CPU.

inhumantsar commented Nov 15, 2020

Can confirm that editing wsl-config to enforce global resource limits helped stabilise memory and CPU usage.

Worth keeping in mind just how much memory all this stuff takes up though. On my system, after a fresh reboot and starting up Docker Desktop, vmmem usage sits around 1.5GB. +1GB for K8S. +1GB if I open up a new distro (Ubuntu 20.04). If the limits are set too low, the VM will start swapping again.

ERGeorgiev commented Jan 6, 2021

Some CPU and all of my ram, nothing running. Happened after a build, it’s been 30 minutes and its still sitting there. Shutting down docker does not help.
vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

cactysman commented Jan 7, 2021 •

This started happening to me too over the past few days.
Took a while to identify Docker Desktop as the cause.

vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

cactysman commented Jan 13, 2021

Disabling the Kubernetes cluster fixed this for me btw, so there gotta be an issue with that part(?).

mediplex commented Jan 19, 2021

Same issue here.
vmmem takes 2gb+ after a reboot and no container running yet!
Once I run my dev container it eats up all the remaining memory.

Config: windows 10 20H2 (latest) and docker 3.1 (latest)

sergey-derugo commented Jan 26, 2021

Same issue here.
vmmem takes 2gb+ after a reboot and no container running yet!
Once I run my dev container it eats up all the remaining memory.

Config: windows 10 20H2 (latest) and docker 3.1 (latest)

ivanrodriguezfernandez commented Mar 12, 2021 •

Microsoft Windows 10 Enterprise (10.0.19041 N/A Build 19041)
Docker for Desktop: 3.2.2 (61853)

liny01-nbsa commented Mar 13, 2021

Windows Version: 20H2 (OS Build 19042.804)
Docker for Desktop: 3.2.1

DeveloperPad commented Apr 17, 2021

Same issue here. WSL already consumes like 12 out of my 16 GB RAM after startup, although not a single container is running.
Currently mitigated by above workaround with limiting the memory, but this is surely not a suitable fix.

Windows Version: 20H2 (OS Build 19042.928)
Docker for Desktop: 3.3.1

Marcin-TA commented Apr 22, 2021

I have the same issue. 100% CPUT and 80% RAM is used by Vmmem.

Gabriellavoura commented Apr 25, 2021 •

Same here, 98% RAM (15.4GB) and 100%CPU used by Vmmem, with no containers running.
Win pro build 19042
WSL2
Docker Desktop version 3.3.1 (63152)

onomatopellan commented Apr 25, 2021 •

Gabriellavoura commented Apr 25, 2021 •

Thanks @onomatopellan, I have already done that, just posted here to say that this problem wasn’t fixed yet.

rnemeth90 commented May 13, 2021 •

Same issue here. VMMem process is using 2-3 GB of RAM, despite no running containers. Kubernetes is not enabled.

Docker Desktop: 3.3.3 (64133)
Windows 10 Enterprise 21H1 (19043.964)

Setting memory limits for WSL is not a solution in my opinion, as it will limit the number of containers I’m able to run concurrently.

kamerat commented Jun 3, 2021 •

Also, even tho Docker is not in boot, vmmem still spins up.

vanquang9387 commented Jun 4, 2021

Same for me.
vmmem takes

2GB memory without running any images.

Edition Windows 10 Pro
Version 21H1
OS build 19043.985
WSL2
Docker Desktop verion 3.3.3

Matsemann commented Jun 4, 2021 •

even with this, vmmem sometimes uses

konradgadecki commented Jun 25, 2021

I noticed this issue happens right after I create a docker image with docker build command locally on my pc. Memory utilization by vmmem process grows rapidly and never goes down, even if Docker Desktop (the latest version) is restarted. Only pc restart helps in this case for me so it all of this makes a local development difficult. Is there any solution?

vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

duemti commented Jul 5, 2021

paulmiller3000 commented Jul 6, 2021

Same issue here.
vmmem takes 2gb+ after a reboot and no container running yet!
Once I run my dev container it eats up all the remaining memory.
Config: windows 10 20H2 (latest) and docker 3.1 (latest)

This work-around fixed it for me as well. Would be nice if we could get a fix for this.

danmaina commented Jul 19, 2021 •

An alternative workaround that worked for me was to disable WSL 2 and use Hyper V. Docker may not be as fast but at least resources are much more reasonable.

Disable WSL 2 use in docker under settings

vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

Disable WSL in windows features

vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

vmmem docker процесс что это. Смотреть фото vmmem docker процесс что это. Смотреть картинку vmmem docker процесс что это. Картинка про vmmem docker процесс что это. Фото vmmem docker процесс что это

If you are using WSL for other tasks or want the extra docker perfomance, this may not be the solution you are looking for. It works only as a workaround.

Источник

Vmmem using over 10gb memory and around 50% CPU #7033

Comments

DanielWhite21 commented Jun 3, 2020

Expected behavior

To run docker jobs in a timely manner

Actual behavior

Its taking over 2 hrs to build an R application, using over 10gb mem, and up to 50% CPU
I have to keep restarting my laptop in between build jobs and some of these are requiring minor tweaks to the R app.
I understand its a large build out but it takes around 20 mins on my Mac

Information

Steps to reproduce the behavior

The text was updated successfully, but these errors were encountered:

4O4 commented Jun 4, 2020

I have the same issue when running docker-compose setup on windows 10. CPU usage of vmmem is insane and It’s also consuming tons of RAM, but somehow the task manager always shows 0 for RAM usage of vmmem.

I can’t provide diagnostics ID right now, because it takes forever to finish for some reason and my computer is burning hot during that. I also can’t publish my docker-compose.yml right now and I don’t know yet if this also happens when running some specific single container. I need to check it out yet.

However, what I can provide is my observation of some of the internals of the VM the docker stuff is running on. In the Hyper-V manager I’ve seen that the docker machine is eating up to 20% CPU (at least it was claiming so) and the usage was rapidly changing like there was a lot of intensive stuff running, then stopping for a very short time, then spinning up again. The normal CPU usage for my current setup should be 1% max. I am sure none of my apps are causing such usage spikes, so I’ve decided to dig into the VM to see what is it doing.

I’ve done the following to gain access to the VM (found the commands somewhere on the internet):

then I’ve ran top to see what processes are running and what I’ve seen was /usr/bin/lifecycle-server being on top of the CPU and RAM usage stats, together with memlog daemon (although the values of the memlog were jumping a lot, lifecycle server was constantly on the top).

I’ve killed the lifecycle-server process and everything turned back to normal, my CPU fans stopped spinning like crazy, the temperatures went back to normal. This problem comes back from time to time, sometimes after I reboot the computer, sometimes after restarting the docker engine.

I’m repeating the steps described above every time this happens to kill the lifecycle-server and stop that massive heat generator. Everything in docker is working absolutely normal after that and my room becomes completely quiet with no fans spinning 🙂

My guess is that lifecycle-server is spamming a lot of error / warning/ debug / whatever logs, these logs are then filling lots of RAM and the intensity of writes causes lots of CPU usage too. Although that is only my blind guess since I have no idea what exactly is this process responsible for and sadly there is no source code available for Docker Desktop stuff.

I hope this helps to narrow down the problem a bit.

Источник

Comments

emin-ec commented Aug 9, 2020

Environment

Steps to reproduce

Use the following in c:\Users\ \.wslconfig :

Expected behavior

The Vmmem process should not be using 50% CPU with Very high power usage when:

I don’t mind the memory usage but the CPU usage, power drain, and running the fan at full power are really annoying.

Actual behavior

The text was updated successfully, but these errors were encountered:

therealkenc commented Aug 9, 2020 •

You’ve got a load average of

300% of the time, ie pegged) inside the VM, so that looks «about right». That vmmem isn’t also pegged at 100% (vs only 50%) might be #5423.

emin-ec commented Aug 10, 2020

300% of the time, ie pegged) inside the VM, so that looks «about right». That vmmem isn’t also pegged at 100% (vs only 50%) might be #5423.

Thank you for that information. I confirm that if I kill processes to reduce load then vmmem CPU usage goes down to a reasonable level.

I guess I was confused by the name vmmem and thought it had to do with virtual memory (i.e., swap). Based on further search (e.g., https://devblogs.microsoft.com/oldnewthing/20180717-00/?p=99265) it seems like vmmem also represents CPU usage of virtual machines completely independent of whether they are using virtual memory or not.

If you could confirm the above understanding or give a description or pointer to what vmmem does, that might be useful for others who are similar confused.

In any case, I will close this issue. Thanks again.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *