微软在WSL2(Windows Subsystem for Linux)中实现了内存归还给系统

微软 宣布了 关于扩展 WSL2(Linux 的 Windows 子系统)层的功能,确保在 Windows 上启动 Linux 可执行文件。 在实验版本中 窗户内幕 (build 19013) 在 WSL2 层,出现了对基于 Linux 内核的环境中运行的进程释放的内存返回系统的支持(Memory Reclamation)。

以前,如果应用程序或内核的内存消耗增加,内存会分配给 WSL2 虚拟机,但此后内存仍保持固定状态,不会返回到系统,即使在资源密集型进程终止后也是如此。不再需要分配的内存。 内存回收机制允许您将释放的内存返回到主操作系统,并自动减少虚拟机内存的大小。 这不仅返回用户进程释放的内存,还返回 Linux 内核中用于缓存的内存。 例如,当磁盘活动较高时,页面缓存的大小会增加,文件系统运行时文件的内容会存储在页面缓存中。 执行“echo 1 > /proc/sys/vm/drop_caches”后,可以清除缓存并将内存返回到主操作系统。

内存回收的实现基于
修补,由英特尔工程师提议包含在主 Linux 内核中,以扩展 virtio-balloon 驱动程序和内存管理系统的功能。 指定的补丁设计用于任何来宾系统,以将未使用的内存页面返回到主机系统,并且可以与各种虚拟机管理程序一起使用。 对于 WSL2,该补丁适用于将内存返回给 Hyper-V 管理程序。

回想一下 WSL 第二版 不同 提供成熟的 Linux 内核,而不是即时将 Linux 系统调用转换为 Windows 系统调用的模拟器。 在 WSL2 中交付 Linux内核 基于版本 4.19,它使用已在 Azure 中运行的虚拟机在 Windows 环境中运行。 Linux 内核的更新通过 Windows 更新机制提供,并针对 Microsoft 的持续集成基础架构进行测试。 WSL2 特定的内核补丁包括优化,以减少内核启动时间、减少内存消耗,并为内核保留所需的最少驱动程序和子系统集。

来源: opennet.ru

添加评论