Solaris Resource Manager 1.3 系统管理指南

透过 rcapstat 产生报告

本节中的示例说明如何使用 rcapstat 来监视已定义物理内存上限的进程集合的资源使用情况。

使用 rcapstat 报告上限和 Lnode 信息

为与两个用户关联的两个 lnode 定义上限。user1 的上限为 50 兆字节,user2 的上限为 10 兆字节。

以下命令以 5 秒的取样间隔产生报告。将产生五次报告,在每个样本后产生一次。


usermachine% rcapstat 5 5
    id lnode   nproc    vm   rss   cap    at avgat    pg avgpg
112270 user1      24  123M   35M   50M   50M    0K 3312K    0K
 78194 user2       1 2368K 1856K   10M    0K    0K    0K    0K
    id lnode   nproc    vm   rss   cap    at avgat    pg avgpg
112270 user1      24  123M   35M   50M    0K    0K    0K    0K
 78194 user2       1 2368K 1856K   10M    0K    0K    0K    0K
    id lnode   nproc    vm   rss   cap    at avgat    pg avgpg
112270 user1      24  123M   35M   50M    0K    0K    0K    0K
 78194 user2       1 2368K 1928K   10M    0K    0K    0K    0K
    id lnode   nproc    vm   rss   cap    at avgat    pg avgpg
112270 user1      24  123M   35M   50M    0K    0K    0K    0K
 78194 user2       1 2368K 1928K   10M    0K    0K    0K    0K
    id lnode   nproc    vm   rss   cap    at avgat    pg avgpg
112270 user1      24  123M   35M   50M    0K    0K    0K    0K
 78194 user2       1 2368K 1928K   10M    0K    0K    0K    0K

输出的前三行构成第一个报告,它包含两个 lnode 的上限和 lnode 信息,以及自 rcapd 启动以来的换页统计数据。atpg 列分别是大于零的数字(对于 user1)和零(对于 user2),这表示在守护程序的历史记录中的部分时间里, user1 超过其上限,但 user2 没有超过其上限。

后续报告包含自前一间隔以来的换页统计数据,但显示的活动都不重要。

降低 Lnode 的上限

limadm(1MSRM) 命令可用于降低 lnode 的内存上限,这使得上限的限制性更强。在下一个配置间隔之后,rcapd 将执行新的上限(请参阅 rcapadm(1MSRM))。也可以发送信号,使 rcapd 立即执行新的上限。


admin# limadm set rss.limit=30M user1
admin# pkill -HUP rcapd

以下命令以 5 秒的取样间隔产生报告。将产生五次报告,在每个样本后产生一次。


admin# rcapstat 5 5
    id lnode   nproc    vm   rss   cap    at avgat    pg avgpg
112270 user1      24  123M   35M   30M   50M    0K 3312K    0K
 78194 user2       1 2368K 1856K   10M    0K    0K    0K    0K
    id lnode   nproc    vm   rss   cap    at avgat    pg avgpg
112270 user1      24  123M   36M   30M   52M   52M  632K  632K
 78194 user2       1 2368K 2096K   10M    0K    0K    0K    0K
    id lnode   nproc    vm   rss   cap    at avgat    pg avgpg
112270 user1      24  123M   33M   30M   57M   52M  816K  632K
 78194 user2       1 2368K 1968K   10M    0K    0K    0K    0K
    id lnode   nproc    vm   rss   cap    at avgat    pg avgpg
112270 user1      24  123M   27M   30M 4792K 4792K   40K   40K
 78194 user2       1 2368K 1144K   10M    0K    0K    0K    0K
    id lnode   nproc    vm   rss   cap    at avgat    pg avgpg
112270 user1      24  123M   27M   30M    0K    0K    0K    0K
 78194 user2       1 2368K 1144K   10M    0K    0K    0K    0K

当上限从 50 兆字节降低到 30 兆字节时,rcapd 通过试图换出 6 兆字节的超过上限值的驻留内存量来作出响应。目标达到了;但有少量超过。

使用 rcapstat 监视项目的 RSS

以下命令以 5 秒的取样间隔产生报告。将产生五次报告,在每个样本后产生一次。


user1machine% rcapstat 5 5

id     project   nproc    vm   rss   cap    at avgat    pg avgpg
376565 user1        57  209M   46M   10M  440M  220M 5528K 2764K
376565 user1        57  209M   44M   10M  394M  131M 4912K 1637K
376565 user1        56  207M   43M   10M  440M  147M 6048K 2016K
376565 user1        56  207M   42M   10M  522M  174M 4368K 1456K
376565 user1        56  207M   44M   10M  482M  161M 3376K 1125K

在此示例中,项目 user1 拥有超过其物理内存上限的 RSS。pg 列中的非零值表示 rcapd 因其试图通过降低项目进程的物理内存使用量来符合上限的要求而不断地换出内存。然而, rcapd 未成功,这可以从不断变化且未显示相应减少的 rss 值中看出。这意味着应用程序的驻留内存正被积极使用,迫使 rcapd 影响工作集。在此情况下,系统将继续保持高的页面故障率及关联的 I/O,直到工作集大小减少,上限上升,或应用程序更改其内存访问模式。

确定项目的工作集大小

以下示例是上一个示例的延续,并且使用相同的项目。


example% rcapstat 5 5
    id project    nproc    vm   rss   cap    at avgat    pg avgpg
376565 user1         56  207M   44M   10M  381M  191M   15M 7924K
376565 user1         56  207M   46M   10M  479M  160M 2696K  898K
376565 user1         56  207M   46M   10M  424M  141M 7280K 2426K
376565 user1         56  207M   43M   10M  401M  201M 4808K 2404K
376565 user1         56  207M   43M   10M  456M  152M 4800K 1600K
376565 user1         56  207M   44M   10M  486M  162M 4064K 1354K
376565 user1         56  207M   52M  100M  191M   95M 1944K  972K
376565 user1         56  207M   55M  100M    0K    0K    0K    0K
376565 user1         56  207M   56M  100M    0K    0K    0K    0K
376565 user1         56  207M   56M  100M    0K    0K    0K    0K
376565 user1         56  207M   56M  100M    0K    0K    0K    0K
376565 user1         56  207M   56M  100M    0K    0K    0K    0K

通过禁止上限执行、增加项目上限或更改最小上限执行内存压力值(请参阅 rcapadm(1MSRM)),驻留集可成为工作集。rss 列的值可能稳定不变,以显示项目工作集的大小,如此示例中所示。这是允许项目进程在没有引致永久性的页面故障的情况下运行的最小上限值。