开篇:润墨网以专业的文秘视角,为您筛选了一篇论HPUX系统交换与伪交换范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要:在金融数据运维行业打拼了多年,接触hpux稍多一点,根据平时运维经验浅谈一下交换(Swap)与伪交换(Pseudo swap)的概念。
关键词:交换;伪交换;swap;Pseudo
中图分类号:F062.5 文献标识码:A
正如其他版本的Unix一样,HP-UX也使用Virtual Memory将进程加载到内存中。简单来讲,Virtual Memory由两部分组成,物理内存,即RAM和swap。物理内存是程序运行所在的位置,swap是“交换”。Swap设备通常属于物理硬件驱动器。Swap允许进程的总数超过物理RAM的数量,而且可以根据需要进行分配。产生(Spawn)进程时,Kernel将检查虚拟内存,看看该进程是否可以直接加载到物理内存中。该Kernel还会进行检查,以确保该进程能够节省swap区域中的空间。如果两个测试均失败,该进程则不会产生,将被终止。生成的错误消息为malloc或fork失败。所有进程都必须能够节省swap区域中的空间。要保留足够的可用物理内存,以便进程运行,有一个被称为vhand的daemon会扫描Kernel中的所有进程表,查找尚未使用过的数据页。如果vhand发现了任何“非活动”页,vhand就会将这些页移动到swap区域。如果可用内存下降至太低,另一个被称为swapper的daemon则会删除或swap出整个进程。Swapper将继续将进程从物理内存推入swap区域,直到可用内存增加。当系统进行swap时,该swapper进程非常活跃。在HP-UX 11.x版本中,不会swap出整个进程,而只是swap部分进程。Swap的部分进程称为已分页。
如果系统上没有配置足够的swap,系统性能则可能会受到很大的影响。有些影响是,系统可能无法访问系统上安装的所有物理内存。只有在Swap区域的可用空间多到可用于进程的情况下,Kernel才允许产生进程。应用程序也依赖于swap,如果没有配置足够的swap,则生成与内存相关的错误消息,如malloc或fork失败。如果系统无须将进程从物理内存swap到swap区域,则将执行附加磁盘I/O。该Kernel还将使用附加资源来监视内存并处理进程到swap设备的移动。这种附加开销将降低系统性能。如果这一问题非常严重,系统则可使用所有CPU或进程管理的其他资源。一旦系统达到此状态,则称为Thrashing。
用于swap的磁盘区或者logical volume称为设备swap。默认情况下,安装了操作系统的情况下(/dev/vg00/lvol2),系统至少会配置一个区域的设备swap。设备swap就是一个logical volume或者一个磁盘区,是为系统提供用于swap的。类似bdf的命令不会显示系统上的swap,但是swapinfo命令会显示。设备swap可以配置在系统上的任意volume group上。涉及到性能问题时,最提倡使用logical volume,当系统需要附加swap时应首先配置logical volume。设备swap也包括两个术语,第一个是主swap。此swap设备应为/dev/vg00/lvol2,是在安装操作系统时创建的。主swap只能位于引导驱动器上。任何附加设备swap都称为次swap。次swap设备可以配置在任何volume group上。
文件系统swap使系统管理员能够在所有磁盘空间均已分配给文件系统的情况下,向系统添加更多的swap。使用文件系统swap,您可以设置和配置文件系统中可用的空间。当您分配文件系统swap时,该系统会创建一个目录,称为paging,并会在该paging目录中创建swap文件。当且仅当系统开始向该swap区域进行swap时,系统才会执行到这些文件的写入。系统性能将会因维护文件系统swap而受到影响。这是因为,操作系统已经从物理内存删除了页,然后将其以小块的形式写入文件。如果系统只需要文件系统swap用于保留空间,系统的性能就不会受到影响。文件系统swap应该仅用作swap问题的临时解决方案。一旦向系统中添加了附加驱动器,文件系统swap就应尽快删除。由于性能方面的原因,我们建议将文件系统swap区域的优先级设成高于设备swap。
Pseudo swap是该规则的例外。Pseudo swap可使系统管理员利用具有较大物理ram的系统,而无须配置较大的swap区域。Pseudo swap不是设备swap的替代品,而是swap的增强。当系统引导时,会计算pseudo swap的数量。此计算是75%的物理内存,此值是不可调整内核参数。该Kernel会此增强看作是产生新进程时可以分配的附加swap区域。系统只会将pseudo swap用作保留空间,而不会将进程分页进出pseudo swap。如果进程需要分页出物理内存,Kernel则会swap到设备或文件系统swap。Pseudo swap默认情况下处于打开状态,将内核参数swapmem_on改为off,即可关闭。
下面是使用pseudo swap的优点示例。假设我们有一个系统,它有1GB的物理RAM。要使操作系统能够使用所有内存,操作系统至少需要1GB的swap。系统管理员为swap配置了1GB的logical volume。另外,系统管理员还保持pseudo swap处于启用状态。当系统引导时,它会将75%的物理内存配置成pseudo swap。我们大约有750(1000*.75)M的附加swap用于该系统。现在系统的swap总数为1.75GB,或2.75GB的虚拟内存。Pseudo swap不会增大swap的总数。Kernel会将该系统视为具有1.75GB的swap,并将按照系统配置了1.75GB设备swap的方式使用swap。但是,只配置了1GB的设备swap。
由于pseudo swap会增加系统上的swap总数,所以有些系统管理员可能想减少设备swap的数量,并将该空间用于数据。在有些情况下,系统管理员可以执行此操作。此外,系统管理员还需要规划转储空间。此转储空间用于系统写入系统崩溃。默认情况下,主swap(/dev/vg00/lvol2)既用于swap也用于转储。在11.0及以上版本中,不再需要将swap/转储空间与物理内存的比例配置为1:1。
使用swapinfo命令,系统管理员即可看到配置了多少swap,有多少swap是用于进程的,甚至有多少swap正处于活动状态,且可用于swap的进程。下面是一个示例:
此输出显示了此系统上配置的设备swap(dev)、文件系统swap(localfs)和pseudo swap(memory)。我要指出的第一个点是total行。从左到右,您可以快速了解系统上正在如何执行swap。在Mb Avail列下面,它显示此系统总共配置了279M的swap。在配置的279M中,130M正在使用。我的意思是说,如果swap用于保留或分页时,total行不会显示。130M正在用于“某些内容”,剩下149M的swap未在使用。PctUsed列只显示了已在使用的swap百分比。
"memory"行显示pseudo swap用量,这是所有swapinfo输出中最令人困惑的地方。从此示例中可以看出,总共配置了91M的pseudo swap,其中,68M的pseudo swap正在由内存中运行的进程使用。剩下未使用的pseudo swap是23M。之所以令人困惑,其中的一个原因是pseudo swap使用不会像设备swap和文件系统swap那样降低系统性能。换句话说,无论使用3%还是99%的pseudo swap,系统性能都是一样的。在查看swapinfo时,我们通常建议忽略"memory"行。
"reserve"行仅涉及我们用于保留设备和文件系统swap区域中进程的swap数量。
"localfs"行显示的一些信息说明了,对于/var上配置的文件系统swap,系统将使用的空间量。
"dev"行是swapinfo命令可以显示的最重要的信息之一。如果percent used一行大于0,系统就会进行swap。这明确说明,系统上安装的物理RAM不足。只有两个方法能够使系统停止swap,第一个是安装更多的物理内存,另一个是减少系统上运行的进程。
总之,本人对交换与伪交换的的理解还仅限于此,实际应用中还需要结合其他命令与工具,不局限于swapinfo,如:glance、kmeminfo、ps、top等,使用多种方式进行综合分析的结果才是最准确、有效的。
参考文献
[1]HP-UX系统管理[M].北京:机械工业出版社,2002.