On Mon, 10 Jan 2011 12:04:19 -0600, Stan Hoeppner wrote:

> Camaleón put forth on 1/10/2011 8:08 AM:

>> Good. It would be nice to see the results when you finally go it
>> working the way you like ;-)
> 
> Bob's xargs suggestion got it working instantly many hours ago.  I'm not
> sure of the results you refer to.  Are you looking for something like
> "watch top" output for Cpu0 and Cpu1?  See for yourself.

Did'nt you run any test? Okay... (now downloading the sample images)

> 2.  On your dual processor, or dual core system, execute:
> 
> for k in *.JPG; do echo $k; done | xargs -I{} -P2 convert {} -resize
> 3072 {} &

I used a VM to get the closest environment as you seem to have (a low 
resource machine) and the above command (timed) gives:

real    1m44.038s
user    2m5.420s
sys     1m17.561s

It uses 2 "convert" proccesses so the files are being run on pairs.

And you can even get the job done faster if using -P8:

real    1m25.255s
user    2m1.792s
sys     0m43.563s

No need to have a quad core with HT. Nice :-)

> Now, to compare the "xargs -P" parallel process performance to standard
> serial performance, clear the temp dir and copy the original files over
> again.  Now execute:
> 
> for k in *.JPG; do convert $k -resize 3072 $k; done &

This gives:

real    2m30.007s
user    2m11.908s
sys     1m42.634s

Which is ~0.46s. of plus delay. Not that bad.

> and launch top.  You'll see only a single convert process running. 
> Again, you can wrap this with the time command if you like to compare
> total run times. What you'll find is nearly linear scaling as the number
> of convert processes is doubled, up to the point #processes equals
> #cores.  Running more processes than cores merely eats memory wastefully
> and increases total processing time.

Running more processes than real cores seems fine, did you try it?
 
> Linux is pretty efficient at scheduling multiple processes among cores
> in multiprocessor and/or multi-core systems and achieving near linear
> performance scaling.  This is one reason why "fork and forget" is such a
> popular method used for parallel programming.  All you have to do is
> fork many children and the kernel takes care of scheduling the processes
> to run simultaneously.

Yep. It handles the proccesses quite nice.

Greetings,

-- 
Camaleón


-- 
To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org 
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/pan.2011.01.10.20.11...@gmail.com

Reply via email to