Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Sep 2000 15:48:08 +0200
From:      Andre Albsmeier <andre.albsmeier@mchp.siemens.de>
To:        Wilko Bulte <wkb@freebie.demon.nl>
Cc:        Christian Weisgerber <naddy@mips.inka.de>, freebsd-scsi@FreeBSD.ORG
Subject:   Re: Keeping a DLT4000 streaming?
Message-ID:  <20000906154808.A62407@curry.mchp.siemens.de>
In-Reply-To: <20000903154343.E564@freebie.demon.nl>; from wkb@freebie.demon.nl on Sun, Sep 03, 2000 at 03:43:43PM %2B0200
References:  <8oth09$u2b$1@ganerc.mips.inka.de> <20000903154343.E564@freebie.demon.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 03-Sep-2000 at 15:43:43 +0200, Wilko Bulte wrote:
> DLTs need data like hungry piranhas to keep streaming ;-) My DLT4000 generally
> does not stream. It is hooked up to a seperate AH2940UW (you generally don't
> want your disks on the same SCSI bus). Reportedly using tools like 'team' 
> should help by buffering the data. I have not tried that yet. Obviously 
> the compressibility of the data is a factor as well. See the attached script
> to get compression and error stats from the drive. In addition there is a
> mode page setting (at least on DLT7000, but I think 4000 has it too) that 
> selects 'capacity' or 'speed' mode. The drive drops out of compression mode
> in favor of keeping tape motion streaming. It does so on the fly, based
> on whether the mode page enables it or not.
> 
> Wilko

Thanks for the great script! One thing: The line 

	printf "On tape kbytes written residual = %d\n" $10

should probably be something like

	shift
	printf "On tape kbytes written residual = %d\n" $9


Otherwise, it works great.

	-Andre

> 
> > If any of you guys have a DLT4000 (or faster) tape drive, and manage
> > to keep it streaming properly _with compression enabled_, I'd like
> > to know your setup.
> 
> -- 
> Wilko Bulte  	 					wilko@freebsd.org
> 							Arnhem, the Netherlands

> #!/bin/sh
> 
> # dltinfo: get more information out of your DLT tape drive.
> #
> # (C) 1996, Wilko Bulte, wilko@freebsd.org
> #
> # Warning: This script has only been tested on a DEC TZ87 & TZ88 DLT
> #
> # You need the DLT drive's OEM manual (or similar) to make
> # sense out of some of the data reported.
> 
> # Please send any constructive comments by email to wilko@freebsd.org
> 
> Unit=2
> 
> ## camcontrol(8) setup
> Verbose="-v"
> TimeOut="-t 3"
> 
> get_write_error_log() {
> 
> 	RetVal=`camcontrol cmd -n sa -u $Unit \
> 	     $Verbose \
> 	     $Timeout \
> 	     -c "4d 0 42 0 0 0 0 0 3f 0" \
> 	     -i 63 \
> 		"{skip} *i4 \
> 		 {skip} *i4 \
> 		 {Corrected errors without substantial delay} i4 \
> 		 {skip} *i4 \
> 		 {Corrected errors with possible delay      } i4 \
> 		 {skip} *i4 \
> 		 {Total errors                              } i4 \
> 		 {skip} *i4 \
> 		 {Total errors corrected                    } i4 \
> 		 {skip} *i4 \
> 		 {Total times correction algorithm processed} i4 \
> 		 {skip} *i4 \
> 		 {Total bytes processed                     } i8 \
> 		 {skip} *i4 \
> 		 {Total uncorrected errors                  } i4"
> 	`
> 	set $RetVal
> 	echo "--- write errors ---"
> 	printf "Corrected errors without substantial delay = %d\n" $1
> 	printf "Corrected errors with possible delay = %d\n" $2
> 	printf "Total errors = %d\n" $3
> 	printf "Total errors corrected = %d\n" $4
> 	printf "Total times correction algorithm processed = %d\n" $5
> 	printf "Total bytes processed  = %d\n" $6
> 	printf "Total uncorrected errors = %d\n" $7
> }
> 
> get_read_error_log() {
> 
> 	RetVal=`camcontrol cmd -n sa -u $Unit \
> 	     $Verbose \
> 	     $Timeout \
> 	     -c "4d 0 43 0 0 0 0 0 3f 0" \
> 	     -i 63 \
> 		"{skip} *i4 \
> 		 {skip} *i4 \
> 		 {Corrected errors without substantial delay} i4 \
> 		 {skip} *i4 \
> 		 {Corrected errors with possible delay      } i4 \
> 		 {skip} *i4 \
> 		 {Total errors                              } i4 \
> 		 {skip} *i4 \
> 		 {Total errors corrected                    } i4 \
> 		 {skip} *i4 \
> 		 {Total times correction algorithm processed} i4 \
> 		 {skip} *i4 \
> 		 {Total bytes processed                     } i8 \
> 		 {skip} *i4 \
> 		 {Total uncorrected errors                  } i4"
> 	`
> 	set $RetVal
> 	echo "--- read errors ---"
>         printf "Corrected errors without substantial delay = %d\n" $1
>         printf "Corrected errors with possible delay = %d\n" $2
>         printf "Total errors = %d\n" $3
>         printf "Total errors corrected = %d\n" $4
>         printf "Total times correction algorithm processed = %d\n" $5
>         printf "Total bytes processed  = %d\n" $6
>         printf "Total uncorrected errors = %d\n" $7 
> 	
> }
> 
> get_compression_log() {
> 
> # Assumption: from the results observed in testing it lookse
> #             like the residual counts are in kBytes (and not
> #             in Mbytes as the TZ87 manual tells us).
> 
> 	RetVal=`camcontrol cmd -n sa -u $Unit \
> 	     $Verbose \
> 	     $Timeout \
> 	     -c "4d 0 72 0 0 0 0 0 4c 0" \
> 	     -i 76 \
> 		"{skip} *i4 \
>                  {skip } *i4 \
> 		 {Read compression ratio (* 100 %)       } i2 \
> 		 {skip } *i4 \
> 		 {Write compression ratio (* 100 %)      } i2 \
> 		 {skip } *i4 \
> 		 {Total host Mbytes reads                } i4 \
> 		 {skip } *i4 \
> 		 {Total host kbytes read residual        } i4 \
> 		 {skip } *i4 \
> 		 {On tape Mbytes read                    } i4 \
> 		 {skip} *i4 \
> 		 {On tape kbytes read residual           } i4 \
> 		 {skip} *i4 \
> 		 {Host requested Mbytes written          } i4 \
> 		 {skip} *i4 \
> 		 {Host requested kbytes written residual } i4 \
> 		 {skip} *i4 \
> 		 {On tape Mbytes written                 } i4 \
> 		 {skip} *i4 \
> 		 {On tape kbytes written residual        } i4 "
> 	`
> 	set $RetVal
> 	echo "--- compression statistics ---"
>         printf "Read compression ratio = %d %%\n" $1
>         printf "Write compression ratio = %d %%\n" $2
>         printf "Total host Mbytes read = %d\n" $3
>         printf "Total host kbytes read residual = %d\n" $4
>         printf "On tape Mbytes read = %d\n" $5
>         printf "On tape kbytes read residual  = %d\n" $6
>         printf "Host requested Mbytes written = %d\n" $7 
>         printf "Host requested kbytes written residual = %d\n" $8
>         printf "On tape Mbytes written = %d\n" $9
>         printf "On tape kbytes written residual = %d\n" $10
> 
> }
> 
> get_read_error_log
> echo
> get_write_error_log
> echo
> get_compression_log
> echo


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-scsi" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000906154808.A62407>