查看linux系统io,内存工具

简介:

一,查看磁盘io

iostat命令

# iostat -d -x -k 1

输出详解

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

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:      每秒io操作占用的cpu使用时间。即一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的,计算方法:(r/s+w/s)*(svctm/1000)

问题判断:

1,如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈.

2,idle小于70%,IO压力就较大了,一般读取速度有较多的wait。这时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)

3,await 的参数也要多和 svctm 来参考.差的过高就一定有 IO 的问题.

4,avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小.如果数据拿的大,才IO 的数据会高.也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s.也就是讲,读定速度是这个来决定的.



二,查看进程io占用

iotop根据Linux内核(需要2.6.20及以上)来监测I/O,并且能显示当前进程/线程的I/O使用率。

# iotop

wKioL1OQPkTxmgrvAAHv9Ms5YKg378.jpg

输出如上截图所示,输出解释:

TID:线程或进程id

PRIO线程io优先级

USER:线程所属用户

DISK READ:线程从磁盘读数据的速度

DISK WRITE:线程写磁盘的速度

SWAPIN:进程使用的数据由swap换入到内存的时间占进程io总时间的百分比

IO:进程等待进行io操作的时间占进程io总时间的百分比



三,查看网络io占用

1,使用nload命令

下载地址:http://sourceforge.net/projects/nload/

# nload eth0

监控eth0网卡的总流量,非常直观的现实

2,使用iptraf命令

下载地址:http://iptraf.seul.org/

# iptraf

会进入一个图形界面,设置要抓取的网卡之后,能够更为详细的现实ip+port之间的数据报通信,根据通信数据报的接受速率和大小,可以判断哪个应用程序占用网卡io较大

3,使用sar命令

查看网卡设备的历史流量数据

# sar -n DEV

查看某天的流量数据

# sar -f /var/log/sa/sa28 -n DEV



四,查看系统内存占用

vmstat命令

# vmstat 1
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0 679740 4136152 217884 2813816    0    0     0    11    0    0  0  0 100  0  0
0  0 679740 4136160 217884 2813816    0    0     0     0   85   72  0  0 100  0  0

输出解释:

r: 表示运行和等待cpu时间片的进程数,如果长期大于CPU的数目,说明cpu不足,需要增加cpu。

b: 表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

swpd: 表示swap内存的使用量,单位是KB

free:表示系统的空闲内存

buff:buff空间的使用大小。buffers是用来缓冲块设备做的,它只记录文件系统的元数据(metadata)以及 tracking in-flight pages等。

cache:cache空间的使用大小。用来给系统或程序打开的文件内容做缓冲。

si:即swap in操作,告诉我们每秒有多大内存被从磁盘swap分区中换入真实内存中。

so:即swap out操作,告诉我们每秒有多大内存被从真实内存换出到磁盘swap分区中。(注:一旦,swap in和swap out比较频繁,就非常影响程序的性能)

bi:每秒从块设备接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte

bo:每秒写入块设备的块数量

in:列显示了系统每秒被中断的数量,包括之间中断。如果中断比较多,可能会导致cpu繁忙。

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

us:cpu在用户态消耗的时间

sy:cpu在内核态消耗的时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id:cpu处于空闲的时间

wa:cpu等待IO操作完成的时间。如果,wait时间较长,有可能是等待cpu处理的io操作较多。

st:Time stolen from a virtual machine.(这个值应该只有在虚拟机里才有意义,表示被物理机给窃取走的时间,不太明白)










本文转自 leejia1989 51CTO博客,原文链接:http://blog.51cto.com/leejia/1422723,如需转载请自行联系原作者
目录
相关文章
|
11天前
|
存储 缓存 Linux
Linux IO的奥秘:深入探索数据流动的魔法
Linux I/O(输入/输出)系统是其核心功能之一,负责处理数据在系统内部及与外界之间的流动。为了优化这一流程,Linux进行了一系列努力和抽象化,以提高效率、灵活性和易用性。🚀
Linux IO的奥秘:深入探索数据流动的魔法
|
23天前
|
存储 算法 Linux
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
【Linux 应用开发 共享内存】深入理解和实践 ftruncate:共享内存的有效管理
54 5
|
9天前
|
Linux
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
Linux操作系统调优相关工具(三)查看IO运行状态相关工具 查看哪个磁盘或分区最繁忙?
20 0
|
11天前
|
Prometheus 监控 Cloud Native
【Linux】查看系统内存命令(详细讲解)
【Linux】查看系统内存命令(详细讲解)
|
11天前
|
存储 缓存 安全
Linux IO:打开数据之窗的魔法
Linux I/O(输入/输出)是操作系统中一个至关重要的组成部分,它涉及到数据在内存🧠、存储设备💾、网络接口🌐等之间的传输过程。在Linux中,I/O操作不仅仅是文件读写那么简单,它包括了一系列复杂的机制和策略,旨在提高数据处理的效率,保证系统的稳定性和性能。📊
Linux IO:打开数据之窗的魔法
|
15天前
|
存储 缓存 监控
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
深入解析linux内存指标:快速定位系统内存问题的有效技巧与实用方法(free、top、ps、vmstat、cachestat、cachetop、sar、swap、动态内存、cgroops、oom)
|
23天前
|
存储 缓存 监控
Linux 系统 内存通用指标以及查询方式
Linux 系统 内存通用指标以及查询方式
18 0
|
23天前
|
存储 Linux 程序员
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
69 0
|
23天前
|
存储 算法 Linux
深入理解Linux内存管理brk 和 sbrk 与以及使用C++ list实现内存分配器
深入理解Linux内存管理brk 和 sbrk 与以及使用C++ list实现内存分配器
32 0
|
25天前
|
算法 大数据 数据处理
【软件设计师备考 专题 】IO控制方式(中断系统、DMA、IO处理机方式)
【软件设计师备考 专题 】IO控制方式(中断系统、DMA、IO处理机方式)
37 1