当前位置:首页 » 操作系统 » linux查看进程io

linux查看进程io

发布时间: 2022-10-29 13:47:37

linux 查找占用磁盘IO读写很高的进程方法

通过iostat -x 1 10 查看相关磁盘使用信息

相关截图如下:

1 # 如果没有 iostat 命令,那么使用 yum install sysstat 进行安装
2 # iostat -x 1 10

通过 iotop命令

如果没有该命令,请通过 yum install iotop 进行安装。

# iotop -oP 通过这个命令可以看见比较详细信息,如:进程号,磁盘读取量,磁盘写入量,IO百分比,涉及到的命令是什么“两个都是 grep 命令造成的IO读取量大”。Linux 查找占用磁盘IO读写命令 iotop

通过 pidstat 命令

1 # 命令的含义:展示I/O统计,每秒更新一次
2 # pidstat -d 1

⑵ linux系统如何查看网络IO

首先 、用top命令查看

top - 16:15:05 up 6 days, 6:25, 2 users, load average: 1.45, 1.77, 2.14

Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.2% us, 0.2% sy, 0.0% ni, 86.9% id, 12.6% wa, 0.0% hi, 0.0% si

Mem: 4037872k total, 4003648k used, 34224k free, 5512k buffers

Swap: 7164948k total, 629192k used, 6535756k free, 3511184k cached

查看12.6% wa

IO等待所占用的CPU时间的百分比,高过30%时IO压力高

其次、 用iostat -x 1 10

avg-cpu: %user %nice %sys %iowait %idle

0.00 0.00 0.25 33.46 66.29

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util

sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

sdb 0.00 1122 17.00 9.00 192.00 9216.00 96.00 4608.00 123.79 137.23 1033.43 13.17 100.10

sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

查看%util 100.10 %idle 66.29

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

idle小于70% IO压力就较大了,一般读取速度有较多的wait.

同时可以结合vmstat 查看查看b参数(等待资源的进程数)

vmstat -1

如果你想对硬盘做一个IO负荷的压力测试可以用如下命令

time dd if=/dev/zero bs=1M count=2048 of=direct_2G

此命令为在当前目录下新建一个2G的文件

我们在新建文件夹的同时来测试IO的负荷情况。

⑶ linux怎样查看那个进程占用网络io

