189 8069 5689

Linux性能分析topiostatvmstatfree-创新互联

最近看到一大牛的分析报告,才知道笔者以前认识这4个命令是多么肤浅,其实要读懂内存的信息,是要一些功力的。

创新互联是一家专业提供四平企业网站建设,专注与网站建设、成都网站设计H5场景定制、小程序制作等业务。10年已为四平众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

1、top

Linux 性能分析  top iostat vmstat free

VIRT 虚拟内存总量,VIRT=SWAP+RES

SWAP 使用的虚拟内存中被换出的大小

RES 进程使用的、未被换出的物理内存大小

SHR 共享内存大小,单位kb

S 进程状态

%MEM 进程使用的物理内存百分比

%CPU CPU时间占用百分比

Mem: 191272k total 物理内存总量

173656k used 使用的物理内存总量

17616k free 空闲内存总量

22052k buffers 用作内核缓存的内存量

Swap: 192772k total 交换区总量

0k used 使用的交换区总量

192772k free 空闲交换区总量

123988k cached缓冲的交换区总量。内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。

2、free

Linux 性能分析  top iostat vmstat free主要关注值

Mem 物理内存统计

total 物理内存总量。

used 总计分配给缓存(包含buffers 与cache )使用的数量

free 未被分配的内存
shared 共享内存
buffers 系统分配但未被使用的buffers 数量,两种主要Cache方式之一,针对磁盘块的读写(块设备缓存)
cached 系统分配但未被使用的cache 数量,两种主要Cache方式之一,针对文件inode的读写(文件系统缓存)

-/+buffers/cached 物理内存的缓存统计

used (第一行Mem值)used - buffers -cached ,系统实际使用的内存总量

free (第一行Mem值)buffers + cached ,系统当前实际可用内存

Mem 从操作系统层面分析,buffers cached是已分配的(已使用)内存

-/+ buffers/cached 从应用程序层面分析,buffers cached是随时都可以拿来用的,而且是优先使用的

Swap交换分区的使用情况

3、vmstat

Linux 性能分析  top iostat vmstat free

r表示运行队列, 值超过了CPU数目,就会出现CPU瓶颈

b表示阻塞的进程,观察iowait值,通常是由于IO等待引起

swpd虚拟内存已使用的大小,如果大于0,表示物理内存不足,注意程序内存泄露

free空闲的物理内存的大小

buff

cache直接记忆打开的文件,给文件做缓冲,Linux/Unix把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用

如果cache值较大,相应的bi会减少

si每秒从磁盘读入虚拟内存的大小(俗称换进),值大于0,表示物理内存不够或者内存泄露

so每秒虚拟内存写入磁盘的大小(俗出换出),值大于0,表示物理内存不够或者内存泄露

如果swpd值不为0,但si so值长期为0,这种情况不会影响系统性能,但如果值长期大于0,CPU资源和IO资源都会受影响,系统性能下降

bi 从块设备读入的数据总量(读磁盘)(KB/s)

bo 写入到块设备的数据总理(写磁盘)(KB/s)

in每秒CPU的中断次数,包括时间中断

cs每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的

us用户CPU时间

sy系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁

id空闲 CPU时间

wt等待IOCPU时间

4、iostat

iostat option

-c 显示CPU

-d 显示Device,通常指磁盘

-p 显示磁盘分区信息,不能与-x同时使用

-k 单位为KB

-m 单位为MB

-n 显示NFS信息

-t 显示时间,与AIX的时间显示有差别

-x 显示更详细信息

常用命令1:iostat

Linux 性能分析  top iostat vmstat free

常用命令2:iostat -x

Linux 性能分析  top iostat vmstat free

rrqm/s每秒进行 merge 的读操作数目,即 delta(rmerge)/s
wrqm/s每秒进行 merge 的写操作数目,即 delta(wmerge)/s
r/s每秒完成的读 I/O 设备次数,即 delta(rio)/s
w/s每秒完成的写 I/O 设备次数。即delta(wio)/s

两值相加=iops,磁盘性能三大分析因素之一,尤其是小文件的系统
rsec/s每秒读扇区数,即delta(rsect)/s
wsec/s:每秒写扇区数,即delta(wsect)/s
rkB/s每秒读K字节数,是 rsect/s 的一半,因为每扇区大小为512字节
wkB/s每秒写K字节数,是 wsect/s 的一半
avgrq-sz平均每次设备I/O操作的数据大小(扇区),delta(rsect+wsect)/delta(rio+wio)
avgqu-sz平均I/O队列长度,即delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await平均每次设备I/O操作的等待时间 (毫秒),即 delta(ruse+wuse)/delta(rio+wio)
svctm平均每次设备I/O操作的服务时间 (毫秒),即 delta(use)/delta(rio+wio)

服务时间,俗称响应时间,数据库尤其注得此值

%util:一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的

仅读懂上述每个参数的意义是不够的,我们应该分析参数之间的关联关系,即一个参数的变化会引起另一个参数的上下波动

从而找出系统真正的瓶劲,好对症下药。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:Linux性能分析topiostatvmstatfree-创新互联
本文来源:http://cdxtjz.cn/article/dojcjc.html

其他资讯