`
silent.wong
  • 浏览: 14739 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Linux的系统性能监测参数获取

阅读更多

    目前的工程需要简单的监测一下Linux系统的:CPU负载、内存消耗情况、几个指定目录的磁盘空间、磁盘I/O、swap的情况还有就是网络流量。
    Linux下的性能检测工具其实都有很多。mrtg(http://people.ee.ethz.ch/~oetiker/webtools/mrtg/)就是一个很不错的选择。不过用mrtg就要装sysstat、apache、snmp、perl之类的东西。而且安装也要好几个步骤,似乎比较麻烦。本来也想直接调用sar、vmstat之类的命令,parse一下结果就算了。哪知道发现不同的版本的linux这些命令的结果也都是不一样。既然要按版本parse它们的结果,那还不如直接去系统里面获得算了。于是研究了一下sysstat(http://freshmeat.net/projects/sysstat/ )和gkrellm(http://gkrellm.net  )的源代码,找到监测性能的数据所在。

1、CPU
    在文件"/proc/stat"里面就包含了CPU的信息。每一个CPU的每一tick用在什么地方都在这个文件里面记着。后面的数字含义分别是:user、nice、sys、idle、iowait。有些版本的kernel没有iowait这一项。这些数值表示从开机到现在,CPU的每tick用在了哪里。例如:cpu0 256279030 0 11832528 1637168262
就是cpu0从开机到现在有256279030 tick用在了user消耗,11832528用在了sys消耗。所以如果想计算单位时间(例如1s)里面CPU的负载,那只需要计算1秒前后数值的差除以每一秒的tick数量就可以了。gkrellm就是这样实现的:((200 * (v2 - v1) / CPU_TICKS_PER_SECOND) + 1) /2

    例如,第一次读取/proc/stat,user的值是256279030;一秒以后再读一次,值是256289030,那么CPU在这一秒的user消耗就是:((200 * (256289030 - 256279030) / CPU_TICKS_PER_SECOND) + 1) /2 = ((10000 * 200 / 1000000) + 1) / 2 = 1%了。

2、内存消耗
     文件"/proc/meminfo"里面包含的就是内存的信息,还包括了swap的信息。例如:
$ cat /proc/meminfo


total:    used:    free:  shared: buffers:  cached:
Mem:  1057009664 851668992 205340672        0 67616768 367820800
Swap: 2146787328 164429824 1982357504
MemTotal:      1032236 kB
MemFree:        200528 kB
MemShared:           0 kB
……
不过从gkrellm的源代码看,有些版本没有前面那两行统计的信息,只能够根据下面的Key: Value这种各式的数据收集。

3、磁盘空间
    从gkrellm的源代码看,这个是一个很复杂的数据。磁盘分区的数据有可能分布在:/proc/mounts、/proc/diskstats、/proc/partitions等等。而且如果想要检查某几个特定的路径,还需要通过mount、df等命令的帮助。为了减少麻烦,这个数据我就直接用statfs函数直接获得了。
int statfs(const char *path, struct statfs *buf);
这个函数只需要输入需要检查的路径名称,就可以返回这个路径所在的分区的空间使用情况:
总空间:buf.f_bsize * buf.f_blocks
空余空间:buf.f_bsize * buf.f_bavail

4、磁盘I/O
   磁盘I/O的数据也同样比较复杂,有些版本看/proc/diskstats,有些版本看/proc/partitions,还有些版本至今我也不知道在那里看……不过可以看到数据的版本也像CPU那样,需要隔一段时间取值,两次取值的差就是流量。

5、网络流量
   网络流量也是五花八门,不过基本上都可以在/proc/net/dev里面获得。同样也是需要两次取值取其差作为流量值。

   以上就是数据获得源头。程序也比较好写,不外乎就是打开一些文件,逐行读出来然后用sscanf来parse一下数据就可以了。

分享到:
评论

相关推荐

    Linux攻略 系统性能监测参数获取的方法

    综上所述,Linux系统性能监测涉及多个内核提供的文件和系统调用,通过解析这些信息,我们可以有效地监控系统状态并进行必要的调整。对于开发自定义监控工具或分析现有工具的工作原理,理解这些底层细节至关重要。

    Linux的系统性能监测参数获取方法

    在Linux系统监控中,了解如何获取关键性能指标对于优化系统运行和排查问题至关重要。本文将详细探讨如何通过系统内核暴露的文件和命令来获取CPU负载、内存消耗、磁盘空间、磁盘I/O以及网络流量等信息。 1. **CPU...

    Linux 系统内存性能测试shell脚本

    在Linux系统中,进行内存性能测试对于评估系统的整体性能至关重要,特别是对于服务器和高负载环境。本文将详细解析一个基于shell脚本的内存性能测试方法,该脚本利用`dd`命令和`/proc/sys/vm/drop_caches`文件进行...

    Linux环境下PowerPC-NC运行性能参数的获取.pdf

    总结来说,这篇文章深入探讨了在Linux环境下如何利用内核模块技术来实现PowerPC-NC系统的性能参数获取。这种方法的实施为系统管理员提供了强大的工具,帮助他们更好地理解和优化基于PowerPC的网络计算机系统。

    Linux服务器性能测试分析命令大全

    在Linux系统中,性能数据可以来源于虚拟目录/proc,这个目录中包含了系统运行时的参数。通过这些参数,性能监控工具能够展示当前系统各个子系统的运行状况。当系统发生性能问题时,可以通过修改/proc目录下的相关...

    单机Linux下监测系统性能的设计与实现.pdf

    单机Linux性能监测系统(PMS,Standalone Linux Operating System Computer Performance Monitoring System)是一个专门用于实时监控Linux系统资源利用率的工具,尤其关注CPU和内存的使用情况。该系统设计的目的是...

    linux DDR带宽测试工具

    同时,测试结果应多次验证以获取平均值,因为内存性能可能受到系统状态、CPU负载、硬件温度等因素的影响。 总结,DDR带宽测试对于理解Linux系统的性能至关重要,`mbw`是一个实用的工具,能够帮助用户轻松地测量内存...

    linux下性能测试工具简介

    ### Linux下性能测试工具简介 #### 工具1:memtester **功能介绍:** - **定义:** `memtester` 是一个用户空间的内存子系统测试工具,用于检测计算机内存是否存在故障。它可以识别出间歇性和非确定性的内存问题...

    Linux性能参数.doc

    Linux性能参数对于优化系统运行效率至关重要,理解和监控这些参数能够帮助我们发现并解决潜在的系统瓶颈。以下将详细探讨Linux中的关键性能指标。 首先,我们要关注的是处理器参数。CPU利用率(CPU utilization)是最...

    Linux主机性能监测与MRTG的应用.pdf

    sysstat是另一个重要的Linux性能监控工具,它包含了一系列子程序,如iostat、mpstat、vmstat等,用于收集和报告系统级别的统计信息,包括CPU利用率、内存使用、磁盘I/O、网络活动等。这些信息对于诊断系统性能问题,...

    Linux集群系统性能的实时监测及其可视化研究.pdf

    在本文中,作者彭土有探讨了如何对Linux集群系统进行实时性能监测和可视化,以提升系统的管理和优化能力。研究的核心是利用CGI(Common Gateway Interface)技术和HTTP协议,实现对Linux集群服务器节点性能参数的...

    Linux 系统测试硬盘性能shell 脚本

    在Linux系统中,测试硬盘性能是一项重要的任务,它可以帮助我们评估磁盘的读写速度、块访问效率以及寻道时间,这些因素直接影响到系统的整体运行速度和响应能力。本文将详细解析一个使用shell脚本来测试硬盘性能的...

    LINUX性能调优方法总结

    这份名为“LINUX性能调优方法总结”的文档,很可能包含了一系列关于如何优化Linux系统性能的技术和策略。以下是根据标题和描述可能涵盖的一些主要知识点: 1. **系统监控工具**:了解并使用如`top`, `htop`, `...

    一种Linux系统下自动化测试网卡压力的方法.pdf

    总的来说,本发明提供了一种在Linux系统下利用iperf进行网卡压力测试的有效方法,通过shell脚本的自动化控制,实现了测试参数的灵活设置和测试结果的快速获取,大大提升了测试工作的效率和质量。这对于网络管理员和...

    Linux系统运行时参数命令、网络、磁盘参数和日志监控.pdf

    【Linux系统运行时参数命令、网络、磁盘参数和日志监控】 在Linux系统管理中,了解并熟练运用各种命令是至关重要的。本课程重点涵盖了Linux基础命令、系统性能监控,特别是CPU、内存、磁盘I/O以及网络性能的监控。...

    获取和修改linux socket最大连接数,linux,系统

    总的来说,获取和修改Linux Socket的最大连接数涉及到对系统底层机制的理解,包括Socket的工作原理、文件描述符限制以及内核参数调整等。正确地设置这些参数,可以显著提升服务器的并发处理能力和性能。

    Linux系统移植全过程

    2. 性能调优:通过调整内核参数,优化系统的性能和稳定性。 3. 安全性考虑:保持内核和软件包的更新,以修复安全漏洞。 通过以上步骤,你可以成功地将Linux系统移植到ARM平台上。这个过程需要耐心和细心,但一旦...

    嵌入式LINUX 系统开发概述

    ### 嵌入式Linux系统开发概述 #### 一、嵌入式系统基本概念与特点 **1.1 嵌入式系统定义** 嵌入式系统是指将计算机硬件和软件集成在一个或多个处理器上,形成一个专用的计算机系统,用于实现特定功能的产品或设备...

    Linux性能优化大师(监控工具,分析性能,调优)

    7. **/proc文件系统**:通过读取/proc下的文件,获取系统及进程的实时信息。 三、调优策略 1. **内核参数调整**:通过调整sysctl参数,优化内核行为,如网络、内存管理等。 2. **文件系统优化**:选择合适的文件...

Global site tag (gtag.js) - Google Analytics