分页为什么绑定的时候就使用完了CPU
发布网友
发布时间:2022-05-14 07:35
我来回答
共1个回答
热心网友
时间:2023-08-07 00:32
一、分页空间的概念
VMM 使用交换(分页)空间存储没有使用活动 RAM 的进程,有一点点类似win的虚拟内存。分页空间本身是一个特殊的逻辑卷,它存储了当前不访问的信息。
请求分页的工作原理是,内核一次仅加载部分页面到实际内存中;当 CPU 需要另一个页面时,它会到 RAM 中查找,如果无法在 RAM 中找到这个页面,则出现一次缺页,然后向内核发出信号以便从磁盘中加载更多的页面到 RAM。请求分页的一个优点是,分页空间不需要非常大,因为数据总是在分页空间和 RAM 之间不断地交换。
在进行分页时,进程的部分内容将在磁盘和 RAM 之间来回移动。当发生交换时,会将整个进程来回移动。但是在将进程移动到分页空间之前,AIX 会挂起整个进程。只有在将进程交换回 RAM 之后,才能够继续执行它。出现这样的情况并不是很好,应该尽量防止交换的发生
二、查看分页空间的配置情况
AIX 提供了三种不同模式的分页空间分配策略:
1、延迟的页面空间分配(deferred page space allocation)
2、晚页面空间分配(late page space allocation)
3、早页面空间分配(early page space allocation)。
AIX 的缺省策略是延迟的页面空间分配。这样可以确保将分页空间的分配延迟到必须调出页面的时候进行,从而确保不会浪费分页空间。
# vmo -a | grep def
defps = 1
上例说明使用了缺省的方法(延迟的页面空间分配)。如果将该参数设置为 0,系统将使用晚分页空间分配策略。晚分页空间分配策略会在 RAM 中相应的页面被修改时才分配分页磁盘块。这种方法通常用于那些性能比可靠性更加重要的环境,但是程序可能会因为缺少内存而运行失败。早页面空间分配则可以确保进程不会因为较低的分页情况而终止。早页面空间分配策略可以预先分配分页空间。这是与晚分页空间分配策略截然相反的。对于可靠性要求很高的环境,可以使用这种策略。启用这种策略的方法是将 PSALLOC 环境变量设置为 early (PSALLOC=early)。
三、监视分页空间
1、lsps 命令
# lsps -a 显示所使用的分页空间
# lsps -s 显示所有分配的分页空间的汇总信息,包括使用早页面空间分配策略分配的空间。
2、vmstat命令获取实时使用情况及页面空间调入调出情况
avm——这一列表示您所使用的活动虚拟内存量(单位为 4k 大小的页面),不包括文件页面。
fre ——这一列表示内存空闲列表的大小。在大多数情况下,我并不担心这个值什么时候变得很小,因为 AIX 总是会充分地使用内存,并且不会像您希望的那样尽早地释放内存。这个设置由 vmo 命令的 minfree 参数来确定。归根结底,分页的信息更加重要。
pi——这一列表示从分页空间调入的页面数。
po——这一列表示调出到分页空间的页面数。
主要检查下列几个参数
1)观察pi和po值,这两列植不能太大,越小越好,表示页面不断地在磁盘和 RAM 之间来回移动
2)观察fre值,表示空闲列表的值,该值越大越好,最小不能小于vmo 命令的 minfree 参数设置的值
3)观察wa的值,表示进程的等待时间
3、swap命令
4、# svmon -P | grep -p 17602 察看某一进程正在使用的分页空间。
四、配置分页空间
1、决定分配多大的分页空间准则
从数据库的角度来看,分页空间以最大值来设置,大小设置为 RAM 的两倍;其中Oracle分页空间的推荐初始设置为 RAM 大小的一半加上 4GB,但是上限为 32GB。
通常来说,如果我的系统拥有超过 4GB 的内存,按照 RAM 的大小来创建分页空间。在投入运行后经常对系统进行监视。如果发现分页空间的利用率从来都没有接近过百分之五十,那么就不需要添加额外的空间。
2、使用 vmo 进行优化
# vmo -o 参数名=参数值 修改vmo参数
1)在优化 vmo 设置的过程中,可以偏重于工作存储或者持久存储。通常偏重于工作存储。防止 AIX 调出工作存储并充分利用数据库缓存的方法是,将maxperm设置为一个较高的值(大于 80),并确保 lru_file_repage=0 参数表示是否应该考虑 VMM 重分页计数,以及它应该替换何种类型的内存。其缺省设置为 1,所以您需要将其更改为 0。当您将该参数设置为 0 时,它会告诉 VMM,您希望仅替换文件页面,而不是计算页面。(??)
2)配置 minfree 和 maxfree参数,如果空闲列表中的页面数低于 minfree 参数,VMM 开始替换页面,直到空闲列表至少包含 maxfree 参数中指定的页面数。
3)当分页空间开始变得很低时,系统将会警告破坏性的进程,然后终止它们。更改哪些阈值可以影响这项活动呢?这些阈值分别是 npsware、npskill 和 nokilluid。
A、Npswarn 是当空间变得较低时用于通知进程的阈值。
B、Npskill 是 AIX 开始终止进程的阈值。如果策略是早页面空间分配策略(最可靠的分页方法),它将不会终止进程。
C、Nokillid 是一个非常重要的阈值,因为如果它设置为 1,那么它将确保不会终止 root 所拥有的进程,即使达到了 npskill 阈值。
4)当因为分页空间的问题使得进程不能通过 fork 系统调用来创建子进程时,调度程序将重新尝试为其创建子进程,共重试五次,每次重试之间延迟十个时钟周期。可以更改 schedo 参数以增加或者减少尝试的次数。用于这项任务的参数是 pacefork 的值。
5)参数 lrubucket。对这个参数进行优化,可以降低扫描开销。在对拥有大量内存的系统进行扫描时,因为页面置换算法始终查找空闲帧,所以需要扫描的页帧的数目是非常重要的。增加这个值可以减少需要扫描的桶数。