Con Kolivas [interview] has begun a new performance improving patchset for the 2.6 kernel [blog] [blog]. On Con's kernel patch homepage he says, "these are patches designed to improve system responsiveness with specific emphasis on the desktop." The patchset includes a number of interesting patches, including autoregulated virtual memory swappiness, batch scheduling, isochronous scheduling, improved support for hyperthreading, and Jens Axboe's CFQ I/O scheduler [story]. Refer to Con's patch page for a more complete explanation of each of these patches. Read on for his full release announcement.
If you're using the 2.4 kernel, Con's earlier 2.4-ck patchset [story] is now maintained by Eric Hustvedt and available for download here.
From: Con Kolivas [email blocked] To: linux-kernel Subject: 2.6.1-ck3 Date: Tue, 3 Feb 2004 14:43:21 +1100 First public 2.6 -ck patchset Download, descriptions, split out patches available here: http://kernel.kolivas.org Summary: O21int This is a very small fix for the interactivity estimator. It will be included in 2.6.2 mainline. am6 Autoregulates the virtual memory swappiness. batch7 Batch scheduling. iso1 Isochronous scheduling. htbase1 Base patch for hyperthread modifications httweak1 Tiny performance enhancements for hyperthreading htnice2 Make "nice" hyperthread smart htbatch1 Make batch scheduling hyperthread smart cfqioprio Complete Fair Queueing disk scheduler and I/O priorities schedioprio Set initial I/O priorities according to cpu scheduling policy and nice.
Not just desktop
I guess I should make it clear there is nothing specific about this patchset that makes it suitable only for a desktop. It should not cause any detriment in other settings and SCHED_ISO may be ideal for a high priority server task (like BIND).
2.6.2 RC3
Are the patches already merged in this one, or will they be only in the final 2.6.2?
O21int only
The only patch from the -ck patchset currently going into mainline is the O21int interactivity fix. It was merged at 2.6.2-rc2.
Making nice hyperthread smart and the cfq scheduler are on the cards to make it into mainline in some form in the more distant future.
As for the rest, they are unlikely.
CFQ Scheduler
Hey, using the CFQ scheduler does not diminute throughput in detriment
of latency (this way it is more suitable to desktop that databases)?
Is there any possibility that CFQ to be the default io scheduler?
Latency vs throughput
Contrary to popular belief, latency is not inversely proportional to throughput. A good design should improve both, although it is not infrequent that changes to an existing design can improve one at the detriment of the other. As for throughput results I don't think extensive benchmarking has been done yet but so far there isn't any major difference.
Apart from all that, you can boot with any elevator in -ck anyway by using the boot parameter
elevator=as (or deadline or cfq).
Thanks for your answer
There are possibility that CFQ to be the default io scheduler?
Thanks!
CFQ == default in -ck
cfq is the default I/O scheduler in -ck if you don't specify one. As for the mainline kernel it is very unlikely to become the default one since it needs a lot of performance and regression testing still, and is only available in the -mm branch anyway.
latency
Would it be worth trying the CQF IO scheduler for audio apps which are very latency sensitive (jack+ardour)? Or would it not provide much of a benefit over the anticipatory scheduler?
thanks,
AdHoc
Yes
Audio & video are areas I'm trying to improve. Isochronous scheduling is designed with this in mind to decrease cpu scheduling and disk latency. The disk latency is addressed by using the cfq scheduler and linking SCHED_ISO tasks with high I/O priorities. If any of your audio applications try to start in real time priority without root privileges they will automatically be given SCHED_ISO status for normal users. Xmms for example has a "use real time priority" option in it's preferences. Alternatively they can be started as iso scheduling manually
schedtool -I -e xmms
for example will start xmms as SCHED_ISO.
yummie
let's start compiling right away, I've been wanting to try the CFQ IO scheduler for a long time. Isochronous scheduling seems nice for games.
has anyone actually tried run
has anyone actually tried running it ???
what are your experiences ?
2.6.2-ck1
There's a problem with kernel/sched.c in the 2.6.2-ck1 patch; line 1796 needs to be moved to 1795.
Indeed
The compiler doesn't complain and it works... but you're definitely right... hmm strange. Good pick up; thanks.
So should line 1795 move down
So should line 1795 move down to 1796?
Swap
Yes, a one to one swap is what's needed.