1.2 async/io performance payoffs

From: Stewart Forster <slf@dont-contact.us>
Date: Wed, 13 May 1998 09:35:34 +1000

> How much of a performance improve in comparison to a 1.1 squid? Does the
> threading pay of?

        My experience has been that for low loads, the threading loses very
slightly (10% slower) over normal squid, because it has slightly more
overhead to consider.

        The real payoff comes when loads start to pick up. High loads incur
a great deal of disk activity. open(), read(), write(), close(), stat(), and
unlink() are all blocking calls. A select/poll on a disk FD for read/write
always returns true, even if it may block (a Unix oddity). With normal squid,
once your disks start to load up and service times start to increase, squid
will then slow down exponentially. Assuming a linear CPU slowdown for more
load, the disks also slow down and there is a kind of quadratic curve to the
speed graph after a certain point.

        The threads/async allows for a single slow disk to be slow, but not
affect the parent thread. Activity to that one disk will be slow. Further
the threads, by firing off many requests at once, allow the OS (if it's smart)
to better tune the disk access patterns, and thereby allowing better disk
throughput. beta20 actually has a bad disk access allocation algorithm, but
beta21 (coming soon) has a greatly improved algorithm that takes good advantage
of multiple disks.

        Async push back the boundary where disk load starts affecting squid
by a significant margin. It still has a performance wall, but this occurs at
perhaps 3-5 times the load which a normal squid can bear (disk contraints
only being considered here). The slowdown as load picks up is far more linear
and actually starts pushing squid into CPU bound (rather than I/O bound)
territory. A good thing in anyone's book for a heavy I/O process. Threads
also allow for better scaling potential.
        
        async is a good thing, it is hard to get right though, but the
performance payoffs are well worth it.

        Cheers,

                Stew.

-- 
Stewart Forster (Snr. Development Engineer)
connect.com.au pty ltd, Level 9, 114 Albert Rd, Sth Melbourne, VIC 3205, Aust.
Email: slf@connect.com.au   Phone: +61 3 9251-3684   Fax: +61 3 9251-3666
Received on Tue May 12 1998 - 16:41:31 MDT

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:40:09 MST