搜索
查看: 5743|回复: 23
收起左侧

[分享] Win10 10525才加入的新功能?压缩存储

[复制链接]
翼风Fly
发表于 2015-8-19 13:39:06 | 显示全部楼层 |阅读模式
本帖最后由 翼风Fly 于 2015-8-22 19:55 编辑

http://www.ithome.com/html/win10/170381.htm

内存管理器改进:
本次更新,系统内存管理器增加了名为“压缩存储”的概念,即压缩页面在内存中的集合。意味着,当内存管理器觉察到内存不够用时,它会将无用的页面进行压缩,而不再是将它们写入硬盘。这样能够减少单个进程的内存占用,让Win10能够同时在物理内存中运行更多应用,也能够加快Win10系统的响应速度。
压缩存储工作在系统进程工作集中。由于系统进程也运行在内存当中,因此当有内存被挪用到其他进程时,其工作集会变得更大。在任务管理器中能够明显看到这些变化,这也是系统进程会比之前版本占用更多内存的原因。

压缩内存数据。。。这点挺让人期待
对页面文件依赖又进一步减轻了。。

可能带来的现象:
win10系统system占用内存很高 http://bbs.kafan.cn/thread-1847940-1-1.html

在Windows10中,我们在内存管理器中增加了新的概念:压缩存储,这是一个压缩页面的内存中集合,当内存管理器感到内存紧张时,会压缩未使用页面,而不是写入到物理磁盘中。这就减少了每个进程的内存使用量,允许Windows10在合理内存范围内运行更多的应用程序,有助于Win10更好地做出响应。不过在任务管理器中的具体现象,就是System进程显示占用更多内存。”
因此,当你看到“System”进程占用太多内存时,请不要担心。Win10比以往任何系统都更加高效。在技术方面,压缩数据存储到内存中变得越来越普遍。Win10采用之后,不仅工作更快,而且同时还能容纳更多数据。




经测试,上文提到的10250增加的内存管理功能似乎10240就有
不明真相

另附链接:
【远景首发原创翻译】Windows 10:内存压缩
http://bbs.pcbeta.com/viewthread-1634521-1-1.html
翼风Fly
 楼主| 发表于 2015-8-22 19:56:52 | 显示全部楼层
【远景首发原创翻译】Windows 10:内存压缩
http://bbs.pcbeta.com/viewthread-1634521-1-1.html




翻译自 Insider Hub (会员中心)中的 Windows 10:Memory Compression。


在宣布内存压缩(Memory compression)功能之后,许多 Insiders 要求我们提供关于此项功能的详细信息。这篇博客试图深入地分析内存管理器(Memory Manager)的内部工作过程并分析它内部集成的内存压缩引擎。

任何操作系统最主要的目的就是高效地管理和共享资源。操作系统如何分配内存显得尤为重要,因为它影响到用户对系统响应速度的感知。

Windows 10 中,我们启用了内存管理器 【Memory Manager (MM) ,它的目的是压缩不经常访问的内存页面,这可以减少对硬盘的读取和写入(页面文件)并能因此提升系统的响应速度。通过压缩内存,我们减少了每个进程使用的内存,这允许操作系统在物理内存中运行更多程序(在进行传统的页面文件写入之前)。

Memory Manager 决定向硬盘写入页面文件的时候,读取或写入到硬盘的数据(一般来说)仅为原始大小的40%。这种压缩提升了系统中其它无关操作的性能,因为干扰性的 IO 负载减少了。结果就是,用户获得了更流畅,更快的反应速度,应用启动速度和稳定性也得到了提升。

在阐述Windows 10 的变化之前,我将描述一些 Windows 内存管理的基本概念并给出我们是如何将压缩功能引入的概述。



首先一个概念就是工作集是一个进程正在使用的物理内存。一个专用工作集体现的是这个进程独有的内存。进程们也会接触到其它“共享”的页,这些页可以供数个进程引用。当你选择任务管理器的进程视图时,你看到的每个进程的内存占用实质上是它们的专用工作集。注意:为了描述更简洁,当我说在这篇博文提到“工作集”时即为“专用工作集”。

在一个进程当中,它的工作集的某些子集使用很不频繁,因为必须有效的利用很有限的内存资源,这些页必须被收回并且要为其他进程所利用。当内存管理器认定一个页面长期不活动之后,内存管理器把它放在「更改列表」上。一个另外的进程将这些页写入到硬盘上的页面文件,接着在内存中,它们被移动到了「备用列表」上。这次写入会导致:如果内存被另外一个进程从「备用列表」回收,但原始进程开始寻找自己的页时,数据可以从页面文件获取到。

然而,「备用列表」上的页如果尚未回收,它们会保留它们的数据,直到内存管理器重新分配给另一个进程的工作集。它们可以在回收之前被先前拥有该页的应用重新利用。这叫做软中断(soft fault。但如果这个页面已经被改变了用途,原始的进程还要求内存管理器获得那个页面,一个硬中断(hard fault就发生了。原始的进程现在正在要求使用被其他进程抢走的内存,操作系统必须读取硬盘IO来对其进行检索。

就像之前阐述的那样,当内存管理器面对内存压力的时候,它会决定哪些页面应该被移动到「更改列表」上。这叫做trimming(修剪)。但是Windows 8新增的Universal Windows Platform (UWP) 程序可以整个地交换(swapped内存,那就是基于应用的粒度而不是基于页面的粒度的操作。这可以是因为UWP程序在没有前台运行时会被暂停(直到用户重新切换到它们时),所以这可以被做到。没有页面会被接触到(直到App重新开始工作时),所以交换整个程序是十分安全的。需要把这个程序交换回来所需的硬盘IO类型仅为连续读取,这比随机读取要快得多。想了解更多Windows 8 内存管理器是怎么交换UWP程序的,请看这篇 Bill Karagounis 的博文

Windows10 引入了一个在页面文件和标准页面操作的层,它可以压缩移动到「更改列表」的所有页。这意味着当内存管理器感受到内存压力的时候,它会压缩未使用的页而不再是直接把它们写入到硬盘。内存管理器现在只在压缩都无法缓解内存压力时才进行硬盘IO操作。使用这种策略可以换来更少的硬盘操作。多亏有了压缩,内存里存储的信息要比以前更多。



这是通过一种叫压缩存储的概念实现的,这是一个内存内的储存已压缩页面的存储。对于传统的Windows桌面应用和任何其他非UWP应用而言,共用一个系统存储。对于每个Windows Runtime 应用而言,它们每个应用都有自己的存储(目的是开启前面提到的修剪trimming和交换swapping)。内存管理器压缩它们并把它们放在适当的存储上,而不是将「修改列表」简单地写入到页面文件中。

压缩存储位于System 进程的工作集中。 注意在图表中我们把System进程的工作集独/立于其它工作集显示是为了看起来更方便,但要注意的是,System工作集和其他进程的工作集都是一样的。虽然乍一看违/反了直觉,这是因为System进程维护压缩存储,它的工作集会在可用内存增大时开始扩大。这在任务管理器中是可以观察到的。

首先,观察下System进程使用的内存:



然后,打开并暂停(楼主注:Metro App概念,即最小化)一些程序:

然后System进程的工作集开始扩张:



每个压缩存储在必要时都通过压缩它自身来保证一个好的压缩率。实践证明,已压缩的内存的大小仅为未压缩的内存大小的40%,并且,我们得出了这个结果,在一般的设备和一般的工作负载下,Windows 10的磁盘占用率比以前版本的 Windows 都要低,大概仅为 50% 左右。这将会减少等待所有设备上IO的时间,而且还会提升固态硬盘的使用寿命。

尽管压缩提供给操作系统更多内存空间去加载应用程序,虚拟内存依旧是必须的。在Windows 10中,写入页面文件的操作会通过移动System进程的页面到「修改列表」实现。如果页面从System进程的压缩存储移动到「修改列表」中,内存管理器会知道它们已经被压缩并且很快会写入到页面文件中。这个写入操作比写入未压缩的页面要小。也就是说:内存管理器只会写入System进程中已压缩的页面到页面文件。

所以,让我们聊聊一个进程是怎么从压缩存储或者页面文件中获得信息的吧。在前一情形(楼主注:从压缩存储中获得信息),当一个进程在压缩存储的页面上中断,内存管理器解压这个页面,并且放在这个进程的工作集上,这个过程叫一个软压缩中断(a soft compression fault。但是在后一种情形中(楼主注:从页面文件中获得信息),内存管理器还是首先尝试前一种的解决方法,却发现信息不在内存里。接着内存管理器从页面文件读取压缩页,并复制到系统进程的工作集中,解压和中断过程遵循之前的规则。

解压是一个高度并行的过程,所以出于高效起见,Windows 可以同时移动多个页面。正是由于如此,交换(swappingUWP 应用(对应的操作为trimming)的效果特别好。但这不仅仅是解压缩这么简单:Windows结合了连续读取和并行性的优点,使得swapping后的页面重新读入内存的速度非常快;它一次读取一个数据块,并在等待下一个I/O操作完成时,先利用处理器的多个核心并行解压刚才所读取的数据。所以呢,如果您之前的平台是因为磁盘I/O效率不给力而导致卡顿的话,让其运行Windows 10就会流畅许多。(这段文字是小麦@raymai97 翻译的,非常感谢!)

总的来说,内存压缩允许 Windows 10 通过减少物理内存使用率的方式在所有平台上更有效地使用可用内存,它的结果就是,页面文件相关的IO操作明显减少,对硬盘IO的依赖性降低。而且,它提升了内存管理器必须写入页面文件时的IO表现。总之,我们希望用户们体验总体响应速度提升和可用性提升的Windows 10设备。

Thanks,

EthanCreeger Base Platform 组的项目经理。我已经在 Windows ( Microsoft) 工作了两年关于内核中硬件方面的内容,比如ACPIPCIE
woodelf
发表于 2015-8-19 14:29:52 | 显示全部楼层
然而,Linux早就有zram技术了。除此之外,还有KSM/UKSM和zswap等进一步改善内存和页面文件占用的技术。
翼风Fly
 楼主| 发表于 2015-8-19 14:43:33 | 显示全部楼层
woodelf 发表于 2015-8-19 14:29
然而,Linux早就有zram技术了。除此之外,还有KSM/UKSM和zswap等进一步改善内存和页面文件占用的技术。

涨姿势了。。。卡饭需要你这样的大神
linux有作为技术试验田的版本,用户群也决定了其质量;OS X因为硬件可控也上了内存压缩;微软这边对于一些技术蹑手蹑脚似乎也情有可原吧。。。
风之咩~
发表于 2015-8-19 15:28:01 | 显示全部楼层
翼风Fly 发表于 2015-8-19 14:43
涨姿势了。。。卡饭需要你这样的大神
linux有作为技术试验田的版本,用户群也决定了其质量;OS X ...

OS X这种以硬件和系统相互对应的一对一提供模式就别说了
微软比不起的
我是隔壁的小号
发表于 2015-8-19 15:38:52 | 显示全部楼层
风之咩~ 发表于 2015-8-19 15:28
OS X这种以硬件和系统相互对应的一对一提供模式就别说了
微软比不起的

对啊,也没有听说过OS X装在低端机器上。
微软要顾虑的东西太多。
风之咩~
发表于 2015-8-19 15:42:01 | 显示全部楼层
本帖最后由 风之咩~ 于 2015-8-19 15:43 编辑
我是隔壁的小号 发表于 2015-8-19 15:38
对啊,也没有听说过OS X装在低端机器上。
微软要顾虑的东西太多。


会员区帖子权限全给我去掉
版主哪有255权限
有脑子?
我是隔壁的小号
发表于 2015-8-19 15:43:44 | 显示全部楼层
风之咩~
发表于 2015-8-19 15:44:24 | 显示全部楼层
本帖最后由 风之咩~ 于 2015-8-19 15:46 编辑


管理员才200权限
事委会180
脑子?
老馬識途
发表于 2015-8-19 15:44:57 | 显示全部楼层
自动压缩吗?看来不让俺动手。
我是隔壁的小号
发表于 2015-8-19 15:46:59 | 显示全部楼层
风之咩~ 发表于 2015-8-19 15:44
管理员才200权限
事委会180
脑子?

当前版区版主拥有最高权限啊。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛|优惠券| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 苏ICP备07004770号 ) GMT+8, 2017-11-20 05:51 , Processed in 0.050451 second(s), 5 queries , MemCached On.

快速回复 返回顶部 返回列表