系统性能优化指标
提高应用性能和扩展性的一个目标是尽可能降低系统态CPU使用率
IPC
:每时钟周期的指令数
CPI
:每指令的时钟周期
CPU停滞
:表示等待数据从内存装入到CPU寄存器
CPU停滞会浪费时钟周期
CPU调度程序运行队列数为CPU核数的4倍时需要注意此时系统响应就非常迟缓
页面交换:内存不足时将整个进程交换到磁盘上 JVM垃圾收集在系统发生页面交换时性能很差,由于一部分被置换出内存的java堆数据需要必须先置换进来以便GC扫描存活对象,这会增加GC时间
可用内存少,也没有页面调度,说明系统没有页面交换,只不过系统大部分的物理RAM都被占用了
如果系统在进行页面调度但内存充足且没有页面交换说明应用在启动
当频繁发生交换和调度会增加I/O负载,这将导致CPU停滞降低CPU利用率
线程的挂起和唤醒会导致操作系统让步式上下文切换,大量的让步式上下文切换会耗费时钟周期,而耗费的时钟周期可以用来执行程序指令
一次上下文切换代价约为8000个时钟周期
num:每秒让步式上下文切换数
times:CPU每秒时钟周期 num*8000/times=3%~5%时表示java应用正面临锁竞争
参考文献《java性能优化权威指南》