第1章 策略、方法、方法论
略…
第2章 操作系统性能监控
2.1 定义
性能监控、性能分析及性能调优
- 性能监控,
非侵入方式收集或查看应用程序性能数据的活动。 - 性能分析,以
侵入方式收集运行性能数据的活动。 - 性能调优,一种为改善应用
响应性能或吞吐量而更改参数(Tune-able)、源代码或属性配置的活动。
2.2 CPU使用率
带着下面这个目标/问题去读
如何让多处理器、多核系统上运行的多线程应用
有效地利用CPU周期
发散的联想下:
1)消耗很多的CPU就意味着程序的性能或扩展性提高了?或者达到了最高?
大多数操作系统的CPU使用率分为用户态CPU使用率和系统态CPU使用率,理想情况下,应用达到最高性能和扩展性时,此时系统态CPU使用率应该是0%,所以尽可能降低系统态CPU使用率是提高应用性能的目标之一。
2.2.1 命令行监控CPU使用率


2.3 CPU调度程序运行队列
系统运行队列长度等于虚拟处理器个数时,用户不会明显感觉到性能下降。(此处虚拟处理器的个数指系统硬件线程的个数,也是Java API Runtime.availableProcessors()返回值)
当运行队列长度达到虚拟处理器个数的4倍或更多时,系统的响应应该就非常迟缓了。
一般性指导原则:
如果在很长一段时间里,运行队列的长度达到处理器个数的
3~4倍或更高,则需要立即引起注意或采取行动。
如何采取行动,作者给出了两个方面的思路:
1)增加CPU以分担负载或减少处理器的负载量,这种方式从根本上减少了每个虚拟处理器上的活动线程数,从而减少了运行队列中的轻量级进程数。
2)分析系统中运行的应用,Java程序员可以用更高效的算法和数据结构得到更好的性能。
2.3.1 监控CPU调度程序运行队列:Windows
\System\Processor Queue Length(在Performance Monitor的Add Counters中添加计数器System > Processor Queue Length)监控运行队列长度。
2.3.2 监控CPU调度程序运行队列:Linux

2.4 内存使用率
系统内存相关属性,例如:页调度、页交换、加锁、线程迁移中的让步式和抢占式上下文切换。
PS:以上,作者只是提到了这些名词,看下后续章节有没有展开描述。
系统在进行页交换或使用虚拟内存时,会对应用的响应性和吞吐量造成较大影响。
JVM垃圾收集器在系统进行页交换时的性能也很差,由于要回收不可达对象所占空间,JVM需要访问大量的内存,而如果Java堆的一部分被置换出去,此时就必须先置换进内存以便垃圾收集器扫描存活对象,这会增加GC持续的时间(STW)。
2.4.1 监控内存利用率:Windows


2.4.2 监控内存利用率:Linux

本文深入探讨操作系统性能监控、分析及调优策略,涵盖CPU使用率、调度程序运行队列及内存利用率关键指标,旨在帮助读者理解并提升多线程应用在多核系统上的性能表现。
160

被折叠的 条评论
为什么被折叠?



