From owner-freebsd-scsi Wed Sep 6 6:50:56 2000 Delivered-To: freebsd-scsi@freebsd.org Received: from david.siemens.de (david.siemens.de [192.35.17.14]) by hub.freebsd.org (Postfix) with ESMTP id 71C6937B423 for ; Wed, 6 Sep 2000 06:50:51 -0700 (PDT) X-Envelope-Sender-Is: andre.albsmeier@mchp.siemens.de (at relayer david.siemens.de) Received: from mail3.siemens.de (mail3.siemens.de [139.25.208.14]) by david.siemens.de (8.10.1/8.10.1) with ESMTP id e86Dm9o18178; Wed, 6 Sep 2000 15:48:09 +0200 (MET DST) Received: from curry.mchp.siemens.de (curry.mchp.siemens.de [139.25.42.7]) by mail3.siemens.de (8.11.0/8.11.0) with ESMTP id e86Dm806908550; Wed, 6 Sep 2000 15:48:08 +0200 (MEST) Received: (from localhost) by curry.mchp.siemens.de (8.11.0/8.11.0) id e86Dm8o39921; Date: Wed, 6 Sep 2000 15:48:08 +0200 From: Andre Albsmeier To: Wilko Bulte Cc: Christian Weisgerber , freebsd-scsi@FreeBSD.ORG Subject: Re: Keeping a DLT4000 streaming? Message-ID: <20000906154808.A62407@curry.mchp.siemens.de> References: <8oth09$u2b$1@ganerc.mips.inka.de> <20000903154343.E564@freebie.demon.nl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: <20000903154343.E564@freebie.demon.nl>; from wkb@freebie.demon.nl on Sun, Sep 03, 2000 at 03:43:43PM +0200 X-Echelon: BND CIA NSA Mossad KGB MI6 IRA detonator nuclear assault strike Sender: owner-freebsd-scsi@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org 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