Performance regressions in the kernel have been a cause of growing
concern. By some accounts, the kernel is becoming more featureful and it
remains relatively bug free, but it has been getting slower over time; this
worry was being the famous "Linux is bloated" remark from Linus at LinuxCon
in September. The subject came up a few times at the kernel summit, and
there was one brief session, led by Matthew Wilcox, where the problem was
Unfortunately, the session did not lend itself to straightforward
reporting, but your editor will try.
Matthew does a certain amount of performance testing at Intel
with the goal of keeping an eye on trends over time. For a while, they
tested RHEL releases, but the problem there is that these releases are far
too widely spread out in time, making it hard to track down any problems
which are found. So now they are testing mainline -rc kernels and are able
to find some types of performance regressions quickly.
Much of the discussion was about specific problems which have been found
and fixed. It's often surprisingly small things. A kmalloc()
call was changed to kzalloc() in one well-used path, and the
kernel got 1% slower. The addition of per-partition disk statistics cost
3%. Sometimes bigger changes also hurt: switching to the SLUB memory
allocator had a 7% cost, though they were able to fight back to "only" 2%.
And sometimes it's hard to know what will happen; the out-of-tree SLQB allocator performed very
well on older systems, but then "collapsed" on current chip sets.
Conclusions from the session were generally vague. Good performance
benchmarks are hard to come by, and some of them are proprietary with
restrictions on discussing the results. It would be nice to have a better
set of community benchmarks, but that means somebody has to actually
implement them. Also needed is hardware to run the benchmarks on; much of
this testing is done on very new and expensive equipment. Kernel
developers were asked to look at performance as a feature, but, as long as
their only feedback is from an occasional benchmark run done elsewhere, it
will be hard to stay on top of the state of that feature.
to post comments)