美文网首页
性能监控和优化

性能监控和优化

作者: qyfl | 来源:发表于2019-03-16 22:15 被阅读0次

    CPU

    查看 CPU 型号和个数:grep 'model name' /proc/cpuinfo

    uptime

    [biocloo@app2 ~]$ uptime
     11:22:44 up 99 days, 14:53,  2 users,  load average: 2.03, 1.70, 1.61
     
    // 11:22:44 当前时间
    // up 99 days, 14:53 系统运行时间
    // 2 users  正在登陆的用户数
    // load average 后面的三个数字分别是过去 1分钟,5分钟,15分钟的平均负载
    

    top:系统摘要信息以及当前由Linux内核管理的进程或线程列表

    # 第一行的含义与使用 uptime 返回的一样。
    
    # 第二行表示总进程数和线程数,和分类。
    
    # 第三行表示 CPU 状态百分比
    # user(通常缩写为 us),代表用户态 CPU 时间。注意,它不包括下面的 nice 时间,但包括了 guest 时间。
    # system(通常缩写为 sy),代表内核态 CPU 时间。
    # nice(通常缩写为 ni),代表低优先级用户态 CPU 时间,也就是进程的 nice 值被调整为 1-19 之间时的 CPU 时间。这里注意,nice 可取值范围是 -20 到 19,数值越大,优先级反而越低。
    # idle(通常缩写为 id),代表空闲时间。注意,它不包括等待 I/O 的时间(iowait)。
    # iowait(通常缩写为 wa),代表等待 I/O 的 CPU 时间。
    # irq(通常缩写为 hi),代表处理硬中断的 CPU 时间。
    # softirq(通常缩写为 si),代表处理软中断的 CPU 时间。
    # steal(通常缩写为 st),代表当系统运行在虚拟机中的时候,被其他虚拟机占用的 CPU 时间。
    
    # 第四行反应物理内存使用情况,单位为千字节
    
    # 第五行反应虚拟内存。
    
    # 第六行
    # PID 进程ID
    # USER 任务所有者
    # PR 优先级。rt 表示实时。
    # NI 任务的 nice value。负的意味着更高的优先级,而正的意味着更低的优先级。 此字段中的零值仅表示在确定任务的调度能力时不会调整优先级。
    # VIRT 虚拟内存大小。此任务已使用的虚拟内存总量。它包括所有代码,数据和共享库以及已换出的页面和已映射但未使用的页面。
    # RES 驻留内存大小。任务正在使用的非交换物理内存。
    # SHR 共享内存大小。可用于任务的共享内存量,并非所有内容通常都是驻留的。 它只是反映了可能与其他进程共享的内存。
    # S 进程状态。D 不间断睡眠。R 运行。S 睡眠。T 被作业控制信号停止。t 在 debug 被停止。Z 僵尸。
    # %CPU CPU 使用率 
    # %MEM 内存使用率
    # TIME+ 自任务启动使用总 CPU 时间。
    
    [biocloo@app2 ~]$ top
    top - 15:47:57 up 99 days, 19:18,  1 user,  load average: 0.49, 1.15, 1.61
    Tasks:  89 total,   1 running,  88 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  5.3 us,  0.8 sy,  0.0 ni, 93.2 id,  0.1 wa,  0.0 hi,  0.6 si,  0.0 st
    KiB Mem : 16267724 total,   572080 free,  7713840 used,  7981804 buff/cache
    KiB Swap:        0 total,        0 free,        0 used.  8153176 avail Mem 
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                           
    26703 biocloo   20   0 7892880 2.026g   7244 S  20.0 13.1   1727:22 java                                              
    25533 biocloo   20   0 1264128 143588   4200 S   2.7  0.9   3269:04 filebeat                                          
    13217 biocloo   20   0 10.663g 1.859g   8148 S   1.3 12.0 227:15.47 java                                              
     1168 root      20   0 2531604  85292   3016 S   1.0  0.5 616:51.62 java                                              
        9 root      20   0       0      0      0 S   0.3  0.0 157:15.55 rcu_sched                                         
     1091 root      20   0  122040    892    296 S   0.3  0.0  48:07.98 wrapper                                           
     9269 root       0 -20  128384   9228   4652 S   0.3  0.1 194:31.22 AliYunDun                                         
    26855 biocloo   20   0 7895992 2.784g   7216 S   0.3 17.9   1287:51 java                                              
        1 root      20   0   43392   2888   1556 S   0.0  0.0   1:30.58 systemd                                           
        2 root      20   0       0      0      0 S   0.0  0.0   0:00.27 kthreadd                                          
        3 root      20   0       0      0      0 S   0.0  0.0   5:34.81 ksoftirqd/0                                       
        5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                      
        7 root      rt   0       0      0      0 S   0.0  0.0   0:28.66 migration/0                                       
        8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                            
       10 root      rt   0       0      0      0 S   0.0  0.0   0:21.78 watchdog/0                                        
       11 root      rt   0       0      0      0 S   0.0  0.0   0:17.62 watchdog/1                                        
       12 root      rt   0       0      0      0 S   0.0  0.0   0:30.18 migration/1                                       
       13 root      20   0       0      0      0 S   0.0  0.0  16:33.84 ksoftirqd/1                                       
       15 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                      
       16 root      rt   0       0      0      0 S   0.0  0.0   0:18.12 watchdog/2                                        
       17 root      rt   0       0      0      0 S   0.0  0.0   0:27.21 migration/2                                       
       18 root      20   0       0      0      0 S   0.0  0.0   5:39.52 ksoftirqd/2                                       
       20 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:0H                                      
       21 root      rt   0       0      0      0 S   0.0  0.0   0:17.55 watchdog/3                                        
       22 root      rt   0       0      0      0 S   0.0  0.0   0:29.42 migration/3 
    

    mpstat:每个可用CPU的活动,默认是CPU利用率报告。

    // -P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
    [biocloo@app2 ~]$ mpstat -P ALL 5
    Linux 3.10.0-693.2.2.el7.x86_64 (app2)  2019年03月08日     _x86_64_    (4 CPU)
    
    11时26分39秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    11时26分44秒  all    8.42    0.00    1.20    0.10    0.00    0.80    0.00    0.00    0.00   89.48
    11时26分44秒    0    9.05    0.00    1.21    0.00    0.00    0.40    0.00    0.00    0.00   89.34
    11时26分44秒    1    7.26    0.00    1.01    0.00    0.00    0.81    0.00    0.00    0.00   90.93
    11时26分44秒    2    9.60    0.00    1.40    0.20    0.00    0.80    0.00    0.00    0.00   88.00
    11时26分44秒    3    7.78    0.00    1.40    0.00    0.00    1.00    0.00    0.00    0.00   89.82
    
    11时26分44秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    11时26分49秒  all    7.15    0.00    1.11    0.10    0.00    0.81    0.00    0.00    0.00   90.84
    11时26分49秒    0    8.25    0.00    1.21    0.20    0.00    0.80    0.00    0.00    0.00   89.54
    11时26分49秒    1    4.23    0.00    0.60    0.00    0.00    0.60    0.00    0.00    0.00   94.56
    11时26分49秒    2    9.22    0.00    1.40    0.20    0.00    0.80    0.00    0.00    0.00   88.38
    11时26分49秒    3    7.09    0.00    0.81    0.00    0.00    1.01    0.00    0.00    0.00   91.09
    

    pidstat:用于监控当前由Linux内核管理的各个任务

    -u 查看 cpu 使用指标

    -w 查看进程切换指标

    -t 与所选任务关联的线程的统计信息。

    # UID 用户ID
    # PID 任务ID
    # %usr:用户态 CPU 使用率。
    # %system:内核态 CPU 使用率。
    # %guest 运行虚拟机 CPU 使用率。
    # %wait 等待 CPU 使用率。
    # %CPU 以及总的 CPU 使用率。
    # CPU 任务在第几个 CPU 上运行。
    
    # 每间隔5秒输出一组数据,一共输出3组。
    [biocloo@app2 ~]$ pidstat -u 5 3
    Linux 3.10.0-693.2.2.el7.x86_64 (app2)  2019年03月08日     _x86_64_    (4 CPU)
    
    11时32分31秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    11时32分36秒     0        41    0.00    0.20    0.00    0.20     2  kswapd0
    11时32分36秒     0       281    0.00    0.20    0.00    0.20     3  jbd2/vda1-8
    11时32分36秒     0      1168    0.20    0.00    0.00    0.20     1  java
    11时32分36秒     0      1312    0.20    0.00    0.00    0.20     1  aliyun-service
    11时32分36秒     0      9269    0.20    0.20    0.00    0.40     0  AliYunDun
    11时32分36秒  1000     13217    3.19    0.60    0.00    3.79     0  java
    11时32分36秒  1000     25533    3.59    0.20    0.00    3.79     2  filebeat
    11时32分36秒  1000     26703   24.95    3.59    0.00   28.54     0  java
    11时32分36秒  1000     26855    0.20    0.00    0.00    0.20     2  java
    
    11时32分36秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    11时32分41秒     0         9    0.00    0.20    0.00    0.20     1  rcu_sched
    11时32分41秒     0      1168    0.20    0.20    0.00    0.40     1  java
    11时32分41秒  1000      4153    0.00    0.20    0.00    0.20     1  pidstat
    11时32分41秒     0      9269    0.00    0.20    0.00    0.20     1  AliYunDun
    11时32分41秒  1000     13217    3.40    0.40    0.00    3.80     0  java
    11时32分41秒  1000     25533    3.60    1.00    0.00    4.60     2  filebeat
    11时32分41秒  1000     26703   27.40    4.20    0.00   31.60     0  java
    11时32分41秒  1000     26855    0.00    0.20    0.00    0.20     2  java
    
    11时32分41秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    11时32分46秒     0         9    0.00    0.20    0.00    0.20     1  rcu_sched
    11时32分46秒     0      1168    0.60    0.00    0.00    0.60     1  java
    11时32分46秒     0      9269    0.20    0.00    0.00    0.20     1  AliYunDun
    11时32分46秒  1000     13217    1.80    0.40    0.00    2.20     0  java
    11时32分46秒  1000     25533    3.80    0.00    0.00    3.80     2  filebeat
    11时32分46秒  1000     26703   27.60    2.60    0.00   30.20     0  java
    
    平均时间:   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    平均时间:     0         9    0.00    0.13    0.00    0.13     -  rcu_sched
    平均时间:     0        41    0.00    0.07    0.00    0.07     -  kswapd0
    平均时间:     0       281    0.00    0.07    0.00    0.07     -  jbd2/vda1-8
    平均时间:     0      1168    0.33    0.07    0.00    0.40     -  java
    平均时间:     0      1312    0.07    0.00    0.00    0.07     -  aliyun-service
    平均时间:  1000      4153    0.00    0.07    0.00    0.07     -  pidstat
    平均时间:     0      9269    0.13    0.13    0.00    0.27     -  AliYunDun
    平均时间:  1000     13217    2.80    0.47    0.00    3.26     -  java
    平均时间:  1000     25533    3.66    0.40    0.00    4.06     -  filebeat
    平均时间:  1000     26703   26.65    3.46    0.00   30.11     -  java
    平均时间:  1000     26855    0.07    0.07    0.00    0.13     -  java
    

    vmstat:虚拟内存,上下文切换统计信息。

    //* r(Running or Runnable):是就绪队列的长度,也就是正在运行和等待 CPU 的进程数。
    //* b(Blocked):则是处于不可中断睡眠状态的进程数。
    
    // swpd:使用的虚拟内存量。
    // free:空闲内存量。
    // buff:用作缓冲区的内存量。
    // cache:用作缓存的内存量。
    
    // si:从磁盘交换的内存量。
    // so:交换到磁盘的内存量。
    
    // bi:从块设备接收的块。
    // bo:发送到块设备的块。
    
    //* in(interrupt)则是每秒中断的次数。
    //* cs(context switch)是每秒上下文切换的次数。
    
    // us:运行非内核代码所花费的时间。
    // sy:运行内核代码所花费的时间。
    // id:空闲时间。在Linux 2.5.41之前,这包括IO等待时间。
    // wa:等待IO的时间。在Linux 2.5.41之前,包含在空闲状态。
    // st:从虚拟机中窃取的时间。在Linux 2.6.11之前,未知。
    
    // 每隔 1 秒统计一次,共统计一次。
    [biocloo@app2 ~]$ vmstat 1 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 382140 255512 7938204    0    0    19   103    0    1  6  1 93  0  0
     2  0      0 379664 255520 7940528    0    0     0   113 7891 6022  8  2 91  0  0
     0  0      0 380408 255512 7940004    0    0     0   154 7483 5758  7  2 91  0  0
     0  0      0 383244 255476 7938936    0    0     0  2791 9373 7165  9  2 88  0  0
     0  0      0 384320 255484 7941596    0    0     0   103 9010 6962  9  2 89  0  0
    

    perf:Linux 性能分析

    Overhead ,是该符号的性能事件在所有采样中的比例,用百分比来表示。
    Shared ,是该函数或指令所在的动态共享对象(Dynamic Shared Object),如内核、进程名、动态链接库名、内核模块名等。
    Object ,是动态共享对象的类型。比如 [.] 表示用户空间的可执行程序、或者动态链接库,而 [k] 则表示内核空间。
    Symbol 是符号名,也就是函数名。当函数名未知时,用十六进制的地址来表示。
    
    [root@centos ~]# perf top
    Samples: 625  of event 'cpu-clock', Event count (approx.): 130078096
    Overhead  Shared Object                    Symbol
      11.45%  [kernel]                         [k] _raw_spin_unlock_irqrestore
       4.41%  [kernel]                         [k] finish_task_switch
       3.48%  [kernel]                         [k] tick_nohz_idle_enter
       3.24%  [kernel]                         [k] module_get_kallsym
       3.09%  [kernel]                         [k] __memcpy
       3.09%  [kernel]                         [k] kallsyms_expand_symbol.constprop.1
       2.83%  perf                             [.] __symbols__insert
       2.80%  [kernel]                         [k] vsnprintf
       2.67%  [kernel]                         [k] format_decode
       2.32%  perf                             [.] rb_next
       2.26%  [kernel]                         [k] clear_page_c
       1.95%  perf                             [.] rb_insert_color
       1.91%  perf                             [.] __dso__load_kallsyms
       1.79%  libc-2.17.so                     [.] _int_malloc
       1.77%  [kernel]                         [k] number.isra.2
       1.62%  libc-2.17.so                     [.] __strcmp_sse42
       1.32%  [kernel]                         [k] string.isra.7
       1.32%  perf                             [.] 0x00000000000ca264
       1.25%  beam.smp                         [.] sched_spin_wait
       1.23%  [kernel]                         [k] rcu_gp_kthread
       1.18%  [kernel]                         [k] strnlen
       1.18%  perf                             [.] 0x00000000000ca277
       1.08%  [kernel]                         [k] rcu_process_callbacks
       1.03%  libc-2.17.so                     [.] _IO_getdelim
       1.03%  libc-2.17.so                     [.] __memcpy_sse2
       1.03%  perf                             [.] hex2u64
       0.97%  perf                             [.] 0x000000000019bc27
       0.95%  libc-2.17.so                     [.] __libc_calloc
       0.88%  [kernel]                         [k] pointer.isra.19
    

    perf top 是实时的,不能保存数据,perf record采样数据。使用 perf report 查看保存的数据。

    相关文章

      网友评论

          本文标题:性能监控和优化

          本文链接:https://www.haomeiwen.com/subject/cbpemqtx.html