1.性能分析两种方法:
(1).自顶向下:
应用开发人员通过着眼于软件栈顶层的应用,从上往下寻找性能优化的机会。
(2).自底向上:
性能专家从软件栈底层的CPU统计数据(例如CPU高速缓存未命中率、CPU指令效率)开始,逐渐上升到应用自身的结构或应用常见的使用方式。
2.CPU使用率:
大多数操作系统的CPU使用率分为用户态CPU使用率和系统态CPU使用率。
用户态CPU使用率:执行应用程序代码的时间占总CPU时间的百分比。
系统态CPU使用率:应用执行操作系统调用的时间占总CPU时间的百分比。
系统态CPU使用率高意味着共享资源有竞争或者I/O设备之间有大量交互。既然原本用于执行操作系统调用的CPU周期也可以用来执行应用程序代码,所以理想情况下,应用达到最高性能和扩展性时,它的系统态CPU使用率为0%,所以提供应用性能的和扩展性的一个目标是尽可能降低系统态CPU使用率。
对于计算密集型应用来说,不仅要监控用户态和系统态CPU使用率,还要进一步监控每时钟指令数(Instructions Per Clock, IPC)或每指令时钟周期(Cycles Per Instruction, CPI)等指标,提高计算密集型应用的常用策略是减少停滞(现代操作系统自带的CPU使用率监控工具只能报告CPU使用率,不能报告CPU执行指令占用CPU时钟周期的百分比,因此即便CPU在等待内存中的数据,操作系统工具仍然会报告CPU繁忙,这种情况通常被称为停滞)或者改善CPU高速缓存使用率,从而减少CPU在等待内存数据时浪费的时钟周期。
(1).Windows CPU使用率监控:
Windows最常用的CPU使用率监控工具是任务管理器和性能监视器,这两个图形化工具不做介绍,重点介绍一下命令行工具typeperf.
在命令行中监控系统态和用户态CPU使用率的命令行如下:
typeperf “\Process