当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。这个是SWAP 交换分区的作用。
系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。其实虚拟内存并不是等到物理内存用尽了才使用的,是否尽量的使用或不使用swap,在内核空间有一个参数控制。
# cat /proc/sys/vm/swappiness 60
表示默认的swappiness的值为60。换而言之,当swap空间使用达到60%的时候,开始释放物理内存中的cache/buffers。swappiness=0 的时候表示最大限度使用物理内存,然后才是swap空间;swappiness=100 的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。
现在服务器的内存动不动就是上百G,所以我们可以把这个参数值设置的低一些,让操作系统尽可能的使用物理内存,降低系统对swap的使用,从而提高系统的性能。例如
# echo 10 > /proc/sys/vm/swappiness
或者
# sysctl vm.swappiness=10 vm.swappiness = 10 # cat /proc/sys/vm/swappiness 10
这表明修改已经生效。但是如果我们重启了系统,它又会变成60。为了让我们的修改长久有效,可以修改配置文件/etc/sysctl.conf:
# echo 'vm.swappiness=10' >>/etc/sysctl.conf
为了让它即时生效,可执行:
# sysctl -p
重新载入配置文件。
目前Red Hat(红帽官方)推荐交换分区的大小应当与系统物理内存的大小保持线性比例关系。不过在小于2GB物理内存的系统中,交换分区大小应该设置为内存大小的两倍,如果内存大小多于2GB,交换分区大小应该是物理内存大小加上2GB。其原因在于,系统中的物理内存越大, 对于内存的负荷可能也越大。但是,如果物理内存大小扩展到数百GB,这样做就没什么意义了。
最近,在Gentoo中编译webkit-gtk-1.10.2-r300,辛辛苦苦编译了几个小时,结果报错:
collect2: ld termiinated with signal 9 [Killed]
通过Google搜索,发现这是由于编译过程中机器的内存耗尽引起的。这就是说解决问题的办法是增加内存。不过加物理内存是远水,解不了近火。既然Linux中的交换分区也是内存的一部分,于是不妨尝试增加交换分区。 这又让我们想起了红帽官方对于交换分区的建议:Linux系统交换分区最适合的大小是物理内存的1-2倍。可是谁又会在分区的时候记得这些呢?不过由于Linux允许文件系统中存在多个交换分区或者交换分区文件,所以亡羊补牢、为时未晚。如果我们的磁盘空间还尚有空余没有划分,那么我们可以直接利用分区工具再分出一个交换分区。倘若你像我一样,所有空间都已经被划分完了,那么只剩一招了—使用交换分区文件。下面我们主要来说说如何利用交换分区文件扩大分区。
首先,需要制作交换分区文件。考虑到我的老机器已有的物理内存是1G、现有交换分区大小是500M。为了我们的编译过程顺利完成,不妨考虑交换分区文件的大小为1G。为此,执行下述命令:
$ sudo dd if=/dev/zero of=/var/tmp/swap bs=1k count=1024000
记录了1024000+0 的读入
记录了1024000+0 的写出
1048576000字节(1.0 GB)已复制,5.07655 秒,207 MB/秒
它将在/var/tmp路径创建一个名为swap、大小为1G的分区文件,该分区文件拥有1024000个扇区(block),每个扇区大小为1K。接着,再把这个分区文件格式化为交换分区格式:
$ sudo mkswap /var/tmp/swap
随后,将它挂载到文件系统:
$ sudo swapon /var/tmp/swap
如果想要确认交换分区是否挂载成功,可执行:
$ swapon -s Filename Type Size Used Priority /dev/sda1 partition 511996 16192 ?1 /var/tmp/swap file 1023996 0 ?2
从显示结果来看,我们确实看到了文件格式交换分区被加载。如果还想要查看系统内存情况,只需执行:
$ free -m total used free shared buffers cached Mem: 995 935 60 0 6 551 -/+ buffers/cache: 376 618 Swap: 1499 15 1484
通过扩大swap区,可以正常将webkit-gtk-1.10.2-r300编译完。实际上,用top跟踪webkit-gtk-1.10.2-r300的编译过程,会发现整个编译过程所需要的内存大概在2G左右。而我们通过增加交换分区的大小,总获得了2.5G左右的内存空间。编译完之后,如果我们不再需要这一块交换分区文件,那么可以先卸载再删除它:
$ sudo swapoff /var/tmp/swap $ sudo rm -rf /var/tmp/swap
倘若我们仍希望交换分区文件为以后的编译提供便利,那么可以选择保留它。不过在使用它之前必须先挂载它,因为一旦重启,原先的挂载便会失效!若要让我们的交换分区文件随机器启动自动挂载,则可修改/etc/fstab文件,例如作如下设置:
$ cat /etc/fstab | grep -i swap /dev/sda1 none swap sw 0 0 /var/tmp/swap swap swap defaults 0 0
相关推荐
在Linux操作系统中,交换分区(Swap Partition)是一种虚拟内存机制,当物理内存不足时,系统会将部分数据存储到硬盘上的交换分区,以此扩展可用内存。本文将详细介绍如何在Linux中添加和增大交换分区。 首先,添加...
在Linux系统中,交换分区(Swap Partition)是用于扩展内存的一种虚拟内存机制,当物理内存不足时,系统会将部分数据存储到交换分区。本文将详细介绍如何查看和调整Linux的交换分区大小,以优化系统性能。 一、查看...
根分区是系统的核心,包含了Linux的所有目录,而交换分区类似于Windows中的虚拟内存,用于扩展内存容量。对于交换分区的大小,通常有以下建议:物理内存小于4GB时,设置为内存的2倍;4GB至16GB之间,大小可以与物理...
虚拟内存是Linux系统中一个关键特性,它允许系统使用硬盘空间来扩展物理内存,从而有效地增大可用内存。当系统需要更多内存而物理内存不足时,核心会将当前不活跃的数据块(页)存储到硬盘上,腾出内存供其他任务...
文档建议超过2GB内存的系统使用不超过物理内存容量的交换分区,且Red Hat Enterprise Linux支持多达32个swap文件。 Linux的文件系统不同于Windows,它使用树状的Ext2/3文件系统,不采用传统意义上的磁盘分区概念。...
Linux 交换空间(SWAP)是指操作系统在物理内存不足时,使用硬盘空间来存储数据的一种机制。SWAP 空间是一个特殊的磁盘分区,用于存储当前无法加载到物理内存中的数据。该机制可以有效地提高系统性能,避免系统崩溃...
在Linux系统中,虚拟内存的管理更为灵活,可以通过调整`/etc/fstab`文件中的交换分区参数或者使用工具如`swapon`和`free`来管理。例如,创建一个新的交换文件(如`/swapfile`)并启用它: 1. 创建一个大文件,例如`...
当物理内存不足时,SWAP分区会被用来作为临时的内存扩展,帮助系统运行大型软件。随着硬件的进步,内存容量增大,SWAP分区的重要性相对降低,但在资源有限的设备上,它仍然发挥着关键作用。 总的来说,Linux操作...
如果发现交换分区频繁使用,可能需要增加物理内存或优化内存分配策略。 8. 调整页面缓存 `vm.dirty_ratio`和`vm.dirty_background_ratio`内核参数控制何时将脏页写回磁盘。适当调整这些值可以平衡性能与磁盘I/O。 ...
- 交换分区的作用是在物理内存不足时提供额外的虚拟内存空间。 - 在多任务处理和大内存消耗的应用场景下尤为重要。 - 对于大型服务器或高性能计算环境,可根据实际情况调整交换分区的大小。 #### 四、根分区...
虽然交换文件更灵活,但通常推荐使用交换分区,因为它们在性能上优于交换文件,尤其是在频繁的读写操作中。 当系统出现“震荡”现象时,意味着虚拟内存(包括RAM和交换空间)接近满载,系统频繁地在RAM和交换空间...
这可能涉及到扩展分区、逻辑分区以及如何为Linux保留特定分区,如交换分区(用于虚拟内存)和根分区(/)。此外,与Windows等其他操作系统共存时,合理规划磁盘空间能确保系统间的和谐共处。 总之,磁盘分区是一项...
此外,内核层面的优化还包括调整内核参数,如增大交换分区大小、设置合适的swappiness值(控制进程在物理内存不足时如何利用交换空间),以及优化内存分配策略等。 **学习资料推荐:** 1. 《Android内核剖析 柯元旦...
它是一种虚拟内存机制,当系统的物理内存不足以满足当前运行的程序需求时,系统会将一部分物理内存的内容暂时存储到swap分区,以便腾出空间来运行其他程序。swap分区可以是磁盘上的独立分区,也可以是一个大文件。...
当物理内存不足时,系统会将部分暂时不活跃的数据存储到硬盘上的Swap空间,以腾出物理内存给更需要的进程使用。然而,频繁的内存交换会导致系统性能下降,因为硬盘读写速度远低于内存。"deepin swap-control"工具...
- **调整交换分区**:虽然Oracle不推荐使用交换空间,但如果物理内存不足,合理设置交换分区可以避免因内存不足导致的系统崩溃。 #### 2. CPU与多线程 - **启用超线程**:在支持超线程技术的CPU上开启此功能,可以...
交换分区在物理内存不足时充当临时扩展内存的角色,但它的读写速度远慢于物理内存,可能导致性能下降。通过`echo vm.swappiness = 0 >> /etc/sysctl.conf`和`sysctl -p`命令可以设置系统尽量避免使用交换分区,从而...