查看linux进程占用端口步骤如下:

  1. lsof -i 用以显示符合条件的进程情况,lsof(list open files)是一个列出当前系统打开文件的工具。以root用户来执行lsof -i命令,如下图


    ⑷ 如何查看linux服务器io读写情况

    首先 、用top命令查看
    top - 16:15:05 up 6 days, 6:25, 2 users, load average: 1.45, 1.77, 2.14
    Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie
    Cpu(s): 0.2% us, 0.2% sy, 0.0% ni, 86.9% id, 12.6% wa, 0.0% hi, 0.0% si
    Mem: 4037872k total, 4003648k used, 34224k free, 5512k buffers
    Swap: 7164948k total, 629192k used, 6535756k free, 3511184k cached
    查看12.6% wa
    IO等待所占用的CPU时间的百分比,高过30%时IO压力高
    其次、 用iostat -x 1 10
    avg-cpu: %user %nice %sys %iowait %idle
    0.00 0.00 0.25 33.46 66.29
    Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
    sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    sdb 0.00 1122 17.00 9.00 192.00 9216.00 96.00 4608.00 123.79 137.23 1033.43 13.17 100.10
    sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    查看%util 100.10 %idle 66.29
    如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
    idle小于70% IO压力就较大了,一般读取速度有较多的wait.
    同时可以结合vmstat 查看查看b参数(等待资源的进程数)
    vmstat -1
    如果你想对硬盘做一个IO负荷的压力测试可以用如下命令
    time dd if=/dev/zero bs=1M count=2048 of=direct_2G
    此命令为在当前目录下新建一个2G的文件
    我们在新建文件夹的同时来测试IO的负荷情况

    ⑸ 如何查看linux服务器io读写情况

    首先 、用top命令查看
    top - 16:15:05 up 6 days, 6:25, 2 users, load average: 1.45, 1.77, 2.14
    Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie
    Cpu(s): 0.2% us, 0.2% sy, 0.0% ni, 86.9% id, 12.6% wa, 0.0% hi, 0.0% si
    Mem: 4037872k total, 4003648k used, 34224k free, 5512k buffers
    Swap: 7164948k total, 629192k used, 6535756k free, 3511184k cached
    查看12.6% wa
    IO等待所占用的CPU时间的百分比,高过30%时IO压力高
    其次、 用iostat -x 1 10
    avg-cpu: %user %nice %sys %iowait %idle
    0.00 0.00 0.25 33.46 66.29
    Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
    sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    sdb 0.00 1122 17.00 9.00 192.00 9216.00 96.00 4608.00 123.79 137.23 1033.43 13.17 100.10
    sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    查看%util 100.10 %idle 66.29
    如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
    idle小于70% IO压力就较大了,一般读取速度有较多的wait.
    同时可以结合vmstat 查看查看b参数(等待资源的进程数)
    vmstat -1
    如果你想对硬盘做一个IO负荷的压力测试可以用如下命令
    time dd if=/dev/zero bs=1M count=2048 of=direct_2G
    此命令为在当前目录下新建一个2G的文件
    我们在新建文件夹的同时来测试IO的负荷情况

    ⑹ linux 系统查看哪个进程占io

    lsof
    是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
    常用的参数列表
    lsof
    filename
    显示打开指定文件的所有进程
    lsof
    -a
    表示两个参数都必须满足时才显示结果
    lsof
    -c
    string
    显示COMMAND列中包含指定字符的进程所有打开的文件
    lsof
    -u
    username
    显示所属user进程打开的文件
    lsof
    -g
    gid
    显示归属gid的进程情况
    lsof
    +d
    /DIR/
    显示目录下被进程打开的文件
    lsof
    +D
    /DIR/
    同上,但是会搜索目录下的所有目录,时间相对较长
    lsof
    -d
    FD
    显示指定文件描述符的进程
    lsof
    -n
    不将IP转换为hostname,缺省是不加上-n参数
    lsof
    -i
    用以显示符合条件的进程情况
    lsof
    -i[46]
    [protocol][@hostname|hostaddr][:service|port]
    46
    -->
    IPv4
    or
    IPv6
    protocol
    -->
    TCP
    or
    UDP
    hostname
    -->
    Internet
    host
    name
    hostaddr
    -->
    IPv4地址
    service
    -->
    /etc/service中的
    service
    name
    (可以不只一个)
    port
    -->
    端口号
    (可以不只一个)

    ⑺ linux下有没有查看某个进程的IO的工具

    你可以试试用ps命令,以下为常用,具体用法可以网络

    1

    #> ps aux

    可以比较详细的显示进程信息
    同时也可在此命令后使用管道符号“|”跟上grep搜索关键字相关进程

    ⑻ 如何查看Linux下进程的IO活动状况 00 Hey,Linux

    您好,很高兴为您解答。服务器cpu使用率不高,load比较高,所以要查看一下IO。硬盘IO可以通过命令vmstat或iostat获得(也可以用yum安装dstat获得),网络IO可以用iftop命令获取。但是不知道那个进程使用硬盘IO比较高,通过查找没有找到相关命令,只好自己写个脚本进行统计处理。本脚本在CentOS6下(kernel2.6以上)python2.6测试通过。直接运行脚本,默认情况下收集3秒钟数据,显示读写最高的前三个进程。如用参数可以使用命令“pythonfhip.py453”,第一个数位每次收集读写数据的间隔秒数,第二个数是打印出读写最多的n个进程,第三个为运行脚本的次数。因为参数部分写的比较简单那,所以用参数必须3个全写。。#!/bin/python#-*-coding:utf-8-*-#Filename:ind_high_io_process#Revision:1.0#Date:2013-3-8#Author:simonzhang#web:#######sys_proc_path='/proc/'re_find_process_number='^\d+$'#####通过/proc/$pid/io获取读写信息####defcollect_info():_tmp={}re_find_process_dir=re.compile(re_find_process_number)foriinos.listdir(sys_proc_path):ifre_find_process_dir.search(i):#获得进程名process_name=open("%s%s/stat"%(sys_proc_path,i),"rb").read().split("")[1]#读取io信息rw_io=open("%s%s/io"%(sys_proc_path,i),"rb").readlines()for_infoinrw_io:cut_info=strip(_info).split(':')ifstrip(cut_info[0])=="read_bytes":read_io=int(strip(cut_info[1]))ifstrip(cut_info[0])=="write_bytes":write_io=int(strip(cut_info[1]))_tmp[i]={"name":process_name,"read_bytes":read_io,"write_bytes":write_io}return_tmpdefmain(_sleep_time,_list_num):_sort_read_dict={}_sort_write_dict={}#获取系统读写数据process_info_list_frist=collect_info()time.sleep(_sleep_time)process_info_list_second=collect_info()#将读数据和写数据进行分组,写入两个字典中forloopinprocess_info_list_second.keys():second_read_v=process_info_list_second[loop]["read_bytes"]second_write_v=process_info_list_second[loop]["write_bytes"]try:frist_read_v=process_info_list_frist[loop]["read_bytes"]except:frist_read_v=0try:frist_write_v=process_info_list_frist[loop]["write_bytes"]except:frist_write_v=0#计算第二次获得数据域第一次获得数据的差_sort_read_dict[loop]=second_read_v-frist_read_v_sort_write_dict[loop]=second_write_v-frist_write_v#将读写数据进行排序sort_read_dict=sorted(_sort_read_dict.items(),key=lambda_sort_read_dict:_sort_read_dict[1],reverse=True)sort_write_dict=sorted(_sort_write_dict.items(),key=lambda_sort_write_dict:_sort_write_dict[1],reverse=True)#打印统计结果print"pidprocessread(bytes)pidprocesswrite(btyes)"for_numinrange(_list_num):read_pid=sort_read_dict[_num][0]write_pid=sort_write_dict[_num][0]res="%s"%read_pidres+=""*(8-len(read_pid))+process_info_list_second[read_pid]["name"]res+=""*(12-len(process_info_list_second[read_pid]["name"]))+"%s"%sort_read_dict[_num][1]res+=""*(12-len("%s"%sort_read_dict[_num][1]))+write_pidres+=""*(8-len(write_pid))+process_info_list_second[write_pid]["name"]res+=""*(12-len("%s"%process_info_list_second[write_pid]["name"]))+"%s"%sort_write_dict[_num][1]printresprint"\n"*1if__name__=='__main__':try:_sleep_time=sys.argv[1]except:_sleep_time=3try:_num=sys.argv[2]except:_num=3try:loop=sys.argv[3]except:loop=1foriinrange(int(loop)):main(int(_sleep_time),int(_num))如若满意,请点击【采纳答案】,如若还有问题,请点击【追问】希望我的回答对您有所帮助,望采纳!~O(∩_∩)O~

    ⑼ 如何找出Linux系统高IO的思路总结

    前言

    I/O Wait是一个需要使用高级的工具来debug问题原因,当然也有许多基本工具的高级用法。I/O wait的问题难以定位的原因是:因为我们有很多工具可以告诉你I/O 受限了,但是并没有告诉你具体是哪个进程引起的。

    1. 如何确认,是否是I/O问题导致系统缓慢

    确认是否是I/O导致的系统缓慢我们可以使用多个命令,但是,最简单的是unix的命令 top

    # top

    top - 14:31:20 up 35 min, 4 users, load average: 2.25, 1.74, 1.68

    Tasks: 71 total, 1 running, 70 sleeping, 0 stopped, 0 zombie

    Cpu(s): 2.3%us, 1.7%sy, 0.0%ni, 0.0%id, 96.0%wa, 0.0%hi, 0.0%si, 0.0%st

    Mem: 245440k total, 241004k used, 4436k free, 496k buffers

    Swap: 409596k total, 5436k used, 404160k free, 182812k cached

    从CPU这行,可以发现CPU的io wait;这里是96.0%。越高就代表CPU用于io wait的资源越多。

    2. 找出哪个磁盘正在被写入

    上边的top命令从一个整体上说明了I/O wait,但是并没有说明是哪块磁盘影响的,想知道是哪块磁盘引发的问题,可以使用另外一个命令 iostat 命令

    $ iostat -x 2 5

    avg-cpu: %user %nice %system %iowait %steal %idle

      3.66 0.00 47.64 48.69 0.00 0.00

    Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

    sda 44.50 39.27 117.28 29.32 11220.94 13126.70 332.17 65.77 462.79 9.80 2274.71 7.60 111.41

    dm-0 0.00 0.00 83.25 9.95 10515.18 4295.29 317.84 57.01 648.54 16.73 5935.79 11.48 107.02

    dm-1 0.00 0.00 57.07 40.84 228.27 163.35 8.00 93.84 979.61 13.94 2329.08 10.93 107.02

    iostat 会每2秒更新一次,一共打印5次信息, -x 的选项是打印出扩展信息

    第一个iostat 报告会打印出系统最后一次启动后的统计信息,这也就是说,在多数情况下,第一个打印出来的信息应该被忽略,剩下的报告,都是基于上一次间隔的时间。举例子来说,这个命令会打印5次,第二次的报告是从第一次报告出来一个后的统计信息,第三次是基于第二次 ,依次类推

    所以,一定记住:第一个忽略!

    在上面的例子中,sda的%utilized 是111.41%,这个很好的说明了有进程正在写入到sda磁盘中。

    除了%utilized 外,我们可以从iostat得到更加丰富的资源信息,例如每毫秒读写请求(rrqm/s & wrqm/s)),每秒读写的((r/s & w/s)。在上边的例子中,我们的项目看起来正在读写非常多的信息。这个对我们查找相应的进程非常有用。

    3. 找出导致高IO的进程

    # iotop

    Total DISK READ: 8.00 M/s | Total DISK WRITE: 20.36 M/s

      TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND

    15758 be/4 root 7.99 M/s 8.01 M/s 0.00 % 61.97 % bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

    最简单的方法就是用iotop找出哪个进程用了最多的存储资源,从上面可以看到是bonnie++。

    iotop很好用,但是不是默认安装的。

    如果没有iotop,下面的方式也可以让你有种方法缩小范围,尽快找到是哪个进程。

    ps 命令对内存和CPU有一个统计,但是他没有对磁盘I/O的统计,虽然他没有显示磁盘I/O,但是它显示进行的状态,我们可以用来知道一个进程是否正在等待I/O

    主要的进程状态有:

    PROCESS STATE CODES

    D uninterruptible sleep (usually IO)

    R running or runnable (on run queue)

    S interruptible sleep (waiting for an event to complete)

    T stopped, either by a job control signal or because it is being traced.

    W paging (not valid since the 2.6.xx kernel)

    X dead (should never be seen)

    Z defunct ("zombie") process, terminated but not reaped by its parent.

    等待I/O的进程的状态一般是“uninterruptible sleep”,或者“D”,我们可以很容易的查找到正在等待I/O的进程

    # for x in `seq 1 1 10`; do ps -eo state,pid,cmd | grep "^D"; echo "----"; sleep 5; done

    D 248 [jbd2/dm-0-8]

    D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

    ----

    D 22 [kswapd0]

    D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

    ----

    D 22 [kswapd0]

    D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

    ----

    D 22 [kswapd0]

    D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

    ----

    D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp

    上边的例子会循环的输出状态是D的进程,每5秒一次,一共10次

    从输出我们可以知道 bonnie++ 的pid是16528 ,在waiting,bonnie++看起来就是我们想找到的进程,但是,只是从它的状态,我们没有办法证明就是bonnie++引起的I/O等待。

    为了证明,我们可以可以查看/proc,每个进程目录下都有一个叫io的文件,里边保存这和iotop类似的信息。

    # cat /proc/16528/io

    rchar: 48752567

    wchar: 549961789

    syscr: 5967

    syscw: 67138

    read_bytes: 49020928

    write_bytes: 549961728

    cancelled_write_bytes: 0

    read_bytes和write_bytes是这个进程从磁盘读写的字节,在这个例子中,bonnie++进程读取了46M的数据并且写入了524MB的数据到磁盘上。

    4. 找出哪个文件正在被大量写入

    lsof 命令可以展示一个进程打开的所有文件。从这个列表中,我们可以找到哪个文件被写入。

    # lsof -p 16528

    COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

    bonnie++ 16528 root cwd DIR 252,0 4096 130597 /tmp

    <truncated>

    bonnie++ 16528 root 8u REG 252,0 501219328 131869 /tmp/Bonnie.16528

    bonnie++ 16528 root 9u REG 252,0 501219328 131869 /tmp/Bonnie.16528

    bonnie++ 16528 root 10u REG 252,0 501219328 131869 /tmp/Bonnie.16528

    bonnie++ 16528 root 11u REG 252,0 501219328 131869 /tmp/Bonnie.16528

    bonnie++ 16528 root 12u REG 252,0 501219328 131869 <strong>/tmp/Bonnie.16528</strong>

    # df /tmp

    Filesystem 1K-blocks Used Available Use% Mounted on

    /dev/mapper/workstation-root 7667140 2628608 4653920 37% /

    # pvdisplay

      --- Physical volume ---

      PV Name /dev/sda5

      VG Name workstation

      PV Size 7.76 GiB / not usable 2.00 MiB

      Allocatable yes

      PE Size 4.00 MiB

      Total PE 1986

      Free PE 8

      Allocated PE 1978

      PV UUID CLbABb-GcLB-l5z3-TCj3-IOK3-SQ2p-RDPW5S

    使用pvdisplay可以看到,pv设备就是/dev/sda5,正是我们前面找到的sda。

    参考文档:http://bencane.com/2012/08/06/troubleshooting-high-io-wait-in-linux/

    ⑽ 如何监测Linux进程的实时IO读写情况

    如何查看进程 IO 读写情况
    Linux Kernel 2.6.20 以上的内核支持进程 IO 统计,可以用类似 iotop 这样的工具来监测每个进程对 IO 操作的情况,就像用 top 来实时查看进程内存、CPU 等占用情况那样。但是对于 2.6.20 以下的 Linux 内核版本就没那么幸运了,根据 Stack Overflow 的这篇回帖 给出的方法,写了一个简单的 Python 脚本用来在 linux kernel < 2.6.20 下打印进程 IO 状况。
    Kernel < 2.6.20

    这个脚本的想法很简单,把 dmesg 的结果重定向到一个文件后再解析出来,每隔1秒钟打印一次进程 IO 读写的统计信息,执行这个脚本需要 root:
    #!/usr/bin/python
    # Monitoring per-process disk I/O activity

热点内容
php微信支付教程视频教程 发布:2025-05-14 08:59:59 浏览:201
存储服务器分类 发布:2025-05-14 08:39:01 浏览:645
xz文件解压软件 发布:2025-05-14 08:28:43 浏览:969
lua脚本学习 发布:2025-05-14 08:20:55 浏览:713
python文件删除一行 发布:2025-05-14 08:06:58 浏览:721
如何下载奥特曼高级化3安卓版 发布:2025-05-14 07:47:31 浏览:346
qml文件修改后编译未生效 发布:2025-05-14 07:31:00 浏览:331
内到内算法 发布:2025-05-14 07:29:11 浏览:34
文件夹名字不显示 发布:2025-05-14 07:27:47 浏览:775
oracle的数据库驱动jar 发布:2025-05-14 07:23:20 浏览:556