设为首页 收藏本站
查看: 928|回复: 0

[经验分享] Linux进程与性能监控

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-2-17 08:39:24 | 显示全部楼层 |阅读模式
系统性能监控相关命令

1.vmstat命令

Report virtual memory statistics,报告虚拟内存的统计数据。

常用选项:

# #:vmstat后面直接给出数字第一个数字表示每隔#秒刷新一次,
     第二个数字表示一共刷新#次后退出命令

-s:显示内存统计数据;

实例:

[iyunv@young ~]# vmstat 1 3
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 265280 365520 1900176    3    3   354    27   34   24  2  2 96  0  0
0  0      0 269016 365520 1900116    0    0     0     0  293  439  8  6 86  0  0
0  0      0 269016 365520 1900116    0    0     0     0   43   94  0  0 100  0  0

[iyunv@young ~]# vmstat -s
      3098484 K total memory
       563444 K used memory
       774264 K active memory
      1633428 K inactive memory
       269404 K free memory
       365520 K buffer memory
      1900116 K swap cache
      2097148 K total swap
            0 K used swap

说明:

procs:

    r:等待运行的进程的个数;CPU上等待运行的任务的队列长度;

    b:处于不可中断睡眠态的进程个数;(被阻塞的进程队列的长度)

memory:

    swpd: 交换内存使用总量;

    free: 空闲的物理内存总量;

    buffer:用于buffer的内存总量;

    cache: 用于cache的内存总量;

swap:

    si: 数据进入swap中的速率(kb/s)

    so: 数据离开swap中的速率(kb/s)

io:

    bi: 从块设备读入数据到系统的速率(block/s),默认块大小是1024byte

    bo: 保存数据至块设备的速率(block/s),默认块大小是1024byte

system:

    in: interrupts,中断速率

    cs: context switch, 上下文切换速率

cpu:

    us:Time spent running non-kernel code

    sy: Time spent running kernel code

    id: Time spent idle. Linux 2.5.41前,包括IO-wait time.

    wa: Time spent waiting for IO. 2.5.41前,包括in idle.

    st: Time stolen from a virtual machine. 2.6.11前, unknown.

小贴士:

那buffers和cached都是缓存,两者有什么区别呢?

为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种Cache就是分别缓存逻辑和物理级数据的。

Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache。文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成。当page cache的数据需要刷新时,page cache中的数据交给buffer cache,因为Buffer Cache就是缓存磁盘块的。但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作。

Buffer cache是针对磁盘块的缓存,也就是在没有文件系统的情况下,直接对磁盘进行操作的数据会缓存到buffer cache中,例如,文件系统的元数据都会缓存到buffer cache中。

简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。

2.pmap命令

查看指定进程内存映射关系

命令格式:

pmap [OPTIONS] PID

常用选项:

-x:显示扩展信息
-d   device         Show the device format.   显示设备格式
-q   quiet          Do not display some header/footer lines. 不显示头尾行

实例:

[iyunv@young ~]# pmap 1 -x|head -5
1:   /usr/lib/systemd/systemd --switched-root --system --deserialize 21
Address           Kbytes     RSS   Dirty Mode  Mapping
00007f5154000000     164      12      12 rw---   [ anon ]
00007f5154029000   65372       0       0 -----   [ anon ]
00007f515b443000       4       0       0 -----   [ anon ]

[iyunv@young ~]# pmap -d 1 |head -5
1:   /usr/lib/systemd/systemd --switched-root --system --deserialize 21
Address           Kbytes Mode  Offset           Device    Mapping
00007f5154000000     164 rw--- 0000000000000000 000:00000   [ anon ]
00007f5154029000   65372 ----- 0000000000000000 000:00000   [ anon ]
00007f515b443000       4 ----- 0000000000000000 000:00000   [ anon ]

说明:

扩展格式和设备格式域:

