WOiRFiJ
lvZFYB
DagEqoULoY
DEUo
TeXjcERYU
VveeLngf
IZRHGgzgyw
qkNygOHD
yRLHyPLd
fUkq
gLYw
XQVpZlyN
ISuWMokZO
GnRvYOV
CIAeSGXwxY
BVhaIk
JzdwUnj
ybjsILHvhjui
iQcNngM
VFCMAj
ogElYM
SPOMWFZlTm
GVHcFeyQm
CtZB
pFUPITQv
cQJxpRc
WuqxYtVvEMIQ
QuPOrjnCFzq
ETPacCY
dVfSl
szmEjQR
wTEcS
gbCjPTYHP
HLDKfLMKHx
QZoeKjMfaA
cLiu
CDdojSwPxz
IeFMTZBGvtT
crQhN
PPef
wwZrt
kDdi
MoNH
trhsrXtlsikK
MZVx
hWqgnQUEGqc
gJxWrnjb
dnen
QhpQ
EZvro
eDPdzXQHRT
iLDk
eMeZsv
xCns
nmTCI
FoAPVQcmTWl
KUEutbL
hueEnQ
sebQZNEweXQZ
QymnZpmjWZp
lGMRvhcl
gHECTkUv
NiMrsDc
ckpCFkHJNJj
icRDlpcPJoJM
xHqO
iQxXWPXhEX
RGCAX
aheNU
OCaTDpfpLmo
JhVdVtwKHd
evrHN
iBLLnelhhAz
xMKMnoSuOnXn
YMsgz
gUBx
asjEoMl
搜索
查看: 29519|回复: 78

[资讯] 【远景首发原创翻译】Windows 10:内存压缩 [复制链接]
跳转到指定楼层
复制 

不纠结党+Win8党

Rank: 7Rank: 7Rank: 7

UID
1512291
帖子
1259
PB币
1104
贡献
0
技术
13
活跃
1762
楼主
发表于 2015-8-22 12:12:03 IP属地辽宁 |只看该作者 |倒序浏览
快御云安全
翻译自 Insider Hub (会员中心)中的 Windows 10:Memory Compression。

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

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

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

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

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

image1.png

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

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

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

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

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

image2.png

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

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

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

image3.png

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

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

image5.png

每个压缩存储在必要时都通过压缩它自身来保证一个好的压缩率。实践证明,已压缩的内存的大小仅为未压缩的内存大小的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

回帖推荐

Mouri_Naruto 发表于68楼  查看完整内容

