Sponsored Content
Full Discussion: Lbzip2 0.10 (Default branch)
Special Forums News, Links, Events and Announcements Software Releases - RSS News Lbzip2 0.10 (Default branch) Post 302277996 by Linux Bot on Monday 19th of January 2009 03:30:09 AM
Old 01-19-2009
Lbzip2 0.10 (Default branch)

ImageLbzip2 is a Pthreads-based parallel bzip2/bunzip2 filter, passable to GNU tar with the --use-compress-program option. It isn't restricted to regular files on input, nor output. Successful splitting for decompression isn't guaranteed, just very likely (failure is detected). Splitting in both modes and compression itself occur with an approximate 900k block size. On an Athlon-64 X2 6000+, lbzip2 was 92% faster than standard bzip2 when compressing, and 45% faster when decompressing (based on wall clock time). Lbzip2 strives to be portable by requiring UNIX 98 APIs only, besides an unmodified libbz2.License: GNU General Public License (GPL)Changes:
Testing on a 128-core HP SuperDome showed a known bottleneck in the multiple-workers decompressor to be significant on many-core machines: whenever there were fewer input blocks than cores, the work was distributed unevenly. Hence, the splitter-to-workers queue of "scan and decompress" tasks was replaced with two queues: a low priority, splitter-to-workers one of "scan" tasks, and a high priority, workers-to-workers one of "decompress" tasks. Alas, this also increased the number of context switches. The new worker broadcast conditions were formally proven in the comments.Image

Image

More...
 
IO::Async::DetachedCode(3pm)				User Contributed Perl Documentation			      IO::Async::DetachedCode(3pm)

NAME
"IO::Async::DetachedCode" - execute code asynchronously in child processes SYNOPSIS
This object is used indirectly via the "IO::Async::Loop"'s "detach_code" method. use IO::Async::Loop; my $loop = IO::Async::Loop->new; my $code = $loop->detach_code( code => sub { my ( $number ) = @_; return is_prime( $number ); } ); $code->call( args => [ 123454321 ], on_return => sub { my $isprime = shift; print "123454321 " . ( $isprime ? "is" : "is not" ) . " a prime number "; }, on_error => sub { print STDERR "Cannot determine if it's prime - $_[0] "; }, ); $loop->run; DESCRIPTION
This object class provides a legacy compatibility layer for existing code that tries to construct such an object. It should not be used for new code; see instead the IO::Async::Function object, for which this is now a wrapper. CONSTRUCTOR
$code = $loop->detach_code( %params ) This function returns a new instance of a "IO::Async::DetachedCode" object. The %params hash takes the following keys: code => CODE A block of code to call in the child process. stream marshaller These arguments are no longer used; any values passed will be ignored. workers => INT Optional integer, specifies the number of parallel workers to create. If not supplied, 1 is used. exit_on_die => BOOL setup => ARRAY Passed through to the underlying "IO::Async::Function" object. METHODS
$code->call( %params ) Calls one invocation of the contained function code block. See the "call" method on "IO::Async::Function" for more detail. $code->shutdown This method requests that the detached worker processes stop running. $n_workers = $code->workers This method in scalar context returns the number of workers currently running. @worker_pids = $code->workers This method in list context returns a list of the PID numbers of all the currently running worker processes. AUTHOR
Paul Evans <leonerd@leonerd.org.uk> perl v5.14.2 2012-10-24 IO::Async::DetachedCode(3pm)
All times are GMT -4. The time now is 02:02 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy