博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java性能优化权威指南-读书笔记(一)-操作系统性能监控工具
阅读量:5116 次
发布时间:2019-06-13

本文共 3538 字,大约阅读时间需要 11 分钟。

一:CPU

1. 用户态CPU是指执行应用程序代码的时间占总CPU时间的百分比。

系统态CPU是指应用执行操作系统调用的时间占总CPU时间的百分比。系统态CPU高意味着共享资源有竞争或者I/O设备之间有大量的交互。

提高应用性能和扩展性的一个目标就是尽可能降低系统态CPU使用率。

2. CPU运行队列就是那些已经准备好运行、正等待可用CPU的轻量级进程。

当运行队列长度达到处理器的4倍或者更多时,系统的相应就非常迟缓了。

解决运行队列长有两种办法:

1). 增加CPU以分担负载;

2). 分析系统中运行的应用,改进CPU使用率;

1. vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 2  0      0 104956    868 825812    0    0     1     5   16   25  0  0 100  0  0

r:CPU运行队列长度,值是运行队列中轻量级进程的实际数量

us:用户态CPU使用率

sy:系统态CPU使用率

id:CPU空闲率

2. top

top - 09:42:04 up 3 days, 3 min,  1 user,  load average: 0.00, 0.01, 0.05Tasks: 108 total,   3 running, 105 sleeping,   0 stopped,   0 zombie%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 stKiB Mem :  1015472 total,   104568 free,    84224 used,   826680 buff/cacheKiB Swap:        0 total,        0 free,        0 used.   727760 avail Mem   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                            784 root      20   0  553064  16340   5748 S  0.0  1.6   0:21.48 tuned                                                                                              743 root      20   0  110512  13140    676 S  0.0  1.3   0:00.13 dhclient                                                                                          9678 polkitd   20   0  527456  13128   4680 S  0.0  1.3   0:00.09 polkitd                                                                                              1 root      20   0   43684   6176   3804 S  0.0  0.6   0:05.08 systemd

上半部分是整个系统的统计信息,下半部分是进程的统计信息。

P 按CPU占用率排序

M 按内存占用率排序
T 按CPU占用时间排序
H 查看详细线程信息

二:内存

1. 系统在使用页面交换或虚拟内存时,访问swap中内存以及JVM垃圾回收swap中内存时,都存在内存置换(从swap中置换到内存),性能肯定有问题;

2. 锁竞争,一般来说让步时钟周期占用3%—5%或更多,说明java应用正面临锁竞争;

vmstat

free:可用空闲内存;

si:内存页面换入;

so:内存页面换出;

pidstat

[test ~]$ pidstat -w -I -p 7938 5Linux 3.10.0-229.20.1.el7.x86_64 (test) 	11/13/2016 	_x86_64_	(1 CPU)07:56:42 PM   UID       PID      cswch/s     nvcswch/s  Command07:56:47 PM     0      7938      3500.00     0.00  java07:56:52 PM     0      7938      3500.00     0.00  java07:56:57 PM     0      7938      3500.00     0.00  javaAverage:        0      7938      3500.00     0.00  java

cswch/s:让步式上下文切换;

例如:处理器为3.0GHz双核,每个处理器上下文切换3500/2=1750,耗费的时钟周期1750*80000=140000000,因此上下文切换所占比例为:140000000/3000000000=4.7

三:网络

分布式Java应用的性能和扩展性受限于网络带宽或网络I/O的性能。

nicstat

需要编译安装()

Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat13:25:57     eth0    2.34    1.77    2.84    2.29   842.6   789.6  0.00   0.0013:25:57       lo    0.00    0.00    0.00    0.00   85.49   85.49  0.00   0.00

Int:网络接口设备名

rKb/s:每秒读取的KB数

wKb/s:每秒写入的KB数

%Util:网络使用率

Sat:饱和度

四:磁盘

iostat

[test ~]$ iostat -xmLinux 3.10.0-229.20.1.el7.x86_64 (test) 	11/13/2016 	_x86_64_	(1 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle           0.26    0.00    0.22    0.06    0.24   99.23Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %utilxvda              0.00     0.22    0.11    0.38     0.00     0.00    16.79     0.00    6.15    7.51    5.74   2.05   0.10xvdb              0.00     0.00    0.00    0.00     0.00     0.00    18.07     0.00    7.04   10.93    6.36   2.75   0.00

五:统计

sar

sar 1 3 查看当前CPU数据,每一秒刷新一次,统计三次

sar -q 查看平均负载
sar -r 查看内存使用状况
sar -W 查看页面交换发生状况
sar –b 查看I/O和传送速率的统计信息

转载于:https://www.cnblogs.com/xiongpq/p/6059340.html

你可能感兴趣的文章
IOS第17天(3,Quartz2D画板和画线)
查看>>
pair的例子
查看>>
前端框架性能对比
查看>>
@property中 retain 详解
查看>>
java8 stream初试,map排序,list去重,统计重复元素个数,获取map的key集合和value集合...
查看>>
Python爬虫个人记录(四)利用Python在豆瓣上写一篇日记
查看>>
jdk8 Function
查看>>
uva 387 A Puzzling Problem (回溯)
查看>>
12.2日常
查看>>
12.3日常
查看>>
Delphi 取整函数round、trunc、ceil和floor
查看>>
C/C++二维数组的用法
查看>>
排序 冒泡排序法
查看>>
同步代码时忽略maven项目 target目录
查看>>
MVC.NET:提供对字体文件.woff的访问
查看>>
Informatica_(2)第一个例子
查看>>
string 常用函数
查看>>
RGB色彩的计算机表示
查看>>
iOS地图之MapKit框架
查看>>
2010年过年左右时的艾米果
查看>>