linux下根文件系得统制作工具。内带shell命令
源代码在线查看: unix系统管理-第十一章:管理交换空间.txt
UNIX系统管理-第十一章:管理交换空间
目标
完成这一章,你能够做以下事情:
了解需求分页的概念。
了解物理内存,有效内存,和可锁定内存的含义。
确定系统中物理内存,有效内存,和可锁定内存的数目。
确定系统现有的和正在使用的交换区的数量。
在命令行中配置设备交换区。
在命令行中配置文件系统交换区。
取消交换分区。
选择文件系统交换分区和设备交换分区的时候需要考虑事项
11.1 系统内存
物理内存就是安装在你计算机中的随机存取存储器(RAM)。在系统启动的时候,在系统控制台上会显示已安装的物理内存的数目:
Physical: xxxxxxx kbytes
并不是所有的物理内存都能被操作系统使用。一些物理内存会被内核代码和数据结构占用。剩下的内存被称为有效内存,被系统用作需求分页。在系统引导时,会显示有效内存的数目:
Available: xxxxxxx kbytes
全部或部分的有效内存都可以被一个子系统或是用户进程锁定。被锁定的内存不能被交换到磁盘上去。典型的情况是,被锁定的内存页中保存有频繁存取的程序代码或数据结构,通过将程序代码和数据结构常驻内存,可以提高进程的执行效率。但是如果系统的大部分的内存都被锁定会导致系统死锁,所以必须要有一些未锁定的内存存在来避免系统死锁。
在系统启动的时候,能够被锁定的内存的总数会显示出来:
Lockeable: xxxxxxxx kbytes
有效内存减去被子系统或用户进程实际锁定的内存就是虚拟内存分页实际可用的内存。系统参数,unlockable_mem 中保存了不能被锁定的内存的大小。
注意:dmesg 命令可以显示系统启动的时候显示的信息,这些信息包括物理内存的数目,有效内存,和可锁定内存的大小。
11.2 什么是交换分区
交换分区是在高速存储设备上的一块区域,交换区是为虚拟存储系统进行分页进程而保留的。物理内存是系统中的有限的资源,这意味着在同一个时刻只能有一定数量的进程可以使用物理内存,甚至会有许多的进程实际上处于等待运行或等待执行当中。当进程运行的时候,程序的数据页和数据结构(文本)从内存中被拷贝到磁盘上或从磁盘上拷贝到内存中(在需要的时候),这就被称为需求分页。通常,程序的文本部分在程序执行的时候不会更改。所以在需要的时候,文本可以从包含可执行程序的文件中被拷贝到RAM中,执行中的程序的数据页会更改,因此,如果一个数据页必须从RAM移动到另外的空间,必须先将其拷贝到交换空间。
分页
内核通常会保持一定数量的空闲内存页来确保系统的效率。这个数字称为lotsfree,只要不低于这个数字,就不会发生分页行为,当空闲内存页的数目小于这个数字的时候,一个称为vhand的进程就会启动,这个守护进程会选择那些最近没有被访问的内存页,在需要的时候将这些内存页拷贝到交换分区中。这个过程被称为page out ,当一个进程试图存取当前内存中不存在地址的时候会发生page fault,这时,这个内存页会被拷贝到RAM中。
当系统有许多的请求内存需要时(例如系统中有许多的大的进程运行),分页守护进程可能变得十分繁忙,忙于交换内存页的进出,这会导致系统花费太多的时间在分页过程中,以至于没有足够的时间来运行其他的进程。在这种情况下,系统的性能下降的十分快,有时会导致系统没有任何地反映,在这种情况下,称为系统颠簸,因为系统的内部开销远大于生产性的工作。
交换器(swapper)
术语交换最早可以追溯到早期的unix用来管理物理内存的方式,其工作原理是在主内存和二级存贮器之间移动整个进程。现代的大多数虚拟内存系统不再交换整个进程,因为这种方式会导致系统消耗大多数的时间在I/O操作上,而没有时间作实际的工作。这种方式已经被一种非活动性的方案所代替,这种方案允许内存页以一种分页的机制被推出。分页是一种更有效的管理虚拟内存的机制。
当系统开始颠簸的时候,或当空闲内存的数量低于另外一个界限的时候,(这个界限被称为minfree),交换器会被激活,然后交换器会停止进程的活动,这样就降低了新的内存页被存取的速度。哪些属于被停止进程的内存页不会被访问,并且会成为分页守护进程释放的内存候选对象。当交换器检查到有效的内存数量回升到minfree界限之上,系统不再处于无效状态,它会重新激活被停止的进程。
交换区预留
在进程创建的时候,交换子系统会预留交换空间,但是不会在磁盘上指定交换空间,除非在内存页需要交换到磁盘上的时候。在进程创建时预留的交换空间可以防止交换器耗尽交换空间。
当系统不能够为一个新的进程预留足够多的交换空间的时候,进程就不能启动,同样,如果运行中的进程试图动态增加更多的内存,更多的交换空间会被预留。如果这个时候没有足够的交换空间,这个进程就会被杀掉。
交换区预留可以防止系统耗尽交换空间,它也会在所有的交换空间都被使用的情况下阻止进程的建立。
评估交换区的需求
在你安装系统之前,你应该了解你需要多少的交换空间。多数的应用程序的正常运行需要一个最小数量的交换空间。这个数字通常在应用程序的随机文档中有说明。
系统管理员应该监视交换空间的使用情况,并且在需要时对其进行调整。在下一章中我们会了解如何进行这种调整。
11.3 交换空间的类型
交换区的类型
设备交换分区