Yesterday, one of my colleagues forwarded me the following note (from an as-of-yet unidentified third party):
----------------------- "I've listed out the main performance problems with 2.5. The point here is that, given what you're doing with DB2 Connect, Linux would be a ridiculous choice prior to a 2.6 kernel." "Yes, we benchmarked Oracle on Linux and it was faster than Windows... But that's not really saying anything, now is it? :)" ----------------------- The alleged performance flaws that he identified were: --------------------- Pre 2.6 Linux Limitations--- * High amount of "Big Kernel Locks" still being used (versus small semaphore locks) for TTY traffic, memory access, etc. (will be reduced in 2.6) * Global Locks for (I/O requests, IRQs, etc.) * No processor affinity (threads are stuck on same CPUs always) * Kernel is not pre-emptive * Buffer cache and page cache managed separately (slower) * I/O Scheduler is inefficient * Single I/O global request lock for all I/O types (raw vs sync vs...) * Old Scheduler still being used: o Global run-queue holds all runnable processes (slow when queue is long) o Reschedule scans requires full run-queue scan to find next process to run (limits SMP scalability) o Time-slice recalculation after all slices have been consumed (slow process when queue is long) o No facility for more efficient wakeup, interrupt, schedule timers o No load balancing between CPUs o Unnecessary context switches for procs / threads sleeping ---------------------- Can some of the internals gurus on this list comment on these claims and whether they are relevant to Linux under VM? I have my own speculations, but I wanted to see what the facts were. Thanks, Julian Gustasson Lead System SW Support Engineer Qwest Information Technologies