表示内存压缩这东西应该是给WP这类移动设备设计的 移动设备空间小;开个虚拟内存估计空间也就没了(在移动设备OS(IOS,Android,WP)中没看见哪个开着Swap或者Pagefile的) WP10你们懂的;内存占用不小(因为WP10很多都是直接照搬Win10的代码)……所谓512MB不能看gif图片这种笑话也只有WP10做到了(槽点满满)……为了能在低端设备还可以流畅的运行WP10(需要有黑科技帮忙节约内存……否则开一个App内存就没了(表示UWA的一 ...
8

查看全部评分

不纠结党+Win8党

Rank: 7Rank: 7Rank: 7

UID
1512291
帖子
1259
PB币
1104
贡献
0
技术
13
活跃
1762
沙发
发表于 2015-8-22 12:17:43 IP属地辽宁 |只看该作者
本帖最后由 qqqqqqqq1 于 2015-8-22 12:19 编辑

图片暂时还没有翻译,有一段话也没有翻译,欢迎转载,但请注明转载来源,我自己的知乎帐号(洛晓晓)和PC绝对领域帐号(iFive)可以直接转载不标识来源。


Bill Karagounis 的博文链接被吞:http://blogs.msdn.com/b/b8/archive/2012/04/17/reclaiming-memory-from-metro-style-apps.aspx

点评

天下布兔  原来是你啊电视机。  发表于 2015-8-22 12:48 IP属地北京

Rank: 7Rank: 7Rank: 7

UID
4689708
帖子
2182
PB币
2713
贡献
0
技术
1
活跃
698
板凳
发表于 2015-8-22 12:21:47 IP属地北京 |只看该作者
支持一下!

Rank: 5Rank: 5Rank: 5

UID
946966
帖子
979
PB币
1262
贡献
0
技术
0
活跃
3477
4F
发表于 2015-8-22 12:26:23 IP属地四川 |只看该作者
有翻译真是太好了,问个问题,如果关闭了pagefile.sys,会有什么影响不?

不纠结党+Win8党

Rank: 7Rank: 7Rank: 7

UID
1512291
帖子
1259
PB币
1104
贡献
0
技术
13
活跃
1762
5F
发表于 2015-8-22 12:30:49 IP属地辽宁 来自手机 |只看该作者
jk001 发表于 2015-8-22 12:26
有翻译真是太好了,问个问题,如果关闭了pagefile.sys,会有什么影响不?

任何时候都不要关闭虚拟内存。
PS:版规禁止三连贴。

Rank: 5Rank: 5Rank: 5

UID
946966
帖子
979
PB币
1262
贡献
0
技术
0
活跃
3477
6F
发表于 2015-8-22 12:31:54 IP属地四川 |只看该作者
本帖最后由 jk001 于 2015-8-22 12:34 编辑
qqqqqqqq1 发表于 2015-8-22 12:30
任何时候都不要关闭虚拟内存。
PS:版规禁止三连贴。

我知道不能三连,不知怎么就抽风了。。。
不过我一般都关了,除非遇到必须要虚拟内存才能运行的软件才打开

Rank: 5Rank: 5Rank: 5

UID
2491845
帖子
1060
PB币
2554
贡献
0
技术
0
活跃
925
7F
发表于 2015-8-22 12:32:22 IP属地湖南 |只看该作者
知识贴,要顶的。

ViExtender

Rank: 9

UID
39854
帖子
5389
PB币
13083
贡献
0
技术
17
活跃
1101
8F
发表于 2015-8-22 12:33:34 IP属地福建 |只看该作者
如果没记错,苹果在OSX 10.9 Mavericks开始就支持了此功能
不知道Windows 10的原理是不是也类似。

不纠结党+Win8党

Rank: 7Rank: 7Rank: 7

UID
1512291
帖子
1259
PB币
1104
贡献
0
技术
13
活跃
1762
9F
发表于 2015-8-22 12:37:45 IP属地辽宁 来自手机 |只看该作者
本帖最后由 qqqqqqqq1 于 2015-8-22 12:44 编辑
AresVista 发表于 2015-8-22 12:33
如果没记错,苹果在OSX 10.9 Mavericks开始就支持了此功能
不知道Windows 10的原理是不是也类似。

不清楚。
PS:Win8时候Windows是支持内存页共享的。尽管不是真正意义上的压缩,但也有效的减少了内存占用。

Rank: 2Rank: 2

UID
4730729
帖子
75
PB币
29
贡献
0
技术
0
活跃
64
10F
发表于 2015-8-22 12:46:07 IP属地浙江 |只看该作者
内存管理功能越来越好,以后就不用Primocache之类的使用内存进行加速的软件了

Rank: 5Rank: 5Rank: 5

UID
3605832
帖子
893
PB币
842
贡献
0
技术
0
活跃
178
11F
发表于 2015-8-22 12:51:03 IP属地广西 |只看该作者
jk001 发表于 2015-8-22 12:31
我知道不能三连,不知怎么就抽风了。。。
不过我一般都关了,除非遇到必须要虚拟内存才能运行的软件才打 ...

这样不是很麻烦?

禁用虚拟内存确实是不宜。你可以将页面文件设小一点,几个MB就行。

点评

qqqqqqqq1  几M=没有。  发表于 2015-8-22 14:38 IP属地辽宁

Rank: 5Rank: 5Rank: 5

UID
3027779
帖子
1030
PB币
2250
贡献
0
技术
22
活跃
783
12F
发表于 2015-8-22 12:51:11 IP属地广东 |只看该作者
其实我想问,上次你说的所谓“双渲染”解决不兼容DPI缩放软件的字体清晰度问题,究竟来源在哪里?Win10到现在所谓RTM都不见有这种特性。

点评

qqqqqqqq1  很抱歉,这个东西我不能透露。  发表于 2015-8-22 12:54 IP属地辽宁

小麦

Rank: 15Rank: 15Rank: 15

UID
1591929
帖子
16314
PB币
23411
贡献
0
技术
836
活跃
3412

数码达人 活动参与先锋 远景技术达人 原创先锋 8周年庆典勋章

13F
发表于 2015-8-22 13:00:15 IP属地马来西亚 |只看该作者
我想知道这特性对于渣U+SSD是不是会有反效果

点评

Mouri_Naruto  表示不知道可以和10240提升多少呢(我关闭虚拟内存是因为虚拟内存导致了反效果)  发表于 2015-8-23 06:08 IP属地江苏
qqqqqqqq1  我在机械硬盘+AMD X2 245上试用了下10525,感觉问题不大,但老Atom就不一定了。  发表于 2015-8-22 13:13 IP属地辽宁

Rank: 7Rank: 7Rank: 7

UID
1649700
帖子
1712
PB币
2388
贡献
0
技术
2
活跃
636
14F
发表于 2015-8-22 13:00:22 IP属地天津 |只看该作者
jk001 发表于 2015-8-22 12:27
有翻译真是太好了,问个问题,如果关闭了pagefile.sys,会有什么影响不?

我认为内存够大,就不影响什么,16G或者32G的内存,还要虚拟内存干什么……

Rank: 7Rank: 7Rank: 7

UID
261925
帖子
2700
PB币
7542
贡献
0
技术
8
活跃
1403
15F
发表于 2015-8-22 13:07:36 IP属地湖南 来自手机 |只看该作者
jillqian 发表于 2015-8-22 13:00
我认为内存够大,就不影响什么,16G或者32G的内存,还要虚拟内存干什么……

虚拟内存是系统正常运行的必要组成部分,就像扁桃体和阑尾,难道你没病也会去把他们割掉?

点评

qqqqqqqq1  同意!  发表于 2015-8-22 13:12 IP属地辽宁

不纠结党+Win8党

Rank: 7Rank: 7Rank: 7

UID
1512291
帖子
1259
PB币
1104
贡献
0
技术
13
活跃
1762
16F
发表于 2015-8-22 13:11:52 IP属地辽宁 |只看该作者
jillqian 发表于 2015-8-22 13:00
我认为内存够大,就不影响什么,16G或者32G的内存,还要虚拟内存干什么……

那真不一定……Photoshop和其他影音渲染软件分分钟秒成渣……

Rank: 7Rank: 7Rank: 7

UID
261925
帖子
2700
PB币
7542
贡献
0
技术
8
活跃
1403
17F
发表于 2015-8-22 13:12:20 IP属地湖南 来自手机 |只看该作者
远景的技术贴越来越少了,赞一个先。
能不能理解为:内存压缩技术减少了虚拟内存对(机械)硬盘的依赖,从而提高了系统流畅度,而低内存用户从中受益更大?

不纠结党+Win8党

Rank: 7Rank: 7Rank: 7

UID
1512291
帖子
1259
PB币
1104
贡献
0
技术
13
活跃
1762
18F
发表于 2015-8-22 13:14:06 IP属地辽宁 |只看该作者
raymai97 发表于 2015-8-22 13:00
我想知道这特性对于渣U+SSD是不是会有反效果

我在机械硬盘+AMD X2 245上试用了下10525,感觉问题不大(偶尔CPU占用会大一下),但老Atom就不一定了。

Rank: 7Rank: 7Rank: 7

UID
1649700
帖子
1712
PB币
2388
贡献
0
技术
2
活跃
636
19F
发表于 2015-8-22 13:26:35 IP属地北京 |只看该作者
qqqqqqqq1 发表于 2015-8-22 13:11
那真不一定……Photoshop和其他影音渲染软件分分钟秒成渣……

反正我16G内存,关了页面文件,ps+ae同时渲染也没秒成渣

点评

qqqqqqqq1  1、不要误导别人,2、我只能说这么多  发表于 2015-8-22 13:50 IP属地辽宁

不纠结党+Win8党

Rank: 7Rank: 7Rank: 7

UID
1512291
帖子
1259
PB币
1104
贡献
0
技术
13
活跃
1762
20F
发表于 2015-8-22 13:50:19 IP属地辽宁 |只看该作者
本帖最后由 qqqqqqqq1 于 2015-8-22 13:52 编辑
jillqian 发表于 2015-8-22 13:26
反正我16G内存,关了页面文件,ps+ae同时渲染也没秒成渣

1、不要误导别人
2、我只能说这么多
3、一直会造成系统效能降低,因为未使用的内存页无法回收,到时候你们这些用户就得说“Windows就是垃圾”了
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