[OmniOS-discuss] strange io-pattern
Richard Elling
richard.elling at richardelling.com
Fri Dec 13 15:38:56 UTC 2013
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
More information about the OmniOS-discuss
mailing list