On Sunday 19 December 2004 2:58 am, Joe Cooper wrote: [snip]
But not by much. I tried out the Intel compiler a couple of years ago, with barely measurable (statistically insignificant) results. And while I'm sure the Intel compiler has improved in those two years, GCC probably has also. And given that the difference between a build with no optimization and a build with high optimization is also quite small, I don't foresee any compiler improvement being capable of significantly altering Squid's performance.
When you've got some free time you might want to try benchmarking again, with current compiler versions. The Intel compiler (currently v8.1, Linux version free for non-commerial use) does a pretty good job of auto-parallizing single-threaded code. GCC is improving, but they still lag Intel in Pentium4 code generation, sometime greatly.
I've been building Squid with ICC for years (on RedHat/Fedora systems), and see no downside to it. That is, the use of Intel's compiler/linker doesn't seem to reduce Squid stability vs. the GCC development tools.
The question isn't whether there is a downside, but whether there is an upside. And given Squid's architecture, I don't see that there could be a measurable difference except possibly increased memory usage. Possibly rebuilding glibc (good luck!) and the kernel could make a difference, but that is wholly unknown. Squid spends a lot of its CPU time in a poll() loop--the way poll() behaves is defined by the kernel and the library, not by Squid or the compiler used to build Squid. My point was that I'm doubtful that any kind of compiler optimization can significantly alter Squids performance, and no matter how good ICC is (and it is very good at heavy math kinds of applications) I don't think it is any different.
I agree that I/O is generally the bottleneck for Squid, but if you can get reduced CPU utilization for "free", why not?
Because you probably aren't getting reduced CPU utilization, and it probably isn't "free" (ICC-built binaries used more memory when I tested them).
As I said, I don't know how the current ICC works with Squid, as I haven't tried it in a couple of years, but I just don't see how there could be a huge difference in performance between GCC and ICC given the architecture of Squid, and its reliance on so many outside components for the CPU-hungry aspects of its operation. Maybe when I'm back in polygraph mode for the 3.0 release, possibly over the holidays, I'll give ICC another spin. So far I'm much more excited about epoll as a way to improve Squid performance in CPU-bound environments, though I haven't seen any exciting numbers from it (but I haven't tested it--some others have begun testing it, but they aren't getting convincing results yet).
That said, if you've got Squid running well in an ICC build, I'd love to see some benchmarks between it and a GCC build on the same hardware, along with some CPU usage data. Polygraph is free for download, and Alex is very generous in letting folks publish results from Open Source proxies, you just have to ask before publishing.
