`
aooboo
  • 浏览: 84801 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux性能关注-io

阅读更多

最近服务器有io的瓶颈,在查找资料的过程中,找到几遍好文章,分享一下。

其中作者针对内核监控io的方法做了总结,又有脚本的支持。以及对监控数据的说明,很好。

 

如何查看进程 IO 读写情况?

监测 Linux 进程的实时 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

    《PyPI官网下载:sqlizer-io-client-1.0.1.tar.gz——探索Python库的安装与使用》 PyPI(Python Package Index)是Python世界中的一个核心资源,它是Python软件包的仓库,包含了无数个开发者共享的Python库。本文将...

    jdk8 java8 linux版 jdk-8u162-linux-x64.tar.zip

    6. **开发者工具和库**:包括调试器(jdb)、性能分析器(jvisualvm)、内存分析工具(jmap, jhat)等,以及大量的Java标准库(如IO、网络、集合框架等)。 在Linux环境下,JDK的安装通常涉及以下步骤: 1. 解压...

    记一次记一次Linux性能监控

    本文将深入探讨Linux性能监控的重点,包括CPU、内存、IO和网络子系统的监控,以及如何针对不同类型的應用进行优化。 1. **CPU性能监控** - **上下文切换**:上下文切换是操作系统在多任务环境中切换进程执行的...

    漫谈linux文件IO

    在 Linux 开发领域,技术人员尤为关注几个关键性能指标:进程管理、CPU 使用率、内存占用、网络 I/O 和磁盘 I/O。其中,磁盘 I/O 性能尤其重要,因为它直接影响到系统的响应速度和整体性能。本文旨在全面、深入地...

    the-definitive-guide-to-linux-network-programming

    - **异步IO**:通过使用异步IO机制(如epoll和kqueue),可以进一步提高网络应用程序的性能。 - **网络数据包捕获**:学习如何使用libpcap库捕获和解析网络数据包,这对于理解网络流量和调试网络问题非常有用。 - **...

    Linux IO调度算法比较

    ### Linux IO调度算法详解 #### 一、引言 在现代计算系统中,I/O(输入/输出)操作是不可避免的。特别是在涉及大量数据存取的场景下,如数据库服务、文件系统操作等,I/O性能直接影响着系统的整体效率。由于磁盘...

    linux性能检测工具

    本文将围绕Linux性能检测工具的种类、功能、优势以及应用场景进行深入的讨论。 WGCLOUD作为Linux性能监控工具中的佼佼者,其强大的高并发性能监控能力使它在众多监控工具中脱颖而出。WGCLOUD支持实时数据采集、智能...

    node_exporter-1.2.2.linux-amd64.tar.gz

    "exporter Linux版本"表明我们关注的是Node Exporter在Linux环境下的实现。在Linux操作系统中,Node Exporter能够采集到丰富的系统级别数据,这包括但不限于: 1. **系统负载**:通过`load_1`, `load_5`, `load_15`...

    Linux服务器性能评估与优化.pdf

    4. Linux性能评估与优化: - `uptime`命令提供系统运行时间和平均负载等信息。负载平均值应小于CPU核心数量,否则可能表示CPU负载过高。 - `vmstat`监控CPU负载,如`procs`中的r和b值,以及`cpu`中的us、sy、id和...

    IO模型与性能分析

    ### IO模型与性能分析 #### 一、基本概念与背景 在探讨IO模型与性能分析之前,我们需要了解一些基础概念: - **时钟周期**:指的是一个时钟脉冲所持续的时间,它是衡量处理器速度的基本单位之一。 - **总线周期**...

    Rockchip IO-Domain 开发指南 V0.1-201702201

    【Rockchip IO-Domain 开发指南】是针对Rockchip公司特定芯片的一份技术文档,主要关注于IO电源域的配置和管理。这份指南的目标读者群体是技术支持工程师和软件开发工程师,帮助他们理解和处理与IO电源域相关的软件...

    Linux查看磁盘io开销的几种方法.docx

    在Linux系统中,监控磁盘I/O开销是优化系统性能的关键步骤,因为高I/O开销可能导致系统响应变慢,影响用户体验。本文将介绍三种常用的方法来查看Linux系统的磁盘I/O开销:top命令、vmstat命令以及iostat命令。 1. *...

    bonnie++ linux测试磁盘IO性能的工具

    《bonnie++:Linux系统中的磁盘I/O性能测试利器》 在Linux操作系统中,对磁盘I/O性能的评估是系统管理员和开发者至关重要的任务,因为这直接影响到系统的响应速度和整体性能。bonnie++是一款强大的开源工具,专门...

    生产系统主机io性能分析指南

    本文将深入探讨如何在Linux环境下监测和分析主机IO性能,涵盖dd命令的基本应用、iostat工具的详细使用方法,以及磁盘特性与IOPS的概念解析。 ### dd命令:磁盘性能简易测试 #### 测试磁盘的写入 dd命令是一种强大...

    Linux 性能分析.pdf

    总的来说,Linux性能分析是一个多维度的工作,需要结合多种工具和手段,从CPU、内存、磁盘IO和网络等多个角度进行综合考量。通过对系统各项关键资源的监控和分析,可以有效地诊断出系统的性能瓶颈,从而进行针对性的...

    关于linux性能监控的详细介绍

    在Linux性能监控时,我们关注的主要子系统包括CPU、内存、I/O和网络。这四个子系统相互关联,任何一个子系统的压力过大都可能引发其他子系统的问题。例如,大量的内存页面交换(page-in IO)可能导致内存队列耗尽;...

    linux性能优化和分析.ppt

    Linux性能优化和分析是一项至关重要的任务,它涉及到系统的整体健康状态和高效运行。这份PPT主要探讨了如何在Linux环境中识别和解决性能问题,通过理解系统各层面的性能指标,运用适当的工具,以及掌握优化原则,来...

    Linux 性能监测:介绍

    在进行Linux性能监测时,通常会关注以下几个关键的子系统: 1. **CPU**:CPU是执行程序指令的核心部件,其性能直接影响到系统的响应速度和处理能力。监测CPU的利用率可以帮助我们判断是否存在CPU瓶颈。 2. **Memory...

    linux redis安装(redis-2.6.14.tar.gz)

    在生产环境中,你可能还需要关注Redis的主从复制、哨兵监控(Sentinel)和集群(Cluster)功能。 记住,为了在系统启动时自动启动Redis,你还需要创建一个启动脚本和服务单元文件。对于Systemd系统,可以创建一个名...

Global site tag (gtag.js) - Google Analytics