Thanks for the improved script.
I made a simple test, but didn't get the expected results.

ibook:/usr/share/doc/linux-wlan-ng# cat /sys/block/hda/hda2/stat
     285      570        0        0

ibook:/usr/share/doc/linux-wlan-ng# /tmp/linux26diskaccess.pl -r hda2

ibook:/usr/share/doc/linux-wlan-ng# /tmp/linux26diskaccess.pl -rb hda2
285
ibook:/usr/share/doc/linux-wlan-ng# /tmp/linux26diskaccess.pl -w hda2
570
ibook:/usr/share/doc/linux-wlan-ng# /tmp/linux26diskaccess.pl -wb hda2
0

Why doesn't '/tmp/linux26diskaccess.pl -r hda2' return '0'?

  Uwe

On Mon, Feb 26, 2007 at 07:38:41PM +0100, Francois Gouget wrote:
> Package: netmrg
> Version: 0.18.2-14
> Severity: normal
> Tags: patch
> 
> 
> When I looked at linux26diskaccess.pl I was surprised by the results.
> I would like to monitor my disk traffic in bytes per second rather than
> requests per second (the two are not correlated because of request
> merging).
> 
> So I modified linux26diskaccess.pl so it supports the -rb and -wb
> options which report these statistics.
> 
> At the same time I made some other changes:
>  * It can now monitor any disk device, not just IDE disks
>  * I tried to improve the usage message a bit
>  * I factorized the partition / raw device handling
> 
> -- System Information:
> Debian Release: 4.0
>   APT prefers testing
>   APT policy: (500, 'testing'), (500, 'stable')
> Architecture: i386 (i686)
> Shell:  /bin/sh linked to /bin/bash
> Kernel: Linux 2.6.17.8fg1
> Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
> 
> Versions of packages netmrg depends on:
> ii  adduser                    3.102         Add and remove users and groups
> ii  apache2-mpm-prefork [httpd 2.2.3-3.2     Traditional model for Apache 
> HTTPD
> ii  debconf [debconf-2.0]      1.5.11        Debian configuration management 
> sy
> ii  libc6                      2.3.6.ds1-11  GNU C Library: Shared libraries
> ii  libgcc1                    1:4.1.1-21    GCC support library
> ii  libmysqlclient15off        5.0.32-3      mysql database client library
> ii  libsnmp9                   5.2.3-7       NET SNMP (Simple Network 
> Managemen
> ii  libssl0.9.8                0.9.8c-4      SSL shared libraries
> ii  libstdc++6                 4.1.1-21      The GNU Standard C++ Library v3
> ii  libxml2                    2.6.27.dfsg-1 GNOME XML library
> ii  mysql-client-5.0 [mysql-cl 5.0.32-3      mysql database client binaries
> ii  php4                       6:4.4.4-8     server-side, HTML-embedded 
> scripti
> ii  php4-cli                   6:4.4.4-8     command-line interpreter for the 
> p
> ii  php4-mysql                 6:4.4.4-8     MySQL module for php4
> ii  rrdtool                    1.2.15-0.3    Time-series data storage and 
> displ
> ii  wwwconfig-common           0.0.48        Debian web auto configuration
> ii  zlib1g                     1:1.2.3-13    compression library - runtime
> 
> netmrg recommends no packages.
> 
> -- debconf information excluded
> 
> *** /usr/lib/netmrg/linux26diskaccess.pl
> #!/usr/bin/perl
> use strict;
> 
> ### config variables
> my $blockdev = "/sys/block";
> 
> 
> ### argument processing
> if (@ARGV != 2 or
>     $ARGV[0] !~ /^-[rw]b?$/ or
>     $ARGV[1] !~ /^\w+(?:\d+)?$/)
> {
>       print "U\n";
>       print "\n";
>       print "$0 [-r|-rb|-w|-wb] <dev(N)>\n";
>       print "\n";
>       print "Reports disk I/O statistics counters for use as a NetMRG test 
> script.\n";
>       print "\n";
>       print "Options:\n";
>       print "  -r      Report the number of read operations\n";
>       print "  -rb     Report the number of read bytes\n";
>       print "  -w      Report the number of write operations\n";
>       print "  -wb     Report the number of written bytes\n";
>       print "  dev(n)  Is a relative block device or partition name.\n";
>       print "          For instance hda, hda1 or md0\n";
>       print "\n";
>       exit 1;
> }
> 
> 
> ### figure out device/partitions
> my ($hd, $partition);
> if ($ARGV[1] =~ /^(hd\w)\d+$/)
> {
>       $partition = $ARGV[1];
>       $hd = $1;
> } # end if hd has a partition
> else
> {
>       $hd = $ARGV[1];
> } # end else hd is just the drive
> 
> 
> ### read info from system block
> 
> # read the data from the correct path
> my $path = "$blockdev/$hd";
> $path .= "/$partition" if ($partition ne "");
> $path .= "/stat";
> open(STAT, $path) || die ("U\nERROR: couldn't open $path\n\n");
> my $line = <STAT>;
> close(STAT);
> chomp($line);
> my ($read, $readb, $write, $writeb);
> if ($partition eq "")
> {
>       ($read, $readb, $write, $writeb)=(split /\s+/, $line)[0, 2, 4, 6];
> }
> else
> {
>       ($read, $readb, $write, $writeb)=split /\s+/, $line;
> }
> 
> ### output the data
> if ($ARGV[0] eq "-r")
> {
>       print "$read\n";
> }
> elsif ($ARGV[0] eq "-w")
> {
>       print "$write\n";
> }
> elsif ($ARGV[0] eq "-rb")
> {
>       $readb*=512;
>       print "$readb\n";
> }
> elsif ($ARGV[0] eq "-wb")
> {
>       $writeb*=512;
>       print "$writeb\n";
> }

-- 
  MMK GmbH, Fleyer Str. 196, 58097 Hagen
  [EMAIL PROTECTED]
  Tel: 02331 840446    Fax: 02331 843920

Attachment: signature.asc
Description: Digital signature

Reply via email to