當前位置:首頁 » 操作系統 » 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

熱點內容
python實用代碼 發布:2025-05-13 22:19:41 瀏覽:842
dede資料庫的配置文件 發布:2025-05-13 22:19:08 瀏覽:966
給字元加密 發布:2025-05-13 22:12:32 瀏覽:972
資料庫系統實現答案 發布:2025-05-13 22:11:57 瀏覽:140
哪個軟體可以共存安卓 發布:2025-05-13 22:10:15 瀏覽:552
上傳宦妃天下野泉肉肉 發布:2025-05-13 22:10:10 瀏覽:408
洗眼睛解壓 發布:2025-05-13 21:58:28 瀏覽:272
c存儲指針 發布:2025-05-13 21:49:04 瀏覽:921
結繩編程軟體 發布:2025-05-13 21:49:03 瀏覽:850
解壓體育館 發布:2025-05-13 21:27:48 瀏覽:263