当前位置: 首页>>技术问答>>正文


交换分区的重要性

, , , , ,

问题描述

  • 交换分区的目的是什么?

  • 我怎么知道我有足够的交换分区?不太多/太少。

我的Ubuntu PC用于典型的东西:

  • 网络(电子邮件,脸书等)

  • 一些电影

  • 游戏很少见

最佳解决方案

交换分区有两个目的。

  • 它用作’backup’ RAM。也就是说,如果您的计算机耗尽RAM,它将使用交换区域作为更多内存的临时源。更具体地说,它将’swap’未使用的项目从RAM进入交换区域,以便为当时需要它的应用程序留出备用空间。这并不理想,因为硬盘驱动器的数据传输速率明显低于普通RAM。实际上,这意味着从交换区域检索信息要慢得多。

  • 它在计算机休眠时使用。休眠包括将RAM的图像置于其当前状态(如ISO表示图像),并将其保存到交换区域。然后在计算机重新启动时重新加载此图像。

  • 最有用的是,交换区域应至少为(RAM * 1.5),但建议使用更多。例如,在我的3GB内存系统上,我的交换区域为7.2gb。

次佳解决方案

这与关于交换分区的“right”大小的this question非常接近。我的answer there中的大部分相同信息都适用 – 基本上,如果你想要休眠,你通常希望你的交换空间至少和你的RAM一样大,除此之外,像1或2 GB这样的数字就足够了。因为交换比RAM慢得多,如果你填满了几千兆字节的交换,你的计算机几乎肯定变得非常慢。

还没有真正需要交换分区 – 交换文件(在主流linux文件系统上可用)提供相同的性能,如果您认为自己没有足够的话,可以轻松添加更多的交换空间。

第三种解决方案

here有关swap的非常深入的信息

有人说你公羊的两倍,但我个人推荐这个:

swap = 1.5 X总Ram

示例:

如果你有2Gb的ram – > swap = 1.5 x 2 = 3

P.D:Ubuntu Desktop使用Swap进行休眠(PC关闭,无需电源,保存程序状态)。如果休眠对您很重要,请使用更多交换空间,然后使用ram + swap overflow。

第四种方案

free命令可以告诉您正在使用的交换量。例如在这台机器上:

$ free -m
             total       used       free     buffers     cached
Mem:          1947       1863         84         312        758
-/+ buffers/cache:        792       1154
Swap:         4000          3       3997

告诉我,我有2GB(1947m)RAM,系统已经使用了大部分内存。但是,312m用于I /O缓冲区,其余(758m)系统已决定填充磁盘缓存。

磁盘缓存很有意思,因为它的内容使用快速内存​​而不是慢速磁盘。内容可以从磁盘获取,但是在需要时它们会被保留。这也意味着有758m的内存可以在必要时立即回收,因为系统知道它可以在磁盘上找到该数据。

这就是为什么第二行显示如果没有缓冲和缓存,我可以使用一半的RAM(1154m)。

第三行显示我有一个过大的交换分区(它在那里,并没有做任何事情),其中使用了高达3米。这是内核实际上不希望很快就能使用的东西,因此它被卡在”back porch”上。

虽然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

那里有很多信息,但感兴趣的是没有swap-in(si)或swap-out(so)流量。这意味着我在过去的10秒内根本没有使用交换。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2301.html,未经允许,请勿转载。