最近服务器有io的瓶颈,在查找资料的过程中,找到几遍好文章,分享一下。
其中作者针对内核监控io的方法做了总结,又有脚本的支持。以及对监控数据的说明,很好。
标记一下,Kernel < 2.6.20的python脚本
#!/usr/bin/python
# Monitoring per-process disk I/O activity
# written by http://www.vpsee.com
import sys, os, time, signal, re
class DiskIO:
def __init__(self, pname=None, pid=None, reads=0, writes=0):
self.pname = pname
self.pid = pid
self.reads = 0
self.writes = 0
def main():
argc = len(sys.argv)
if argc != 1:
print "usage: ./iotop"
sys.exit(0)
if os.getuid() != 0:
print "must be run as root"
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
os.system('echo 1 > /proc/sys/vm/block_dump')
print "TASK PID READ WRITE"
while True:
os.system('dmesg -c > /tmp/diskio.log')
l = []
f = open('/tmp/diskio.log', 'r')
line = f.readline()
while line:
m = re.match(\
'^(\S+)\((\d+)\): (READ|WRITE) block (\d+) on (\S+)', line)
if m != None:
if not l:
l.append(DiskIO(m.group(1), m.group(2)))
line = f.readline()
continue
found = False
for item in l:
if item.pid == m.group(2):
found = True
if m.group(3) == "READ":
item.reads = item.reads + 1
elif m.group(3) == "WRITE":
item.writes = item.writes + 1
if not found:
l.append(DiskIO(m.group(1), m.group(2)))
line = f.readline()
time.sleep(1)
for item in l:
print "%-10s %10s %10d %10d" % \
(item.pname, item.pid, item.reads, item.writes)
def signal_handler(signal, frame):
os.system('echo 0 > /proc/sys/vm/block_dump')
sys.exit(0)
if __name__=="__main__":
main()
分享到:
相关推荐
《PyPI官网下载:sqlizer-io-client-1.0.1.tar.gz——探索Python库的安装与使用》 PyPI(Python Package Index)是Python世界中的一个核心资源,它是Python软件包的仓库,包含了无数个开发者共享的Python库。本文将...
6. **开发者工具和库**:包括调试器(jdb)、性能分析器(jvisualvm)、内存分析工具(jmap, jhat)等,以及大量的Java标准库(如IO、网络、集合框架等)。 在Linux环境下,JDK的安装通常涉及以下步骤: 1. 解压...
本文将深入探讨Linux性能监控的重点,包括CPU、内存、IO和网络子系统的监控,以及如何针对不同类型的應用进行优化。 1. **CPU性能监控** - **上下文切换**:上下文切换是操作系统在多任务环境中切换进程执行的...
在 Linux 开发领域,技术人员尤为关注几个关键性能指标:进程管理、CPU 使用率、内存占用、网络 I/O 和磁盘 I/O。其中,磁盘 I/O 性能尤其重要,因为它直接影响到系统的响应速度和整体性能。本文旨在全面、深入地...
- **异步IO**:通过使用异步IO机制(如epoll和kqueue),可以进一步提高网络应用程序的性能。 - **网络数据包捕获**:学习如何使用libpcap库捕获和解析网络数据包,这对于理解网络流量和调试网络问题非常有用。 - **...
### Linux IO调度算法详解 #### 一、引言 在现代计算系统中,I/O(输入/输出)操作是不可避免的。特别是在涉及大量数据存取的场景下,如数据库服务、文件系统操作等,I/O性能直接影响着系统的整体效率。由于磁盘...
本文将围绕Linux性能检测工具的种类、功能、优势以及应用场景进行深入的讨论。 WGCLOUD作为Linux性能监控工具中的佼佼者,其强大的高并发性能监控能力使它在众多监控工具中脱颖而出。WGCLOUD支持实时数据采集、智能...
"exporter Linux版本"表明我们关注的是Node Exporter在Linux环境下的实现。在Linux操作系统中,Node Exporter能够采集到丰富的系统级别数据,这包括但不限于: 1. **系统负载**:通过`load_1`, `load_5`, `load_15`...
4. Linux性能评估与优化: - `uptime`命令提供系统运行时间和平均负载等信息。负载平均值应小于CPU核心数量,否则可能表示CPU负载过高。 - `vmstat`监控CPU负载,如`procs`中的r和b值,以及`cpu`中的us、sy、id和...
### IO模型与性能分析 #### 一、基本概念与背景 在探讨IO模型与性能分析之前,我们需要了解一些基础概念: - **时钟周期**:指的是一个时钟脉冲所持续的时间,它是衡量处理器速度的基本单位之一。 - **总线周期**...
【Rockchip IO-Domain 开发指南】是针对Rockchip公司特定芯片的一份技术文档,主要关注于IO电源域的配置和管理。这份指南的目标读者群体是技术支持工程师和软件开发工程师,帮助他们理解和处理与IO电源域相关的软件...
在Linux系统中,监控磁盘I/O开销是优化系统性能的关键步骤,因为高I/O开销可能导致系统响应变慢,影响用户体验。本文将介绍三种常用的方法来查看Linux系统的磁盘I/O开销:top命令、vmstat命令以及iostat命令。 1. *...
《bonnie++:Linux系统中的磁盘I/O性能测试利器》 在Linux操作系统中,对磁盘I/O性能的评估是系统管理员和开发者至关重要的任务,因为这直接影响到系统的响应速度和整体性能。bonnie++是一款强大的开源工具,专门...
本文将深入探讨如何在Linux环境下监测和分析主机IO性能,涵盖dd命令的基本应用、iostat工具的详细使用方法,以及磁盘特性与IOPS的概念解析。 ### dd命令:磁盘性能简易测试 #### 测试磁盘的写入 dd命令是一种强大...
总的来说,Linux性能分析是一个多维度的工作,需要结合多种工具和手段,从CPU、内存、磁盘IO和网络等多个角度进行综合考量。通过对系统各项关键资源的监控和分析,可以有效地诊断出系统的性能瓶颈,从而进行针对性的...
在Linux性能监控时,我们关注的主要子系统包括CPU、内存、I/O和网络。这四个子系统相互关联,任何一个子系统的压力过大都可能引发其他子系统的问题。例如,大量的内存页面交换(page-in IO)可能导致内存队列耗尽;...
Linux性能优化和分析是一项至关重要的任务,它涉及到系统的整体健康状态和高效运行。这份PPT主要探讨了如何在Linux环境中识别和解决性能问题,通过理解系统各层面的性能指标,运用适当的工具,以及掌握优化原则,来...
在进行Linux性能监测时,通常会关注以下几个关键的子系统: 1. **CPU**:CPU是执行程序指令的核心部件,其性能直接影响到系统的响应速度和处理能力。监测CPU的利用率可以帮助我们判断是否存在CPU瓶颈。 2. **Memory...
在生产环境中,你可能还需要关注Redis的主从复制、哨兵监控(Sentinel)和集群(Cluster)功能。 记住,为了在系统启动时自动启动Redis,你还需要创建一个启动脚本和服务单元文件。对于Systemd系统,可以创建一个名...