staircase scheduler v6.4 for 2.6.7-rc3
PATCH 1/1 staircase scheduler v6.4 for 2.6.7-rc3
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Here is an updated full version of the staircase scheduler (not attached for brevity of email):
http://ck.kolivas.org/patches/2.6/2.6.7-rc3/patch-2.6.7-rc3-s6.4
25 files changed, 264 insertions(+), 545 deletions(-)
Changes:
Tiny bugfixes, cleanups.
Slight tweak to tasks waiting on I/O
Massive cleanups from wli - thanks!
Comments, testing welcome
Con
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
iD8DBQFAxcvsZUg7+tp6mRURAgZFAJ4/iTCfBF/AotI70tbjPgW3xPy2TACggYgS 38J+HdFXv0lThCUzx07kNhM=
=eO0E
-----END PGP SIGNATURE-----
Quoted 8 lines · Con Kolivas
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1Here is an updated full version of the staircase scheduler (not attached for brevity of email):
http://ck.kolivas.org/patches/2.6/2.6.7-rc3/patch-2.6.7-rc3-s6.4
25 files changed, 264 insertions(+), 545 deletions(-)
There was no need to add the extra overhead of a flag to indicate that a task was queued for scheduling. Testing whether run_list is empty achieves the same thing as reliably as the old array == NULL test did.
Signature · 4 lines
Dr Peter Williams [email protected] "Learning, n. The kind of ignorance distinguishing the studious." -- Ambrose Bierce
Quoted 3 lines · Peter Williams
There was no need to add the extra overhead of a flag to indicate that a task was queued for scheduling. Testing whether
run_listis empty achieves the same thing as reliably as the old array == NULL test did.
Overhead? Doubtful. Also, that requires the use of list_del_init() while dequeueing, which is not in place now. Please do back the claim with measurements. It should be easy enough to nop out set_task_queued(), implement task_queued() via !list_empty(), and clear_task_queued() via INIT_LIST_HEAD() for a quick performance comparison. But I'd say to merge it even if there's no difference, as it's more self-contained.
-- wli
Quoted 6 lines · William Lee Irwin III
Quoted 1 line · Peter Williams
There was no need to add the extra overhead of a flag to indicate that a task was queued for scheduling. Testing whether
run_listis empty achieves the same thing as reliably as the old array == NULL test did.Overhead? Doubtful. Also, that requires the use of
list_del_init()
Yes, that's true.
Quoted 6 lines
while dequeueing, which is not in place now. Please do back the claim with measurements. It should be easy enough to nop out
set_task_queued(), implementtask_queued()via !list_empty(), andclear_task_queued()viaINIT_LIST_HEAD()for a quick performance comparison. But I'd say to merge it even if there's no difference, as it's more self-contained.
Since the principle use of testing array for NULL or not was to find out if the task was on a run list it seems silly to have a flag to determine this. All it does is provide an opportunity for the flag to not accurately reflect whether the task is really on a list or not.
It caused the number of files touched by the staircase patch to increase
by a factor of five which is another good reason to use the alternative.
Peter
Signature · 4 lines
Dr Peter Williams [email protected] "Learning, n. The kind of ignorance distinguishing the studious." -- Ambrose Bierce