免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3644 | 回复: 0
打印 上一主题 下一主题

Solaris 性能入门 使用 prstat 进行进程监控 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-07 16:43 |只看该作者 |倒序浏览
prstat:系统进程监控
下面将深入探讨 Solaris 工具 prstat(1),帮助了解系统效用的全面实用工具。
prstat – 全面的实用工具
Solaris 中最重要、使用最广的实用工具是 prstat(参见 prstat(1))。prstat 可以快速回答以下问题:
    *系统占用了多少 CPU 和内存?
    *系统效用了哪些进程(或用户、 zone 、项目、任务)?
    *系统怎样使用进程/线程(用户绑定,I/O 绑定)?
在最简单的形式中,prstat (即 prstat 2)将检测所有进程并根据 CPU 使用率报告数据。
进程的顺序根据当前的 CPU 使用率从高(最多)到低(最少)排列(% - 100% 表示所有系统 CPU 都完全利用)。对于列表中的每个进程,将打印以下信息:
    * PID:进程的进程 ID。
    *USERNAME:真实用户(登录)名称或真实用户 ID。
    *SIZE:进程的总虚拟内存大小,以 K、M 或 G 为单位。
    *RSS:进程的驻留集大小 (RSS),以 K、M 或 G 为单位。
    *STATE:进程的状态 (cpuN/sleep/wait/run/zombie/stop)。
    *PRI:进程的优先级。数字更大表示优先级更高。
    *NICE:优先级计算中使用的 nice 值。只有特定调度类中的进程才有 nice 值。
    *TIME:进程的累计执行时间。
    *CPU:进程使用的当前 CPU 时间的百分比。如果在非全局域中执行并且池设备是活动的,百分比将是 zone 绑定的池所使用的处理器集合中处理器的百分比。
    *PROCESS:进程的名称(执行文件的名称)。
    *NLWP:进程中 lwps 的数量。
prstat 的  参数是采样/刷新的时间间隔(以秒为单位)。

专题报告
专题报告 – 排序
除了 CPU 使用率之外,prstat 输出还可以按照其他指标排序。可以将 -s(降序)或 -S(升序)与指标选项一起使用(即 prstat -s time 2):
标准     注释
cpu      按照 CPU 使用率排序。这是默认设置。
pri        按照进程优先级排序。
rss       按照驻留集大小排序。
size      按照进程图像排序。
time      按照进程执行时间排序。
专题报告 – 连续模式
对 prstat 使用选项 -c,新的报告将打印在上一个报告的下方,而不是覆盖它。这在收集文件信息时非常有用(即 prstat -c 2 > prstat.txt)。选项 -n  可以用来设置报告的最大长度。
专题报告 – 用户
对 prstat 使用 -a 或 -t 选项,将额外打印有关用户的报告。
专题报告 – zone
对 prstat 使用 -Z 选项,将额外打印有关 zone 的报告。
专题报告 – 项目(参见 projects(1))
对 prstat 使用 -J 选项,将额外打印有关项目的报告。
专题报告 – 任务(参见 newtask(1))
对 prstat 使用 -T 选项,将额外打印有关任务的报告。
专题报告 – Microstate Accounting
与其他每个时间周期或每个固定时间间隔(通常为百分之几秒)收集 CPU 数据的操作系统不同,Solaris 10 合并了一种名为 Microstate Accounting 的技术,可以使用高分辨率时间戳测量每个时间的 CPU 数据,从而生成更为准确的数据统计。
Microstate Accounting 系统为线程和 CPU 维护准确的时间计数器。基于线程的 Microstate Accounting 跟踪每个线程中几个有意义的状态,以及用户和系统时间,包括陷阱时间、锁定时间、睡眠时间和等待时间。prstat 按进程(选项 -m)或线程(选项 -mL)报告微观状态。



prstat 使用场景
prstat 使用场景 – cpu 时延问题
测量 CPU 饱和度的一个重要方法是 prstat 的时延问题(LAT 列)输出。我们使用两个 CPU 密集型应用程序副本(cc_usr)






sbres_1A.png
(7.19 KB)
2008-6-11 03:50
prstat – 使用 CPU 密集型应用程序观察时延问题
现在运行 prstat Microstate Accounting 报告,即 prstat -m 2 并记录输出:





sbres_1B.png
(64.03 KB)
2008-6-11 03:48
prstat – prstat -m 2 输出
请观察最上面两行输出 PID 2223 和 PID 2224。可以清楚地看到两个流程的 LAT 微观状态(CPU 时延问题)都有较高的时间百分比(分别是 50% 和 52%)。其余时间如期花费在消耗方面(USR 微观状态)。此例清楚的表明,CPU 绑定应用程序争夺测试系统中惟一的一个 CPU,导致为访问 CPU 需要很长的等待时间(时延问题)。
prstat 使用场景 – 高系统时间
现在运行系统调用集中型应用程序(cc_sys)并观察 prstat 的输出。首先,启动一个 cc_sys 实例:
# cc_sys &
[1] 2310
#
prstat – 系统调用集中型应用程序
然后观察 prstat -m 2 输出:




prstat – prstat -m 2,系统调用集中型应用程序的输出
注意最上方 PID 2310 那一行。清楚地发现流程 cc_sys 占用了高系统时间使用率 (61%)。还可以发现 ICX/VCX (277/22) 的比率很高,这说明该进程经常无意识关闭 CPU。

prstat 使用常见
prstat 使用常见 – 过度锁定
经常可以看到,多处理器系统上应用程序的扩展性很差。根本原因之一可能在于,应用程序中的锁定设计很差,导致在同步时的等待时间过长。prstat 列 LCK 报告等待用户锁定花费的时间。
我们看一个示例,一个示例程序实现了关键段的锁定机制,使用的是读/写锁定。该程序有 4 个线程需要访问共享的关键 zone 以进行读取,还有一个线程以写模式访问关键段。为了说明问题所在,有意减慢了写入器的速度,以便它会占用关键段一段时间(对于读取器这是有效的障碍)。
首先启动程序,比如写入器在关键段中花费了 0 毫秒(理想情况)。
# cc_lck 0 &
writer will sleep 0 useces
[1] 2626
#
cc_lck 0 – 在理想情况下运行
现在观察每个线程的微观状态。使用 prstat -mL -p 2626 2。






sbres_1F.png
(23.7 KB)
2008-6-11 04:04
cc_lck 0 – prstat 输出
可以看到,所有 5 个线程几乎争夺到了相等的计算机资源。因为不管是读取器还是写入器都没有占用关键段很长的时间,没有记录等待时间。
现在重新执行整个测试,写入器将等待 10 毫秒。
# cc_lck 10 &
writer will sleep 10 useces
[1] 2656
#
现在再次观察微观状态。使用 prstat -mL -p 2656 2。




cc_lck 10 – prstat 输出
这次情况似乎不太一样了。有 4 个线程在等待关键段的锁定期间花费的时间占总时间的 84%。另一方面,写入器 (LWP #1) 有 (82%) 的时间在休眠。
在本例的应用程序中,如果查看源代码会发现存在明显的锁定问题,prstat Microstate Accounting 功能将帮助找出较大程序的锁定弱点.










本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/60332/showart_1274828.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP