[patch] O(1) scheduler updates, -J2

From: Ingo Molnar (mingo@elte.hu)
Date: Fri Jan 18 2002 - 13:18:10 EST


the -J2 O(1) scheduler patch is available:

    http://redhat.com/~mingo/O(1)-scheduler/sched-O1-2.5.3-pre1-J2.patch
    http://redhat.com/~mingo/O(1)-scheduler/sched-O1-2.4.17-J2.patch

Changes since -J0:

 - Ed Tomlinson: optimize wake_up_forked_process() further.

 - the -J0 patch had a broken version of the task migration code - it did
   not include all the necessery changes for task migration to work at
   all. This broke 3 or more CPU boxes. The setting of the task-migration
   IPI vector was missing. -J2test-booted on an 8-way system just fine.

 - micro-optimize wakeup: high-frequency wakeups do not call the average
   calculation code.

 - finishing touches on interactiveness:

  1) default-niceness processes can only reach 90% of the full priority
     range. This protects normal processes from nice +10 CPU hogs, and
     protects nice -20 interactive tasks (audio playback, emergency
     shells, etc.) from normal processes.

  2) updates on priority inheritance of forked children: child processes
     get 80% of the parent's priority. [it was 66% in -J0.] The difference
     is visible during high compilation load, xterms under Gnome/KDE start
     up much faster, because such startups create two new processes, thus
     the second process gets the penalty twice. With 80%, the penalty is
     just enough for the shell to stay out of the 'CPU-bound hell' of
     compilation jobs.

  3) the 0...39 'user priority' range is now split up into three areas:

        A) 'unconditionally interactive tasks' in the lower 25% range.
        B) 'CPU-bound tasks' in the high 25% range.
        C) 'conditionally interactive tasks' in the middle 50% range.

     tasks in category B) are interactive if they are 10% below their
     default priority. (ie. if they sleep more than they do run.)

the new interactivenes changes made my systems even smoother than they
were under 2.5.3-pre1. None of the interactiveness logic changes add
overhead to the fast path. (the changes are either compile-time, or are in
some slow path.) Every of the above three changes was measured to improve
interactivity in compilation workloads and other workloads.

Comments, reports, suggestions welcome. Especially the testing of
interactiveness would be great, comparing the -J2 patch against other
kernels. (stock or patched kernels, 2.4 or 2.5 kernels, older O(1)
scheduler patches, etc.)

        Ingo

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Jan 23 2002 - 21:00:27 EST