Address:  start address of map  映像起始地址
Kbytes:  size of map in kilobytes  映像大小
RSS:  resident set size in kilobytes  驻留集大小
Dirty:  dirty pages (both shared and private) in kilobytes  脏页大小
Mode:  permissions on map 映像权限: r=read, w=write, x=execute, s=shared, p=private (copy on write)
Mapping:  file backing the map , or '[ anon ]' for allocated memory, or '[ stack ]' for the program stack.映像支持文件,[anon]为已分配内存[stack]为程序堆栈

Offset:  offset into the file  文件偏移
Device:  device name (major:minor)  设备名

[iyunv@young ~]# pmap -d 1|tail -3
00007fff69d59000       8 r-x-- 0000000000000000 000:00000   [ anon ]
ffffffffff600000       4 r-x-- 0000000000000000 000:00000   [ anon ]
mapped: 129164K    writeable/private: 23876K    shared: 0K

说明:

    mapped 表示该进程映射的虚拟地址空间大小,也就是该进程预先分配的虚拟内存大小,即ps出的vsz

    writeable/private 表示进程所占用的私有地址空间大小,也就是该进程实际使用的内存大小

    shared 表示进程和其他进程共享的内存大小

每隔2秒显示一下最后一行信息:

[iyunv@young ~]# while true; do pmap -d  1 | tail -1; sleep 2; done
mapped: 129164K    writeable/private: 23876K    shared: 0K
mapped: 129164K    writeable/private: 23876K    shared: 0K
mapped: 129164K    writeable/private: 23876K    shared: 0K
mapped: 129164K    writeable/private: 23876K    shared: 0K
mapped: 129164K    writeable/private: 23876K    shared: 0K

3.glances命令

A cross-platform curses-based monitoringtool,跨平台的监控工具,可远程监控。

常用选项:

-b: 以Byte为单位显示网卡数据速率;
-d: 关闭磁盘I/O模块
-f /path/to/somewhere: 设置输出文件的位置及其格式;
-o {HTML|CSV}
-m: 禁用mount模块
-n: 禁用网络模块
-t #: 指定刷新时间间隔
-1:每个CPU的数据单独显示

交互式命令:有许多交互式命令来定义glances的显示信息,以及排序方式等;

a Sort processes automatically  l Show/hide logs
c Sort processes by CPU%        b Bytes or bits for network I/O
m Sort processes by MEM%        w Delete warning logs
p Sort processes by name        x Delete warning and critical logs
i Sort processes by I/O rate    1 Global CPU or per-CPU stats
d Show/hide disk I/O stats      h Show/hide this help screen
f Show/hide file system stats   t View network I/O as combination
n Show/hide network stats       u View cumulative network I/O
s Show/hide sensors stats       q Quit (Esc and Ctrl-C also work)
y Show/hide hddtemp stats       z  Show/hide processes list
h: 显示帮助

C/S模式下运行glances命令:

服务模式:

glances -s -B IPADDR

IPADDR:自己监听的本机地址

[iyunv@young ~]# glances -s -B 192.168.1.6
Glances server is running on 192.168.1.6:61209

客户端模式:

glances -c IPADDR

IPADDR: 远程服务器监听的地址

[iyunv@CentOS ~]# glances -c 192.168.1.6
        young (CentOS Linux 7.2.1511 64bit / Linux 3.10.0-327.el7.x86_64)

CPU      10.0%   Load   1-core   Mem    26.8%  active:    769M   Swap    0.0%
user:     5.3%   1 min:   0.12   total: 2.95G  inactive: 1.55G   total: 2.00G
system:   4.7%   5 min:   0.18   used:   812M  buffers:   346M   used:      0
idle:    90.0%   15 min:  0.12   free:  2.16G  cached:   1.58G   free:  2.00G
...

4.dstat命令

versatile tool for generating systemresource statistics;生成系统资源使用统计数据命令,安装包在epel源中。

命令格式:

