如何知道我有足够的交换分区?不会太多或太少。
我的Ubuntu电脑用于一般的事情:
网络(电子邮件,Facebook等)
一些电影
很少玩游戏。
这里有关于交换空间的非常深入的信息
有些人说交换空间应该是内存的两倍,但我个人推荐这样设置:
交换空间 = 1.5 X 总内存
例如:
如果你有2GB的内存 -> 交换空间 = 1.5 x 2 = 3
P.D:Ubuntu桌面版使用交换空间来休眠(关闭电脑,不需要电源,程序状态保存)。如果休眠对你很重要,请确保交换空间大于内存加上溢出的交换空间。
free
命令可以告诉你正在使用多少交换空间。例如,在这台机器上:$ free -m
total used free buffers cached
Mem: 1947 1863 84 312 758
-/+ buffers/cache: 792 1154
Swap: 4000 3 3997
显示给我我的RAM有2GB(1947m),系统已经使用了大部分。然而,312m被用于I/O缓冲区,剩下的758m系统决定用磁盘缓存填充。
磁盘缓存很有趣,因为它使用快速内存而不是慢速磁盘来存储内容。这些内容本可以从磁盘获取,但为了以防万一保留了下来。这也意味着如果需要的话,有758m的内存可以立即回收,因为系统知道可以在磁盘上找到这些数据。
这就是为什么有第二行显示,如果没有缓冲和缓存,我将有一半的RAM可供使用(1154m)。
第三行显示我有一个过大的交换分区(它一直在那里却没有做任何事情),其中仅使用了惊人的3m。这是内核真的不指望很快会用到的东西,所以它被放在了"后院"。
虽然free
给你当前的快照,但vmstat
可以给你一个运行中的图像:
$ vmstat 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 3588 86236 316524 769132 0 0 14 13 126 81 4 1 95 0
0 0 3588 83872 316532 770512 0 0 0 20 264 1229 3 1 96 0
这些建议在什么情况下不适用?
如果您拥有一个快速硬盘驱动器或固态硬盘(SSD),并且对电池耗尽没有太多顾虑,那么我上面提到的缺点将不适用。(尽管早期的SSD可能存在磨损问题,但我相信自2018年以来销售的任何SSD都应该没问题。)
如果您的机器内存非常少,或者您喜欢同时使用多个占用内存较大的应用程序,那么无论有什么缺点,您可能需要使用交换空间来完成工作。在内存变得更便宜之前,这是交换空间的主要用途。
如果您真的需要休眠(也许您想暂停您的笔记本电脑,并在几天后重新打开而不充电),那么您需要一个交换驱动器(建议至少与您的内存一样大)。
注意:
我们长时间运行的一些软件(尤其是操作系统和桌面环境)会将代码加载到内存中,但实际上永远不会再次使用。这些页面可以被移动到交换空间,并且永远不需要再次取出,从而避免了我之前提到的缺点。因此,有时我会创建一个小的512MB或1GB的交换文件,让未使用的内存页面被交换出去。这样就为应用程序留下了更多的RAM。(需要:一种测量交换翻转的技术,以帮助调整交换文件的大小。)