热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Solaris性能入门使用prstat进行进程监控z

prstat:系统进程监控下面将深入探讨 Solaris 工具 prstat(1),帮助了解系统效用的全面实用工具。prstat – 全面的实用工具Solaris 中最重


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 功能将帮助找出较大程序的锁定弱点.




推荐阅读
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 本文将详细介绍如何在Mac上安装Jupyter Notebook,并提供一些常见的问题解决方法。通过这些步骤,您将能够顺利地在Mac上运行Jupyter Notebook。 ... [详细]
  • 性能测试中的关键监控指标与深入分析
    在软件性能测试中,关键监控指标的选取至关重要。主要目的包括:1. 评估系统的当前性能,确保其符合预期的性能标准;2. 发现软件性能瓶颈,定位潜在问题;3. 优化系统性能,提高用户体验。通过综合分析这些指标,可以全面了解系统的运行状态,为后续的性能改进提供科学依据。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
author-avatar
井然洞中别样天
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有