[OmniOS-discuss] strange io-pattern

Doug Hughes doug at will.to
Fri Dec 13 17:15:59 UTC 2013


regarding the possibility of multi-processor shifting and counters, it
seems like that would be fairly easy to rule out (however unlikely) by
running pbind on the iostat process to keep it pegged to a specific core.


On Fri, Dec 13, 2013 at 10:38 AM, Richard Elling <
richard.elling at richardelling.com> wrote:

> On Dec 13, 2013, at 5:13 AM, Tobias Oetiker <tobi at oetiker.ch> wrote:
>
> > Hi Paul,
> >
> > Today Paul Jochum wrote:
> >
> >> Hi Tobias:
> >>
> >>     Sorry, I don't know why you are having these strang io-patterns,
> but I was wondering if you could share how you
> >> record and display this info?
> >
> > I created a little plugin for collectd to interface with iostat. I
> > guess having one for vfsstat and arcstat along the same lines would
> > give a better picture as to what users actually experience but this
> > one gives some impression as to what happens deep down.
>
> Your script seems to break this out per-device, but that isn’t clear from
> the graphs you posted. This pattern is consistent with a misbehaving
> device.
>  — richard
>
> >
> > #!/usr/bin/perl
> > my $filter = $ARGV[0] || '.+';
> >
> > my $pid = open my $iostat, "-|",
> "/usr/bin/iostat","-Tu","-xnr",int($ENV{COLLECTD_INTERVAL}) or die
> "launching iostat: $!";
> >
> > $SIG{PIPE} = 'ignore';
> > $SIG{CHLD} = 'ignore';
> > $SIG{TERM} = sub {
> >   kill 9,$pid;
> >   exit 1;
> > };
> >
> > my %data;
> > my @cols;
> > my $round = 0;
> > while (<$iostat>){
> >    chomp;
> >    my @input = split /,/;
> >    if ($#input == 0 and $input[0] =~ /^\d+$/){
> >        publish() if $round++ > 1;
> >        %data = ();
> >        next;
> >    }
> >    if ($input[-1] eq 'device'){
> >        @cols = @input;
> >        pop @cols;
> >        next;
> >    }
> >    if ($#input == $#cols+1){
> >        my $dev = pop @input;
> >        my %row;
> >        @row{@cols} = @input;
> >        $data{$dev} = \%row;
> >    };
> > }
> >
> > sub publish {
> >    $|=0;
> >    my $time = time();
> >    for my $dev (sort keys %data){
> >        next unless $dev =~ /^${filter}$/;
> >        my $d = $data{$dev};
> >        my $prefix = "PUTVAL
> $ENV{COLLECTD_HOSTNAME}/sol_iostat-$dev/sol_iostat_";
> >        print $prefix."op $time:$d->{'r/s'}:$d->{'w/s'}\n";
> >        print $prefix."byte
> $time:".($d->{'kr/s'}*1024).":".($d->{'kw/s'}*1024)."\n";
> >        print $prefix."busypct $time:$d->{'%w'}:$d->{'%b'}\n";
> >        print $prefix."wait $time:$d->{wait}\n";
> >        print $prefix."actv $time:$d->{actv}\n";
> >        print $prefix."wsvc_t $time:".($d->{wsvc_t}/1000)."\n";
> >        print $prefix."asvc_t $time:".($d->{asvc_t}/1000)."\n";
> >    }
> > }
> >
> > ---------
> > adding these new types to the types.db
> >
> > sol_iostat_op       read:GAUGE:0:U, write:GAUGE:0:U
> > sol_iostat_byte     read:GAUGE:0:U, write:GAUGE:0:U
> > sol_iostat_busypct  queue:GAUGE:0:100, disk:GAUGE:0:100
> > sol_iostat_wait     count:GAUGE:0:U
> > sol_iostat_actv     count:GAUGE:0:U
> > sol_iostat_wsvc_t   second:GAUGE:0:U
> > sol_iostat_asvc_t   second:GAUGE:0:U
> >
> > cheers
> > tobi
> >
> > --
> > Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
> > http://it.oetiker.ch tobi at oetiker.ch ++41 62 775 9902 / sb:
> -9900_______________________________________________
> > OmniOS-discuss mailing list
> > OmniOS-discuss at lists.omniti.com
> > http://lists.omniti.com/mailman/listinfo/omnios-discuss
>
> _______________________________________________
> OmniOS-discuss mailing list
> OmniOS-discuss at lists.omniti.com
> http://lists.omniti.com/mailman/listinfo/omnios-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://omniosce.org/ml-archive/attachments/20131213/b07ed659/attachment.html>


More information about the OmniOS-discuss mailing list