diff options
Diffstat (limited to 'doc/plzip.texi')
-rw-r--r-- | doc/plzip.texi | 93 |
1 files changed, 49 insertions, 44 deletions
diff --git a/doc/plzip.texi b/doc/plzip.texi index b501b9a..e13515a 100644 --- a/doc/plzip.texi +++ b/doc/plzip.texi @@ -6,8 +6,8 @@ @finalout @c %**end of header -@set UPDATED 23 May 2015 -@set VERSION 1.4-rc1 +@set UPDATED 9 July 2015 +@set VERSION 1.4 @dircategory Data Compression @direntry @@ -36,8 +36,8 @@ This manual is for Plzip (version @value{VERSION}, @value{UPDATED}). @menu * Introduction:: Purpose and features of plzip -* Program design:: Internal structure of plzip * Invoking plzip:: Command line interface +* Program design:: Internal structure of plzip * File format:: Detailed format of the compressed file * Memory requirements:: Memory required to compress and decompress * Minimum file sizes:: Minimum file sizes required for full speed @@ -77,10 +77,14 @@ availability: @itemize @bullet @item The lzip format provides very safe integrity checking and some data -recovery means. The lziprecover program can repair bit-flip errors (one -of the most common forms of data corruption) in lzip files, and provides -data recovery capabilities, including error-checked merging of damaged -copies of a file. +recovery means. The +@uref{http://www.nongnu.org/lzip/manual/lziprecover_manual.html#Data-safety,,lziprecover} +program can repair bit-flip errors (one of the most common forms of data +corruption) in lzip files, and provides data recovery capabilities, +including error-checked merging of damaged copies of a file. +@ifnothtml +@ref{Data safety,,,lziprecover}. +@end ifnothtml @item The lzip format is as simple as possible (but not simpler). The lzip @@ -148,38 +152,6 @@ you verify the compressed file with a command like @w{@samp{plzip -cd file.lz | cmp file -}}. -@node Program design -@chapter Program design -@cindex program design - -When compressing, plzip divides the input file into chunks and -compresses as many chunks simultaneously as worker threads are chosen, -creating a multi-member compressed file. - -When decompressing, plzip decompresses as many members simultaneously as -worker threads are chosen. Files that were compressed with lzip will not -be decompressed faster than using lzip (unless the @samp{-b} option was -used) because lzip usually produces single-member files, which can't be -decompressed in parallel. - -For each input file, a splitter thread and several worker threads are -created, acting the main thread as muxer (multiplexer) thread. A "packet -courier" takes care of data transfers among threads and limits the -maximum number of data blocks (packets) being processed simultaneously. - -The splitter reads data blocks from the input file, and distributes them -to the workers. The workers (de)compress the blocks received from the -splitter. The muxer collects processed packets from the workers, and -writes them to the output file. - -When decompressing from a regular file, the splitter is removed and the -workers read directly from the input file. If the output file is also a -regular file, the muxer is also removed and the workers write directly -to the output file. With these optimizations, the use of RAM is greatly -reduced and the decompression speed of large files with many members is -only limited by the number of processors available and by I/O speed. - - @node Invoking plzip @chapter Invoking plzip @cindex invoking @@ -229,7 +201,7 @@ Force overwrite of output files. @item -F @itemx --recompress -Force recompression of files whose name already has the @samp{.lz} or +Force re-compression of files whose name already has the @samp{.lz} or @samp{.tlz} suffix. @item -k @@ -346,6 +318,38 @@ invalid input file, 3 for an internal consistency error (eg, bug) which caused plzip to panic. +@node Program design +@chapter Program design +@cindex program design + +When compressing, plzip divides the input file into chunks and +compresses as many chunks simultaneously as worker threads are chosen, +creating a multi-member compressed file. + +When decompressing, plzip decompresses as many members simultaneously as +worker threads are chosen. Files that were compressed with lzip will not +be decompressed faster than using lzip (unless the @samp{-b} option was +used) because lzip usually produces single-member files, which can't be +decompressed in parallel. + +For each input file, a splitter thread and several worker threads are +created, acting the main thread as muxer (multiplexer) thread. A "packet +courier" takes care of data transfers among threads and limits the +maximum number of data blocks (packets) being processed simultaneously. + +The splitter reads data blocks from the input file, and distributes them +to the workers. The workers (de)compress the blocks received from the +splitter. The muxer collects processed packets from the workers, and +writes them to the output file. + +When decompressing from a regular file, the splitter is removed and the +workers read directly from the input file. If the output file is also a +regular file, the muxer is also removed and the workers write directly +to the output file. With these optimizations, the use of RAM is greatly +reduced and the decompression speed of large files with many members is +only limited by the number of processors available and by I/O speed. + + @node File format @chapter File format @cindex file format @@ -439,7 +443,7 @@ following: @itemize @bullet @item For compression at level -0; 1.5 MiB plus 3 times the data size -(@pxref{--data-size}). About 4.5 MiB. +(@pxref{--data-size}). Default is 4.5 MiB. @item For compression at other levels; 11 times the dictionary size plus 3 @@ -447,9 +451,10 @@ times the data size. Default is 136 MiB. @item For decompression of a regular (seekable) file to another regular file, -or for testing of a regular file; the dictionary size. Note that regular -files with more than 1024 bytes of trailing garbage are treated as -non-seekable. +or for testing of a regular file; the dictionary size. + +(Note that regular files with more than 1024 bytes of trailing garbage +are treated as non-seekable). @item For testing of a non-seekable file or of standard input; the dictionary |