ADSM-L

Re: A query and some code...

2003-06-26 14:51:32
Subject: Re: A query and some code...
From: "Mr. Lindsay Morris" <lmorris AT SERVERGRAPH DOT COM>
To: ADSM-L AT VM.MARIST DOT EDU
Date: Thu, 26 Jun 2003 13:51:03 -0500
Allen, 2 points:
1. reclamation can busy out your tape drives in a very artificial way.
That is, if you set the reclamation threshold very aggressively, the library
will copy tape-to-tape continually trying to squeeze out wasted space.

2. If mount retention is set to 60 minutes (the default), then every mount
looks up to an hour longer than it really is.

But assuming everybody uses the standard recl treshhold of 60/40, and has
reset mount retentions, then we have dozens of samples from customer showing
average percent mount rate.
Without going back through them, 65% is on the high end, 15% the low end.

If there's enough interest, I'll go count....

-----------------------------
Mr. Lindsay Morris
Lead Architect
www.servergraph.com
512-482-6138 ext 105

> -----Original Message-----
> From: ADSM: Dist Stor Manager [mailto:ADSM-L AT VM.MARIST DOT EDU]On Behalf Of
> asr AT UFL DOT EDU
> Sent: Thursday, June 26, 2003 1:40 PM
> To: ADSM-L AT VM.MARIST DOT EDU
> Subject: A query and some code...
>
>
> I'm trying to collect data on what "average" utilization rates are on tape
> devices.  I'm attempting to support or erode the case "We need more" :)
>
> One thing that would be an interesting number (I decided) was the percent
> utilization of tape mount points.  So I whipped out my PERL, and...
>
> Submitted for your approval (and hopefully execution!) please
> find enclosed
> "mountpct", a script that takes the output of a 'q actlog', and
> makes a rough
> calculation of the tape mount time available and used.
>
> I start counting with the first recorded mount, and stop at the
> last recorded
> unmount.
>
> Anyone who's willing, please consider running this against a
> sizable chunk of
> "q actlog" with tab formatting.  I collect the actlogs every day
> and ferret
> them away, so I've got gobs of them, but you can do something like
>
>
> dsmadmc -id=[something]  \
>         -password=[something]  \
>         -tab  \
>         "q actlog begint=00:00 begind=-14 days" \
>         | ./mountpct
>
>
> here's mine...  (I'm only retaining 10 days at the moment)
>
> DRIVE_A: 12351.100 minutes.
> DRIVE_B: 11503.333 minutes.
> DRIVE_C: 11421.667 minutes.
> DRIVE_D: 11531.550 minutes.
>  Earliest mount occurred : Mon Jun 16  9:00:12 EDT 2003
>  Last unmount occurred : Thu Jun 26 14:19:48 EDT 2003
>  Actlog covers 14719.600 minutes.
>  With 4 devices, 58878.4 device-minutes available.
>  of which 46807.65 used. (79.499 %)
>
>
>
>
> - Allen S. Rout
>
>
>
>
>
>
> #!/usr/local/bin/perl -- -*-Perl-*-
>
> use Time::ParseDate;
> use Time::CTime;
>
> my $verbose = 1;
> my $spans = {};
> my $working = {};
> my $firstmount  = 6000000000;
> my $lastunmount = 0;
>
> while (<>)
>   {
> #    print;
>     next unless /ANR8468I|ANR8337I/;
>
>     my @f = split(/\s+/);
>     my $t = parsedate("$f[0] $f[1]");
>     my $to = ctime($t);
>
>     if ($f[2] eq "ANR8337I")
>       {# Mount req.
>         $drive = $f[9];
>         if ($working->{$drive})
>           { warn "dual mount recorded?\n"; }
>         else
>           {
>             $working->{$drive} = $t;
>             $firstmount = $t if ( $t < $firstmount ) ;
>           }
>       }
>     elsif ( $f[2] eq "ANR8468I")
>       {# Dismount
>         $drive = $f[9];
>         if ($working->{$drive})
>           {
>             my $begin = $working->{$drive};
>             my $end = $t;
>             $lastunmount = $t if ($t > $lastunmount);
>             my $run = $end - $begin;
>             $spans->{$drive} = 0 unless defined ($spans->{$drive});
>             $spans->{$drive} += $run;
>             delete $working->{$drive}
>           }
>         else
>           { warn "dual (or initial) dismount recorded?\n";  }
>
>       }
>     else
>       {
>         #Huh?
>         die "How'd we get here?\n";
>       }
>   };
>
>
> my $count = 0;
> my $tmin = 0;
>
> foreach $s ( sort keys %$spans )
>   {
>     $count++;
>     my $c = $spans->{$s};
>     my $min = sprintf("%.3f",$c / 60);
>
>     $tmin += $min;
>     print "$s: $min minutes.\n";
>
>   }
>
> print " Earliest mount occurred : ",ctime($firstmount);
> print " Last unmount occurred : ",ctime($lastunmount);
>
> my $range;
>
> $range = $lastunmount - $firstmount;
> $range /= 60;
> $range = sprintf("%.3f",$range);
>
> my $pct;
>
> $pct = sprintf("%.3f",$tmin/($range * $count) * 100);
>
>
> print " Actlog covers $range minutes.\n";
> print " With $count devices, ",$range * $count," device-minutes
> available.\n";
> print " of which $tmin used. ($pct %)\n";
>
>
> sub pm
>   {
>     my $n = shift;
>   }
>

<Prev in Thread] Current Thread [Next in Thread>