Skip to content

Latest commit

 

History

History
88 lines (79 loc) · 5.64 KB

monitor.md

File metadata and controls

88 lines (79 loc) · 5.64 KB

性能监控

性能监控平台

CPU监控

在进行CPU性能监控时,我们重点关注系统态CPU使用率。系统态CPU高意味着共享资源竞争,或者IO设备之间有大量交互,降低系统态CPU使用率将成为一个重点目标。对于CPU密集型应用,我们还需要监控每时钟指令数或每指令时钟周期,因为CPU高速缓存未命中时,CPU仍然被报告为繁忙。此外,我们还关注CPU调度和执行特定任务的CPU指令数,以及CPU调度程序运行队列。一般性的知道原则是:如果很长一段时间内,运行队列的长度超过了虚拟核心数的一倍,那么就需要特别关注了,如果达到3~4倍,则需要立即注意和采取行动。

1)监控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
 2  0      0 195711648 2394568 40864460    0    0     0    10    0    0  1  0 99  0  0
 1  0      0 195711232 2394568 40864460    0    0     0     0 13645 26200  0  0 99  0  0
 2  0      0 195710848 2394568 40864460    0    0     0     0 13998 26376  0  0 99  0  0
 3  0      0 195710960 2394568 40864460    0    0     0     4 13542 26100  0  0 100  0  0
 2  0      0 195710848 2394568 40864460    0    0     0   836 14008 26474  0  0 99  0  0
 1  0      0 195710848 2394568 40864588    0    0     0   111 13762 26304  0  0 99  0  0

``**
vmstat报告总的CPU使用率,us为用户态CPU使用率,sy为系统态CPU使用率,id为CPU空闲率,这三者想加应该为100。vmstat 1表示每隔一秒报告CPU的使用率。此外,报告的第一列为CPU调度程序的运行队列长度,第二列为等待IO的进程数量

**2)监控每个虚拟核心的情况**
```shell
$ mpstat -P ALL 2 5
06:29:20 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
06:29:22 PM  all    0.20    0.00    0.26    0.00    0.00    0.00    0.00    0.00    0.00   99.54
06:29:22 PM    0    0.51    0.00    0.51    0.00    0.00    0.00    0.00    0.00    0.00   98.99
06:29:22 PM    1    0.00    0.00    0.51    0.00    0.00    0.00    0.00    0.00    0.00   99.49
06:29:22 PM    2    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50
06:29:22 PM    3    0.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.50
06:29:22 PM    4    0.50    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   98.99
06:29:22 PM    5    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
06:29:22 PM    6    0.00    0.00    0.51    0.00    0.00    0.00    0.00    0.00    0.00   99.49
06:29:22 PM    7    0.50    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   98.49
06:29:22 PM    8    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50
06:29:22 PM    9    0.51    0.00    0.51    0.00    0.00    0.00    0.00    0.00    0.00   98.99
06:29:22 PM   10    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

统计所有虚拟内核的CPU利用率,用来发现CPU热点。

  • %user: 用户态CPU利用率百分比
  • %nice:用户态高优先级进程的CPU利用率百分比
  • %sys:系统态CPU利用率百分比
  • %iowait: 系统具有未完成磁盘I/O请求的CPU时间百分比
  • %irq: CPU服务硬件中断的CPU时间百分比
  • %soft: CPU服务软件中断的CPU时间百分比
  • %steal: 显示在虚拟机管理程序服务另一个虚拟处理器时虚拟CPU或CPU无意中等待的时间百分比。
  • %guest:
  • %gnice:
  • %idle: CPU空闲时间百分比

3)使用top监控CPU利用率高的进程

$ top
top - 18:43:39 up 34 days,  3:30,  1 user,  load average: 0.87, 0.65, 0.59
Tasks: 455 total,   2 running, 453 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.5 us,  0.4 sy,  0.0 ni, 99.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 26354177+total, 19568412+free, 24574332 used, 43283324 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used. 23745212+avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
106669 root      20   0   24.2g   3.1g  27712 S  11.2  1.2   4444:21 java
206034 clouder+  20   0   19.3g   2.4g 199388 S   5.6  1.0   6475:30 java
115048 root      20   0 3037796  72576   3208 S   5.3  0.0 298:28.20 cmf-agent
206051 clouder+  20   0 9615888 811164  24988 S   3.6  0.3   1525:04 java
183498 yarn      20   0 3199020 651248  24944 S   1.7  0.2 118:57.18 java  
189769 hbase     20   0 8116260   5.5g  43200 S   1.3  2.2  69:31.43 java 

top的上半部分是系统的统计信息,下半部分报告每个进程的CPU利用率,此外好包括内存,虚拟内存等。

4)查看某个进程中所有线程的CPU使用率

$ top -Hp 106669
Threads: 371 total,   0 running, 371 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.5 us,  0.5 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 26354177+total, 19571475+free, 24571136 used, 43255884 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used. 23745537+avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
106895 root      20   0   24.2g   3.1g  27712 S  1.3  1.2  34:46.73 java
107328 root      20   0   24.2g   3.1g  27712 S  0.7  1.2  17:38.27 java
 12821 root      20   0   24.2g   3.1g  27712 S  0.7  1.2  55:38.78 java
 64508 root      20   0   24.2g   3.1g  27712 S  0.7  1.2  55:17.86 java
  2096 root      20   0   24.2g   3.1g  27712 S  0.7  1.2  51:48.64 java
114107 root      20   0   24.2g   3.1g  27712 S  0.7  1.2  49:50.53 java     

内存监控