如何配置交换?


345

我需要逐步,简单且容易的方法来配置swappiness。


17
一支班轮sudo bash -c "echo 'vm.swappiness = 15' >> /etc/sysctl.conf"
redanimalwar

8
@redanimalwar,您还需要运行sudo sysctl -p以从sysctl.conf文件中加载新的swappiness值,否则更改仅在下次重新启动时适用。
waldyrious 2015年

Answers:


509

Linux内核提供了一个可调整的设置,该设置控制交换文件的使用频率,称为swappiness。

交换设置为零表示除非绝对必要(除非内存不足),否则将避免使用磁盘,而交换设置为100表示将几乎立即将程序交换到磁盘。

Ubuntu系统的默认值为60,这意味着如果内存使用量约为我的RAM的一半,则交换文件将被相当频繁地使用。您可以通过运行以下命令检查自己系统的swappiness值:

one@onezero:~$ cat /proc/sys/vm/swappiness
60

因为我有4 GB的RAM,所以我希望将其调低到10或15。然后,仅当我的RAM使用率为80%或90%时才使用交换文件。要更改系统交换值,请/etc/sysctl.confroot身份打开。然后,将以下行更改或添加到文件中:

vm.swappiness = 10

重新启动以使更改生效。

您还可以在系统仍使用以下命令运行时更改该值:

sysctl vm.swappiness=10

您还可以通过运行swapoff -a然后swapon -a以root用户身份而不是重新启动来清除交换,以达到相同的效果。

要计算您的掉期公式:

free -m (total) / 100 = A

A * 10

root@onezero:/home/one# free -m
             total       used       free     shared    buffers     cached
Mem:          3950       2262       1687          0        407        952
-/+ buffers/cache:        903       3047
Swap:         1953          0       1953

所以总数是3950/100 = 39.5 * 10 = 395

因此,这意味着当剩余10%(395 MB)的内存时,它将开始使用swap。


                                          救命 。Ubuntu的。交换

                                           什么是交换性

swappiness参数控制内核将进程移出物理内存并移入交换磁盘的趋势。因为磁盘要比RAM慢得多,所以如果进程过于主动地移出内存,则可能导致系统和应用程序的响应时间变慢。

  • swappiness 值可以在0到100之间。
  • swappiness=0
    • 内核版本3.5及更高版本:禁用可交换性。
    • 低于3.5的内核版本:尽可能避免将进程从物理内存中交换出来。
  • swappiness=1
    • 内核版本3.5及更高版本:最小交换性,而没有完全禁用它。
  • swappiness=100
    • 告诉内核积极地从物理内存中交换进程并将其移至交换高速缓存。

参见http://en.wikipedia.org/wiki/Swappiness

Ubuntu中的默认设置为swappiness=60。降低swappiness的默认值可能会提高典型Ubuntu桌面安装的整体性能。swappiness=10建议使用值,但随时可以尝试。


开始使用91%的交换:

在此处输入图片说明 当我将系统和虚拟机配置为使用90%的RAM时,在90%的内存中没有交换。

之后,我打开了诸如Firefox&Shutter之类的一些应用程序,由于RAM使用率超过90%,它开始交换。


118
Swappiness为100不会使程序立即被换出,当ram占满60%或90%时,也不会使用值60或90表示交换。这是优先级的比率,即从缓存中窃取页面与在空间不足时换出东西以释放一些内存的优先级。较低的值强烈希望从缓存中窃取页面,较高的值强烈希望尝试将页面换出。该设置仅在(几乎)全部使用内存后才有效,内核必须选择释放内存的方式。
psusi 2012年

67
您需要指出,正在运行的程序未占用的RAM用作磁盘高速缓存...因此,通过减少交换性,可以增加不被交换出程序的机会,但同时减小大小磁盘缓存的数量,这会使磁盘访问速度变慢。因此,此设置对实际性能的影响并不是那么简单...当然,我们欢迎您进行实验,但我怀疑默认设置是由对本主题足够了解的人设置的:)
Sergey 2012年

14
@Sergey及其具有讽刺意味的是,那些内存较小的人最有可能尝试各种技巧以提高性能,并且更有可能成为60岁甚至更高的人。我们中的一些人将其设置为10,因为我们拥有的RAM吨数增加的幅度没有损失的多。
乔恩·汉纳

6
@Freedom_Ben:请参见linuxatemyram.com :)
Sergey

5
只是在这里留下了类似的讨论-unix.stackexchange.com/questions/88693/…–
Elijah Lynn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.