[CentOS] Slow performance

Mon Apr 30 21:47:59 UTC 2007
Scott Lamb <slamb at slamb.org>

On Apr 30, 2007, at 2:33 PM, Ashley M. Kirchner wrote:

>    So, anyone going to make sense out of that please?

Sure. If you're doing this sequentially:

     for file in *.jpg; do
         convert $file -thumbnail 200x200 > `basename $file .jpg`.th.jpg
     done

it's never going to be using more than one processor. Some of the  
time it's using processor 0, sometimes processor 5. (Keep in mind  
that those percentages are averaged over some unit of time. As one of  
my coworkers is fond of saying, at a given instant there's no such  
thing as a 50% busy CPU - it's either 100% or 0% busy.) The processor  
0 and 5 user and system numbers add up to a bit less than 100%.

You could do something like this instead:

$ cat > GNUmakefile <<EOF
SOURCES = $(wildcard *.jpg)
THUMBNAILS = $(SOURCES:%.jpg=%.th.jpg)

.PHONY: thumbnails
thumbnails: $(THUMBNAILS)

%.th.jpg: %.jpg
	convert $< -thumbnail 200x200 > $@ || (rm $@; false)

.PHONY: clean
clean:
	rm -f *.th.jpg
EOF

(note that those indentations have to be tabs, not spaces)

$ make clean
$ time make -j1
$ make clean
$ time make -j8

I'd expect the first timed make to take about eight minutes and the  
second timed make to take somewhere between one and two minutes.

Now, going back to your first post:

>    This problem is causing one of our web sites to time out because  
> it's trying to process hundreds of image files and generate  
> thumbnails, and it's taking forever to do that.  So I'm starting at  
> the bottom of the pile here, hardware.  If it turns out the  
> hardware is fine, and there's nothing else that can be done to  
> speed it up, then I'll move forward to other possible culprits,  
> such as the routines within the site scripts themselves...

You're not trying to generate thumbnails on every hit, are you? Even  
with all the might of eight processors and this RAID array, you won't  
get this task to complete in the .1 sec that usability experts say is  
the maximum acceptable page load time. You're going to have to  
precompute them. Or if you're doing it on upload and that's timing  
out, then redirect the browser to a progress bar page before  
converting or something.

-- 
Scott Lamb <http://www.slamb.org/>