APP下载

论HPUX 系统交换与伪交换

2013-09-07

中国新技术新产品 2013年4期
关键词:系统管理员示例进程

(1.北京宇信易诚科技有限公司,北京 100000;2.北京博辉在线科技发展有限公司,北京 100000)

正如其他版本的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.

猜你喜欢

系统管理员示例进程
2019年高考上海卷作文示例
债券市场对外开放的进程与展望
常见单位符号大小写混淆示例
常见单位符号大小写混淆示例
“全等三角形”错解示例
社会进程中的新闻学探寻
我国高等教育改革进程与反思
Linux僵死进程的产生与避免
浅议会计电算化工作中的系统管理员