日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

linux 找出耗io的,linux根据io消耗找进程

發(fā)布時間:2025/3/20 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 找出耗io的,linux根据io消耗找进程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本方法通過perl腳本對io情況進行實時抓取,非常方便。

perl腳本下載:

wget http://aspersa.googlecode.com/svn/trunk/iodump

可將該腳本命名為iodump.sh,內(nèi)容如下:

=pod

=head1 NAME

iodump - Compute per-PID I/O stats for Linux when iotop/pidstat/iopp are not available.

=head1 SYNOPSIS

Prepare the system:

dmesg -c

/etc/init.d/klogd stop

echo 1 > /proc/sys/vm/block_dump

Start the reporting:

while true; do sleep 1; dmesg -c; done | perl iodump

CTRL-C

Stop the system from dumping these messages:

echo 0 > /proc/sys/vm/block_dump

/etc/init.d/klogd start

=head1 AUTHOR

Baron Schwartz

=cut

use strict;

use warnings FATAL => 'all';

use English qw(-no_match_vars);

use sigtrap qw(handler finish untrapped normal-signals);

my %tasks;

my $oktorun = 1;

my $line;

while ( $oktorun && (defined ($line = <>)) ) {

my ( $task, $pid, $activity, $where, $device );

( $task, $pid, $activity, $where, $device )

= $line =~ m/(\S+)\((\d+)\): (READ|WRITE) block (\d+) on (\S+)/;

if ( !$task ) {

( $task, $pid, $activity, $where, $device )

= $line =~ m/(\S+)\((\d+)\): (dirtied) inode \(.*?\) (\d+) on (\S+)/;

}

if ( $task ) {

my $s = $tasks{$pid} ||= { pid => $pid, task => $task };

++$s->{lc $activity};

++$s->{activity};

++$s->{devices}->{$device};

}

}

printf("%-15s %10s %10s %10s %10s %10s %s\n",

qw(TASK PID TOTAL READ WRITE DIRTY DEVICES));

foreach my $task (

reverse sort { $a->{activity} <=> $b->{activity} } values %tasks

) {

printf("%-15s %10d %10d %10d %10d %10d %s\n",

$task->{task}, $task->{pid},

($task->{'activity'} || 0),

($task->{'read'} || 0),

($task->{'write'} || 0),

($task->{'dirty'} || 0),

join(', ', keys %{$task->{devices}}));

}

sub finish {

my ( $signal ) = @_;

if ( $oktorun ) {

print STDERR "# Caught SIG$signal.\n";

$oktorun = 0;

}

else {

print STDERR "# Exiting on SIG$signal.\n";

exit(1);

}

}

給執(zhí)行權(quán)限

# chmod +x /root/iodump.sh

執(zhí)行腳本

# while true; do sleep 1; dmesg -c; done | perl /root/iodump.sh

等待一段時間,然后通過ctrl+c來結(jié)束腳本,就可以得到詳細的進程對應io信息。

如:

# while true; do sleep 1; dmesg -c; done | perl /root/iodump.sh

# Caught SIGINT.

TASK ? ? ? ? ? ? ? ? ? PID ? ? ?TOTAL ? ? ? READ ? ? ?WRITE ? ? ?DIRTY DEVICES

oracle ? ? ? ? ? ? ? 10941 ? ? ? 9645 ? ? ? 9645 ? ? ? ? ?0 ? ? ? ? ?0 sdb1

oracle ? ? ? ? ? ? ? 25019 ? ? ? 1726 ? ? ? ? 10 ? ? ? 1716 ? ? ? ? ?0 sdb1

oracle ? ? ? ? ? ? ? 10552 ? ? ? ?970 ? ? ? ?272 ? ? ? ?698 ? ? ? ? ?0 sdb1

kjournald ? ? ? ? ? ? 6356 ? ? ? ?613 ? ? ? ? ?0 ? ? ? ?613 ? ? ? ? ?0 sdb1

kjournald ? ? ? ? ? ? 2601 ? ? ? ?487 ? ? ? ? ?0 ? ? ? ?487 ? ? ? ? ?0 sda3

oracle ? ? ? ? ? ? ? 26100 ? ? ? ?415 ? ? ? ?415 ? ? ? ? ?0 ? ? ? ? ?0 sdb1

pdflush ? ? ? ? ? ? ? 1502 ? ? ? ?301 ? ? ? ? ?0 ? ? ? ?301 ? ? ? ? ?0 sdb1, sda3

oracle ? ? ? ? ? ? ? 10554 ? ? ? ?132 ? ? ? ? 33 ? ? ? ? 99 ? ? ? ? ?0 sdb1

oracle ? ? ? ? ? ? ? 26265 ? ? ? ? 55 ? ? ? ? 54 ? ? ? ? ?1 ? ? ? ? ?0 sdb1

oracle ? ? ? ? ? ? ? 10550 ? ? ? ? 14 ? ? ? ? ?0 ? ? ? ? 14 ? ? ? ? ?0 sdb1

oracle ? ? ? ? ? ? ? 10548 ? ? ? ? 12 ? ? ? ? ?0 ? ? ? ? 12 ? ? ? ? ?0 sdb1

oracle ? ? ? ? ? ? ? 10542 ? ? ? ? ?6 ? ? ? ? ?0 ? ? ? ? ?6 ? ? ? ? ?0 sdb1

oracle ? ? ? ? ? ? ? 10546 ? ? ? ? ?6 ? ? ? ? ?0 ? ? ? ? ?6 ? ? ? ? ?0 sdb1

oracle ? ? ? ? ? ? ? 10544 ? ? ? ? ?6 ? ? ? ? ?0 ? ? ? ? ?6 ? ? ? ? ?0 sdb1

oracle ? ? ? ? ? ? ? 10540 ? ? ? ? ?5 ? ? ? ? ?0 ? ? ? ? ?5 ? ? ? ? ?0 sdb1

參考:

總結(jié)

以上是生活随笔為你收集整理的linux 找出耗io的,linux根据io消耗找进程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。