`
tuhaitao
  • 浏览: 378737 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux-CPU监控

 
阅读更多

监控的目的是为了,找出系统的瓶颈,理解并分析当前系统的特点,现在多数的系统跑的是应用类型,例如:

1.数据库(Oracle, MySQL,等)

2.Cache服务(Memcached, Squid等)

2.应用服务器(Tomcat, Apache,Nginx, Jboss, sendmail等)

 

其实这些应用软件大致可以分为两类:

1. 数据读取范畴(I/O 请求占用多数时间)

 

     在这个范畴的应用软件,基本是处理高负荷的内存使用以及存储的系统,大量的时间处在数据处理的过程中,多半的软件不会对CPU发起更多的处理请求,当然这些软件也使用CPU,但都是为了产生I/O请求一集进入到内核态中断所发起的请求。

 

2. 数据处理范畴(CPU计算占用多数时间)

 

    处在这个范畴的应用软件,基本是高负荷的CPU占用为主,以及高密度的数学计算,通常web服务器,Tomcat,Jboss这样的应用服务器,或者一些中间件都是这个范畴的应用软件。

 

在这里我们先介绍一下CPU范畴居多的服务器,怎么监控CPU的性能:

 

1.安装监控工具

 

标准的Linux发行版里都带有了top命令,除此意外还有一个sysstat的linux监控工具,可以使用

 

http://sebastien.godard.pagesperso-orange.fr/

 

sysstat里包括了一系列的监控工具,比较常用的有vmstat, mpstat, iostat

 

首先我们使用vmstat来看一下输出:

 

 

[root@localhost ~]# vmstat
procs    ------memory------     ---swap-- -----io---  ----system-----  -----cpu-----
 r  b    swpd  free        buff       cache  si  so  bi   bo  in   cs   us  sy  id  wa 
 0 0    0         424904  14784   45484 0   0   29   2   26  14  0    1   99  1   
 

 

这里简单解释一下几个比较重要的列所代表的含义:

 

 

列名称 含义
r Run Queue, 表示当前CPU运行队列中线程的数目,代表线程出于可运行状态,但CPU尚未执行。
b Blocked, 表示当前进程阻塞并等待I/O请求完成的数目。
in Interrupts, 当前终端被处理的数目。
cs Context Switch, 表示当前系统内核中,发生上下文切换的数目。
us Utilization, 表示CPU利用率百分比。
sys System kernel and Interrupts, 表示内核中断利用率的百分比。
wa All runnable threads are blocked waiting on I/O, 表示所有可运行状态的线程被阻塞在I/O的百分比。
id Idle, CPU空闲时间百分比。

 

这里产生了一个系统性能的快照,监控CPU,我们最关心的莫过于CPU使用率,这系统输出中---cpu---下的id列,代表CPU空闲时间百分比,idle的缩写,这里数值是99,表示系统非常空闲,同时r,b,us数值均为0,in与cs 也出于很低的数值位,总体数值表明该系统非常空闲,几乎不做任何事情。

 

 

下边给一个系统比较繁忙的例子,并且持续监控10秒

 

 

 

[root@localhost ~]# vmstat 1
procs ---------memory--------- ---swap--- -----io---- -----system----- -----cpu-----
 r   b  swpd free buff cache si so bi bo in cs us sy id wa
 3  0  207689 15094 80387 156631 0 0 0 2 726  26 82 20 0 0
 2  0  207689 14768 80387 156165 0 0 0 2 738  23 96 3 0 0
 1  0  207689 14723 80387 156774 0 356 0 2308 987 80 93 16 0 0
 2  0  208352 13815 79183 156393 0 356 0 1038 667 62 91 13 0 0
 1  0  208352 301812 77132 155414 0 0 0 2 873 24 87 6    0   0
 3  0  208352 301812 77132 155547 0 0 0 2589 896 36 92 11 0 0
 4  0  208352 301812 76062 155751 0 0 0 2 850  30 91 12 0 0
 4  0  208352 301812 76062 155482 0 0 0 2 736  26 88 6 0 0
 2  0  208352 301812 76103 155823 0 0 0 2 812  23 85 7 0 0
 0  0  208352 301812 76103 155979 0 0 0 2 887  21 77 9 1 0
 

根据上边的数值,我们可以观察到:

 

1. in的数值很高,说明有大量的中断请求,而cs的数值较少,上下文切换较少,这说明可能有一个进程在产生对硬件设备的请求。

2. us平均数值在85以上,而cs的数值不高,说明上下文切换很少, 这说明这个应用程序很可能还在CPU里被处理。

3. r的数值有正常范围应该在1-3个以内,显然有2个4,这说明,超出了限制。

 

这里简单介绍一下r的含义:

 

r死Runnable Queue, 实际上每个CPU都维护这一个线程的运行队列,调度器应该不断的切换,并且执行线程, 当进程中的线程不是在阻塞队列中,或者等待I/O中,那么 就是在可运行状态中, 如果CPU出于高负荷状态下,那么内核调度将无法及时响应系统请求,这会使可运行状态进程的线程阻塞在运行队列里,随着队列越来越大,进程中的线程将话费更多的时间等待被执行。

 

大家可以用top命令查看系统的平均运行队列状况,在top中叫做load averages, top中列出的是指,1,5,15分钟内的运行队列状况。

 

 

下边再介绍一个工具 mpstat

 

这个工具主要是用在多核的处理器中, 你可以使用mpstat来监控每个核的处理情况.

 

 

[root@localhost ~]# mpstat -P ALL 1
Linux 2.6.35.14-95.fc14.i686 (localhost.localdomain)    2011年08月28日  _i686_  (1 CPU)

18时52分19秒  CPU  %usr  %nice  %sys %iowait   %irq   %soft  %steal  %guest   %idle
18时52分20秒  all     0.00      0.00   0.00      0.00    0.00    0.00    0.00      0.00      100.00
18时52分20秒  0      0.00      0.00   0.00      0.00    0.00    0.00    0.00      0.00     100.00
18时52分20秒  1      0.00     0.00   0.00      0.00    0.00    0.00    0.00      0.00     100.00

 

mpstat命令打印出的CPU利用率基本与vmstat一致,但是mpstat可以基于单个处理器计算统计的数值:)

1
2
分享到:
评论
3 楼 tuhaitao 2011-08-29  
如果想单独监控一个进程,写一个ps的shell即可(这里监控sql):

while :; do ps -eo pid,ni,pri,pcpu,psr,comm | grep -E "(^| )mysqld($| )"; sleep 1; done


如果想分析历史,写日志到文件里即可
2 楼 tuhaitao 2011-08-29  
oldsong 写道
这些工具太简单了吧,看实时的还行,如果查看历史记录,楼主的方法行吗

哥们,想记录历史,你得留日志,分析日志方可分析历史
1 楼 oldsong 2011-08-28  
这些工具太简单了吧,看实时的还行,如果查看历史记录,楼主的方法行吗

相关推荐

    Linux-Centos监控CPU利用率脚本

    赋权后运行./CPU_test >>/opt/CPU.log,产生log文件分析CPU利用率

    Linux-CPU-function-test.zip_cpu_cpu function_linux cpu test_ubun

    6. **性能监控工具**:除了测试工具,Linux还提供了一些性能监控工具,如`gtop`、`glances`和`systemd-cgtop`,它们能直观地显示CPU使用情况,帮助用户实时了解系统状态。 7. **安全和稳定性**:CPU测试不仅仅是...

    linux-让多核CPU达到指定的CPU使用率脚本

    - 脚本可能通过监控`/proc/stat`文件获取CPU利用率信息,该文件提供了系统运行状态的实时统计。 - 脚本会自动排除自身占用的CPU%,确保计算的CPU使用率反映的是其他进程的使用情况。 - 当CPU使用率低于某个设定...

    linux-cpu.zip_CPU使用率

    本资源“linux-cpu.zip”包含了一个名为“cpu.c”的源代码文件,该文件提供了实现监控Linux系统CPU使用率的功能。接下来,我们将详细讨论相关知识点。 1. **Linux系统调用**: - `cpu.c` 源码很可能使用了Linux...

    scavenger-1.9.0-armv7-unknown-linux-gnueabihf-cpu-only.tar.gz

    Scavenger是一个软件项目,版本号为1.9.0,专为ARMv7架构的处理器设计,适用于基于Linux的系统,并且仅包含CPU相关的功能,不涉及GPU或其他硬件加速。"gnueabihf"是针对ARM处理器的GNU EABI(Embedded Application ...

    wrapper-linux-x86-64-3.5.55 社区版

    总的来说,"wrapper-linux-x86-64-3.5.55 社区版"是Linux环境中的一款强大工具,通过它可以轻松地管理和监控Java应用,提高系统的可靠性。对于那些依赖Java服务的企业和开发者,熟悉并掌握Wrapper技术是提升运维效率...

    etcd-v3.5.0-linux-amd64.tar.gz

    - 监控与报警:设置监控指标,如CPU使用率、内存占用和网络延迟,及时发现并解决问题。 总结,etcd-v3.5.0-linux-amd64是一个强大的工具,用于构建高度可用的分布式系统。了解其工作原理、如何部署和使用,以及...

    Linux运维-运维构架师-高级运维架构师-Day10-监控zabbix-05.系统监控-CPU.mp3

    Linux运维-运维构架师-高级运维架构师-Day10-监控zabbix-05.系统监控-CPU.mp3

    linux get-thread-cpu线程cpu 监控脚本

    linux get_thread_cpu线程cpu 监控脚本

    jdk-8u321-linux-x64.tar.zip

    3. **运维**:运维是指对IT系统的运行和维护,包括服务器监控、故障排查、性能优化、备份恢复等。在部署JDK时,运维人员需要关注CPU、内存使用情况,以及如何通过JMX、VisualVM等工具进行性能分析。 4. **服务器**...

    jdk-8u162-linux-x64

    6. **Java性能分析工具**:如JVisualVM,它提供了一种可视化的方式来监控Java应用的性能,包括CPU、内存、线程等。 7. **Java打包工具(jar)**:用于创建和管理Java归档(JAR)文件,便于模块化和分发Java程序。 ...

    node_exporter-1.1.2.linux-amd64.tar.gz

    它能够暴露系统级别的监控数据,如CPU使用率、内存消耗、磁盘I/O和网络活动等,这些数据可以被Prometheus服务器抓取并用于性能分析和故障排查。在本篇文章中,我们将深入探讨`node_exporter-1.1.2.linux-amd64.tar....

    jdk-8u301-linux-x64.tar.gz

    对于**服务器运维**,配置好JDK是基础,而了解如何管理和优化JVM(Java Virtual Machine)性能,监控Java应用的内存、CPU使用情况,以及日志管理等都是关键技能。此外,熟悉Linux系统的常用命令和性能监控工具(如...

    pushgateway-1.4.2.linux-amd64.tar.gz

    总的来说,Pushgateway在Linux环境中提供了一种便捷的方式来集成对短生命周期服务的监控,是Prometheus监控解决方案的重要补充,对于运维人员来说,理解其工作原理和使用方法是提升监控效率的关键。

    jdk-8u261-linux-arm64-vfp-hflt.tar.gz

    6. 监控与调优:为了确保在ARM架构上JDK1.8的稳定运行,开发者需要监控JVM的性能指标,如垃圾回收、内存使用、CPU负载等,并根据实际情况进行JVM参数调优。 总结来说,"jdk-8u261-linux-arm64-vfp-hflt.tar.gz"是...

    mysqld_exporter-0.12.1.linux-amd64.tar.gz

    综上所述,MySQL Exporter是Prometheus监控MySQL数据库的关键工具,通过它你可以监控MySQL的CPU使用率、内存消耗、查询延迟等关键指标,从而更好地管理和优化你的数据库系统。正确地安装和配置MySQL Exporter,能够...

    Linux运维-11-Linux云计算-监控- 监控概述课件资料.zip

    通过学习这个“Linux运维-11-Linux云计算-监控-监控概述”的课件资料,你将掌握如何在复杂的云计算环境中实施有效的监控策略,从而提升系统的稳定性和可靠性。同时,这也会帮助你更好地理解Linux运维的工作流程,...

    oracle数据库补丁p20299013_112040_Linux-x86-64

    安装Oracle数据库补丁时,遵循最佳实践至关重要,包括测试补丁在非生产环境中的影响、了解补丁内容以及密切监控安装过程。此外,保持数据库软件的最新状态,不仅可以提升系统安全性,还能确保获得最新的性能优化和...

    p19404309_112040_Linux-x86-64.zip

    1. **系统配置**:确保系统满足Oracle 11g RAC的硬件和软件要求,例如内存、CPU、磁盘空间等。同时,安装必要的开发工具、编译器和库,如gcc、make、kernel-devel等。 2. **网络配置**:设置适当的网络环境,包括...

    node_exporter-1.2.2.linux-amd64.tar.gz

    总结来说,Node Exporter是Prometheus监控系统中不可或缺的一部分,它专注于收集Linux系统的各种硬件和软件指标,使得Prometheus能更全面地理解并监控Linux环境。通过深入理解和有效利用Node Exporter,我们可以更好...

Global site tag (gtag.js) - Google Analytics