Лос Разработчиците на Microsoft обявиха разширяването на слоя WSL2 (Подсистема на Windows за Linux) в Windows Insider Experimental Builds (Build 19013). В тях те обявяват това са добавили съвместимост за връщане на система с памет (Възстановяване на паметта), пуснат от процеси, работещи в среда, базирана на ядро на Linux.
Преди това, в случай на по-голяма консумация на памет по приложения или ядрото, паметта той беше присвоен на виртуалната машина WSL2, но след това остана фиксиран и не се върна в системата, дори след приключване на ресурсоемкия процес и липсата на повишена нужда от разпределена памет.
Сега с възстановяването на паметта в WSL 2, когато паметта в Linux вече не е необходима, хостът може да бъде информиран къде ще бъде освободен и вашият WSL 2 VM ще бъде намален по размер.
Механизмът за възстановяване на паметта позволява освободената памет да бъде върната към основната операционна система и автоматично намалява размера на паметта на виртуалната машина. В този случай се връща не само паметта, освободена от потребителски процеси, но и паметта, използвана за кеширане в ядрото на Linux.
Потребителските процеси не са единствените неща, които използват памет във виртуалната машина на Linux. Ядрото на Linux също използва много кешове, включително кеш на страници, които съхраняват съдържанието на файла, за да подобрят производителността на файловата система. Нека разгледаме още един пример от реалния свят, за да видим как това влиза в игра.
Например с висока активност на диска, размерът на кеша на страниците се увеличава, в които съдържанието на файловете се урежда по време на работата на FS. След изпълнението на "echo 1> / proc / sys / vm / drop_caches", кешът може да бъде изчистен и паметта се връща към основната операционна система.
Реализацията на паметта се основава на кръпка, предложена от инженерите на Intel за включване в основното ядро на Linux, за да се разширят възможностите на драйвера virtio-balloon и системата за управление на паметта.
Тази функция се задвижва от кръпка на ядрото на Linux, която позволява малки непрекъснати блокове памет да бъдат върнати на хост машината, когато вече не са необходими в госта на Linux. Актуализирахме ядрото на Linux в WSL2, за да включим тази корекция и модифициран Hyper-V, за да поддържа тази функция за отчитане на страници.
Посоченият пластир е проектиран да се използва във всяка гост система за връщане на неизползвани страници с памет в хост системата и може да се използва с множество хипервизори. В случая на WSL2, пластирът е пригоден да връща паметта на хипервизора Hyper-V.
Важно е да запомните това второто издание на WSL се различава в предоставянето на пълно ядро на Linux, а не на емулатор в движение, което превежда системните обаждания на Linux към системните повиквания на Windows.
WSL 2 е нова версия на архитектурата, коятоe позволява на подсистемата Windows за Linux да изпълнява Linux ELF64 двоичните файлове на Windows. Тази нова версия на WSL 2 използва Hyper-V функции, за да създаде лека виртуална машина с минимално ядро на Linux.
Ядрото на Linux, доставено в WSL2, се основава на версия 4.19, която работи в среда на Windows, използвайки виртуална машина, вече използвана в Azure. Актуализациите за ядрото на Linux се доставят чрез механизма на Windows Update и се тестват в инфраструктурата за непрекъсната интеграция на Microsoft.
Специфичните за WSL2 кръпки, използвани в ядрото, включват оптимизации за намаляване на времето за стартиране на ядрото, намаляване на консумацията на памет и оставяне на ядрото с минимално необходимия набор от драйвери и подсистеми.
Ако искате да научите повече подробности за него можете да ги проверите в оригиналната публикация. Връзката е тази.