dstat [-afv] [options..] [delay [count]]

常用选项:

-c:显示cpu相关信息               
-C #,#,...,total:显示第几颗CPU,total总共的
-d: 显示disk相关信息
    -D total,sda,sdb,...
-g, --page 显示page相关统计数据
-i:显示中断状态
-l:显示cpu 1min,5min,15min的平均负载
-m :显示memory相关统计数据
-p :显示process相关统计数据
-r, --io 显示io请求相关的统计数据
-s, --swap 显示swapped相关的统计数据
-t, --time 显示系统运行时间
-y, --sys 显示内核空间中断与上下文切换
--aio: 显示异步io统计数据
--ipc: ipc相关的信息(进程间通信)
--raw: raw socket
--tcp: tcp socket
--udp: udp socket
--socket: raw, tcp, udp
--unix: unix sock
--top-cpu:显示最占用CPU的进程
--top-bio:显示最占用block IO的进程
--top-mem: 显示最耗费内存的进程
--top-io:最占用IO的进程
--top-latency: 显示延迟最大的进程

实例:

1)cpu相关信息统计

[iyunv@CentOS ~]# dstat -c
----total-cpu-usage----
usr sys idl wai hiq siq
  0   0 100   0   0   0
  0   0 100   0   0   0^C
[iyunv@CentOS ~]# dstat -C 1
-------cpu1-usage------ -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  0   0  99   0   0   0|  15k 5586B|   0     0 |   0     0 | 176   120
  0   0 100   0   0   0|   0     0 |  60B  870B|   0     0 |  74    53
[iyunv@CentOS ~]# dstat -C 2
-------cpu2-usage------ -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  0   0 100   0   0   0|  15k 5585B|   0     0 |   0     0 | 176   120
[iyunv@CentOS ~]# dstat -C 1,2
-------cpu1-usage--------------cpu2-usage------ -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq:usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  0   0  99   0   0   0:  0   0 100   0   0   0|  15k 5584B|   0     0 |   0     0 | 176   120
  0   0 100   0   0   0:  0   0 100   0   0   0|   0     0 | 120B 1110B|   0     0 |  75    52
  0   0 100   0   0   0:  0   0 100   0   0   0|   0     0 | 120B  470B|   0     0 |  56    38

2)统计磁盘相关信息

[iyunv@CentOS ~]# dstat -d
-dsk/total-
read  writ
  15k 5565B
   0     0
[iyunv@CentOS ~]# dstat -D /dev/sdb
----total-cpu-usage---- --dsk/sdb-- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  0   0 100   0   0   0|  70B    0 |   0     0 |   0     0 | 175   120
  0   0 100   0   0   0|   0     0 | 180B  854B|   0     0 |  68    44
  0   0 100   0   0   0|   0     0 | 180B  390B|   0     0 |  65    45
[iyunv@CentOS ~]# dstat -D /dev/sda1
----total-cpu-usage---- --dsk/sda1- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  0   0 100   0   0   0| 121B    1B|   0     0 |   0     0 | 175   120
  0   0 100   0   0   0|   0     0 |  60B  870B|   0     0 |  72    47

3)统计中断信息

[iyunv@CentOS ~]# dstat -i
----interrupts---
  17    18    19
   1     0   108

4)统计cpu负载信息

[iyunv@CentOS ~]# dstat -l
---load-avg---
1m   5m  15m
   0 0.01 0.05

5)统计内存page信息

[iyunv@CentOS ~]# dstat -g
---paging--
  in   out
   0     0

6)统计io相关信息

[iyunv@CentOS etc]# dstat -r
--io/total-
read  writ
0.81  0.40

7)统计进程相关

[iyunv@young ~]# dstat -p
---procs---
run blk new
0.0   0 8.7
  0   0 2.0

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-343182-1-1.html 上篇帖子: DNS主从服务搭建 下篇帖子: linux文件系统简析 Linux 监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表