On Sun, 19 Jun 2005, Linda W wrote:
Also, of note, are optimizations that are done or not done. Does anyone
use -O3? I generally try to recompile utils at O3, -march=pentium3 and
-fomit-frame-pointers, even stripping the binary can result in small
savings in time to read and page binaries off disk.
GCC -O3 is not guaranteed to be faster than -O2.
-O3 optimizes for speed at the expense of size, which may costs you both
in more data to read from the disk when starting the application and more
CPU cache line misses where the last is usually the most important aspect
to consider.
For a very CPU intensive application -O3 may help as long as the CPU
burning pieces still fit in the CPU cache, but for most applications it
doesn't really pay off.
With squid, there are many more opportunities for parallelism, though it
isn't alway clear where bottlenecks are. For example, (these would be
along the lines of feature requests) there doesn't seem to be any easy
way to request metrics, like:
* Time spent idle: (no requests outstanding for >=
<config idle timeout, in deciseconds: (1-100) [7]> )
* Time spent not idle (active):
These are available in terms of CPU usage, both via cachemgr and snmp and
your system monitoring tools. But the scale is not always easy to
understand without studying the results in a lab.. (100% CPU usage doesn't
mean 100% usage, there is still more to give)
Request time:
* Time spent waiting for DNS lookup/request, min,ave,max: 1ms, 10ms, 150ms
This is somewhat lacking at the moment. There was some statistics
collected in the old helper based approach, but not with the internal DNS
client.
* Time waiting for a free DNS lookup thread: (total seconds) 0 (or 10 or
1200),
* Average DNS lookup thread queue depth during active times...
There is no such queue when using the internal DNS client (default). DNS
requests is sent immediately to your configured DNS server/resolver.
The only "queue" there is is the list of pending DNS queries where no
response has been received from the DNS server/resolver yet.
* Time spent waiting for initial responses from server, min, ave, max (I
believe these can be gleaned from the existing logs).
This isn't measured at the moment.
* Time spent waiting on disk cache (read, write, remove(delete)).
Not much measured here either.
* Time spent waiting on log-writes (non-buffered,synchronous): 10ms?
Nor here..
* Average request queue length during active times.
Queue length of what?
Number of concurrently running requests?
It is not like Squid processes one request at a time until completion.
There is a queue length of pending events to take care of in the event
loop, but this is usually quite small and very volatile.
Is there a squid-developers list where developers talk about what they
are working on/doing/fixing or does that get discussed here on
squid-users? Seems like a high volume list for that purpose.
There is a low volume developers list where the current and past
developers hang out. The active ones such as myself also read squid-users
and occationally respond.
Regards
Henrik