目前这个这个时代,swap space还有什么意义?

论坛 期权论坛 期权     
匿名用户1024   2021-5-30 17:06   9180   5

这个是 OSX 10.10 的内存情况。。  
分享到 :
0 人收藏

5 个回复

倒序浏览
2#
有关回应  16级独孤 | 2021-5-30 17:06:04
就针对「目前这个时代」来答吧。题目里的贴图,Virtual Memory 是 20.96G,Physical Memory 是 16G。也就是说,如果没有 VM 系统,他的机器是无论如何没有办法同时跑这么多程序的。

但是 Swap Used 只有 690M,远没有 20.96G - 16G 那么大。这是说明 VM 并不是 Swap File 一项。其实 Swap File 仅仅是按需映射到内存的文件之一,很多文件都会映射到内存中。最常见的就是可执行文件。像 Photoshop 这样的程序启动后,一般只有十分之一的可执行代码真正调入 Physical Memory 中。而且很多程序都要链接同样的系统动态库,这些库不但是按需调入的,而且调入之后共享同一块 Physical Memroy。这些 VM 的优化都是不会体现在 Swap File 上的。

还有那个 Compressed Memory,那就是新时代的 Swap File。也不小吧。

没有 VM,你要配置大概 50 - 100G 内存才能跑起来你现在的系统。
3#
有关回应  16级独孤 | 2021-5-30 17:06:05
印象中 unixv6 的进程切换是把当前进程刷到磁盘,然后把磁盘里的进程换出来,一进一出,每次进程切换都是 swap 一整个进程。

现在 swap 分区只作为匿名内存的 back store。楼上提到 “内存不足,程序只有自杀,木有办法再分出内存用于保存到硬盘” 其实有一点点不准确, 没有 /swap 分区,依然可以把 .text 段等只读数据的物理页释放出来,不过这部分只读内存可能确实不如匿名内存占地方?

linux 的 Out of Memory 有不确定性,留个 /swap 分区可以在内存压力大要死的时候勉强救活一命。内存现在都大了,这就聊胜于无吧。也有 zswap 这种把 /swap 挂载到内存里做压缩腾地方,不过之前组里的内核牛人也评价这是不知道现在内存多便宜的屌丝技术。
4#
有关回应  16级独孤 | 2021-5-30 17:06:06
题主觉得现代操作系统的虚拟内存仅仅是为了应付物理内存的短缺那就太naive了.

虚拟内存能提供给应用程序一个统一的抽象, 可以屏蔽底层的物理内存拓扑结构, 使得每个程序都自认为能占有一大片平坦的内存空间, 不用再去担心底层细节.  同时, 这种抽象提供了一个中间层, 结合硬件与软件技术, 可以实施复杂的访问控制和安全策略. 这种抽象大大解放了很多程序员的负担, 提高系统安全与健壮性. 大大提高了生产率. 意义重大. 而复用物理内存, 那只是顺带的事而已.
5#
有关回应  16级独孤 | 2021-5-30 17:06:07
提问者显然是混淆了虚拟内存和页面文件(交换文件)两个概念。

页面文件的确在大内存的情况下已经失去了意义,在物理内存已经完全用不完了的情况下,可以关闭页面文件。

但无论物理内存多大,虚拟内存的意义显然依然存在,这也是提问者会被大家喷的原因。
6#
有关回应  16级独孤 | 2021-5-30 17:06:08
我认为主要原因是512M内存的机器数量可能大于16G的。平均在1G左右,很容易爆。即使16G PS开大图等操作同样会耗尽内存。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:136515
帖子:27303
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP