Linux 性能监控 : CPU 、Memory 、 IO 、Network
2021-06-06 22:04
标签:gre 时间 文件 for user tom 应该 ace error 1.良好状态指标 CPU利用率:User Time
上下文切换:与CPU利用率相关联,如果CPU利用率状态良好,大量的上下文切换也是可以接受的 可运行队列:每个处理器的可运行队列 2.监控工具 重要参数: r,run queue,可运行队列的线程数,这些线程都是可运行状态,只不过CPU暂时不可用 b,被blocked的进程数,正在等待IO请求 in,interrupts,被处理过的中断数 cs,context switch,系统上正在做上下文切换的数目 us,用户占用CPU的百分比 sys,内核和中断占用CPU的百分比 id,CPU完全空闲的百分比 上例可得: sy高us低,以及高频度的上下文切换(cs),说明应用程序进行了大量的系统调用; 这台4核机器的r应该在12个以内,现在r在14个线程以上,此时CPU负荷很重。 1.良好状态指标 2.监控工具 重要参数: swpd,已使用的 SWAP 空间大小,KB 为单位 free,可用的物理内存大小,KB 为单位 buff,物理内存用来缓存读写操作的buffer大小,KB 为单位 cache,物理内存用来缓存进程地址空间的 cache 大小,KB 为单位 si,数据从 SWAP 读取到 RAM(swap in)的大小,KB 为单位 so,数据从 RAM 写到 SWAP(swap out)的大小,KB 为单位 上例可得: 物理可用内存 free 基本没什么显著变化,swapd逐步增加,说明最小可用的内存始终保持在 256MB(物理内存大小) * 10% = 2.56MB 左右,当脏页达到10%的时候就开始大量使用swap。 1.良好状态指标 2.监控工具 这台服务器总共有 8GB 物理内存(MemTotal),3GB 左右可用内存(MemFree),343MB左右用来做磁盘缓存(Buffers),4GB左右用来做文件缓存区(Cached)。 重要参数: await表示平均每次设备I/O操作的等待时间(以毫秒为单位) svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位) %util表示一秒中有百分之几的时间用于I/O操作 如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。 如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。 对于UDP 1.良好状态指标 接收、发送缓冲区不长时间有等待处理的网络包 2.监控工具 对于UDP服务,查看所有监听的UDP端口的网络情况 RecvQ、SendQ为0,或者不长时间有数值是比较正常的。 对于UDP服务,查看丢包情况(网卡收到了,但是应用层没有处理过来造成的丢包) packet receive errors 这一项数值增长了,则表明在丢包。 这里有对 对于TCP(来自davidshan单卫的经验,thx~) 1.良好状态指标 对于TCP而言,不会出现因为缓存不足而存在丢包的事,因为网络等其他原因,导致丢了包,协议层也会通过重传机制来保证丢的包到达对方。 所以,tcp而言更多的专注重传率。 2、监控工具 重传率 = RetransSegs / OutSegs 至于这个值在多少范围内,算ok的,得看具体的业务了。 业务侧更关注的是响应时间。 Linux 性能监控 : CPU 、Memory 、 IO 、Network 标签:gre 时间 文件 for user tom 应该 ace error 原文地址:http://www.cnblogs.com/moonandstar08/p/7328010.html一、CPU
$ 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
14 0 140 2904316 341912 3952308 0 0 0 460 1106 9593 36 64 1 0 0
17 0 140 2903492 341912 3951780 0 0 0 0 1037 9614 35 65 1 0 0
20 0 140 2902016 341912 3952000 0 0 0 0 1046 9739 35 64 1 0 0
17 0 140 2903904 341912 3951888 0 0 0 76 1044 9879 37 63 0 0 0
16 0 140 2904580 341912 3952108 0 0 0 0 1055 9808 34 65 1 0 0
$ while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep ‘db_server_login‘; sleep 1; done
PID NI PRI %CPU PSR COMMAND
28577 0 23 0.0 0 db_server_login
28578 0 23 0.0 3 db_server_login
28579 0 23 0.0 2 db_server_login
28581 0 23 0.0 2 db_server_login
28582 0 23 0.0 3 db_server_login
28659 0 23 0.0 0 db_server_login
……
二、Memory
$ 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 3 252696 2432 268 7148 3604 2368 3608 2372 288 288 0 0 21 78 1
0 2 253484 2216 228 7104 5368 2976 5372 3036 930 519 0 0 0 100 0
0 1 259252 2616 128 6148 19784 18712 19784 18712 3821 1853 0 1 3 95 1
1 2 260008 2188 144 6824 11824 2584 12664 2584 1347 1174 14 0 0 86 0
2 1 262140 2964 128 5852 24912 17304 24952 17304 4737 2341 86 10 0 0 4
$ free -m
total used free shared buffers cached
Mem: 8111 7185 926 0 243 6299
-/+ buffers/cache: 643 7468
Swap: 8189 0 8189
三、磁盘IO
$ cat /proc/meminfo
MemTotal: 8182776 kB
MemFree: 3053808 kB
Buffers: 342704 kB
Cached: 3972748 kB
$ sar -d 2 3
Linux 2.6.9-42.ELsmp (webserver) 11/30/2008 _i686_ (8 CPU)
11:09:33 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:09:35 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
11:09:35 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:09:37 PM dev8-0 1.00 0.00 12.00 12.00 0.00 0.00 0.00 0.00
11:09:37 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:09:39 PM dev8-0 1.99 0.00 47.76 24.00 0.00 0.50 0.25 0.05
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: dev8-0 1.00 0.00 19.97 20.00 0.00 0.33 0.17 0.02
四、Network IO
$ watch netstat -lunp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:64000 0.0.0.0:* -
udp 0 0 0.0.0.0:38400 0.0.0.0:* -
udp 0 0 0.0.0.0:38272 0.0.0.0:* -
udp 0 0 0.0.0.0:36992 0.0.0.0:* -
udp 0 0 0.0.0.0:17921 0.0.0.0:* -
udp 0 0 0.0.0.0:11777 0.0.0.0:* -
udp 0 0 0.0.0.0:14721 0.0.0.0:* -
udp 0 0 0.0.0.0:36225 0.0.0.0:* -
$ watch netstat -su
Udp:
278073881 packets received
4083356897 packets to unknown port received.
2474435364 packet receive errors
1079038030 packets sent
packet receive errors
的稍微详细些的解释,它包含了7种错误,and通常表明是checksum错误。不过我们通常通过这个数值的变化来判断UDP服务是否丢包(第2项错误),不知道是否有其他什么方法来判断UDP的丢包?:"packet receive errors" usually means:
1) data is truncated, error in checksum while copying
2) udp queue is full, so it needs to be dropped
3) unable to receive udp package from encapsulated socket
4) sock_queue_rcv_skb() failed with -ENOMEM
5) it is a short packet
6) no space for header in udp packet when validating packet
7) xfrm6_policy_check() fails
many times it means the checksum is not right.
# cat /proc/net/snmp | grep Tcp:
Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts
Tcp: 1 200 120000 -1 78447 413 50234 221 3 5984652 5653408 156800 0 849
文章标题:Linux 性能监控 : CPU 、Memory 、 IO 、Network
文章链接:http://soscw.com/index.php/essay/91465.html