From: Con Kolivas <conman@kolivas.net>
To: Jim Houston <jim.houston@attbi.com>,
linux-kernel@vger.kernel.org, mingo@elte.hu, andrea@suse.de,
jim.houston@ccur.com, riel@conectiva.com.br, akpm@digeo.com
Subject: Re: [PATCH] Re: Pathological case identified from contest
Date: Sun, 20 Oct 2002 17:33:20 +1000 [thread overview]
Message-ID: <200210201733.44683.conman@kolivas.net> (raw)
In-Reply-To: <200210200319.g9K3J5s07242@linux.local>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Sun, 20 Oct 2002 01:19 pm, Jim Houston wrote:
> Reply-to: jim.houston@attbi.com
> --text follows this line--
>
> Hi Ingo,
>
> I ran into the same problems with the scehduler behaving
> badly under load and reported them in this email:
>
> http://marc.theaimsgroup.com/?l=linux-kernel&m=103133744217082&w=2
>
> I was testing with the LTP and ran into a live-lock because
> scheduler got into a stable state where it always picked the
> same processes to run. See the earlier mail for the full
> story. I exchanged a few messages with Andrea Arcangeli about
> this problem and tried a couple of his patches. They prevented
> the lockup but it got me started thinking about how to make the
> scheduler more fair.
>
> The result is the following patch. It is against 2.5.40.
>
> The patch includes:
>
> - Code to calculate a traditional unix p_cpu style run
> average. This is an exponentially decaying average
> run time. Based on the process being found running.
> I'm doing a first order aproximation for the exponential
> function.
>
> I'm punishing processes that actually get to run rather
> than rewarding proceses that sleep. The decaying average
> means that the value represents the fraction of the cpu
> the process has used. The current sleep average tends
> to clamp to the limit values.
>
> - Code which gradually raises the priority of all of
> the processes in the run queue. This increase is balanced
> by making time slices shorter for more favorable priorites.
> Rrocesses that consume there time slice with out sleeping
> are moved to a less favorable priority. This replaces
> the array switch.
>
> I have only done a little testing. I timed building the kernel
> with/without this change and it made no difference. I also tested
> with the witpid06 test which had cause the live-lock.
>
> I had been planning a few more changes but got side tracked with
> real work. I was thinking about adding some feed back which would
> adjust the rate at which the priorities of processes in the run
> queue increase. I also wanted to play with nice. The patch currently
> uses a weighted average of the prio and static_prio when it calculates
> a new effective priority.
>
> The method I use to raise the priorities of the running processes is
> to remap prio values for processes in the run queue. See the functions
> queue_prio an real_prio. Changing the value of prio_ind changes all
> of the priorities. I have not done anything to the process migration
> code so it will migrate processes with random priorities. I don't
> know if this will have any noticeable effect.
>
> I had fun playing with this. I hope others find it useful.
Hi Jim.
My problem turned out to be a bug in the pipe implementation.
Nonetheless your patch sounded interesting so I gave it a run. Hopefully I
patched it correctly to 2.5.44 as it compiled and ran ok. These are the
benchmark results with contest that were different b/w 2.5.44 and your
patched version:
process_load:
Kernel [runs] Time CPU% Loads LCPU% Ratio
2.5.44 [3] 90.9 76 32 26 1.27
2.5.44-jh [1] 186.5 37 76 63 2.61
xtar_load:
Kernel [runs] Time CPU% Loads LCPU% Ratio
2.5.44 [3] 117.0 65 1 7 1.64
2.5.44-jh [1] 141.7 54 2 8 1.98
The rest of the results were otherwise similar. It seems your patch served to
disadvantage kernel compilation in preference for more of the background
load. Process_load runs 4*num_cpus processes and context switches between
them continually, so I guess it is most obvious there where kernel
compilation will still be on the same process in that time. Not sure how much
that represents a real life situation. Xtar load is busy extracting a tar
file while trying to do a kernel compilation, and in this case there are more
unused cpu cycles with the total cpu% being lower.
Cheers,
Con.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)
iD8DBQE9slxAF6dfvkL3i1gRAkGXAJ9H7eg9JF0CBTdWSaqal7bbp61iWwCfeIal
2tgLO3WblzymxlJT0cszfDY=
=UO49
-----END PGP SIGNATURE-----
next prev parent reply other threads:[~2002-10-20 7:27 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-20 3:19 [PATCH] Re: Pathological case identified from contest Jim Houston
2002-10-20 7:33 ` Con Kolivas [this message]
2002-10-20 14:31 ` Rik van Riel
2002-10-20 14:28 ` Rik van Riel
2002-10-21 2:37 ` Jim Houston
2002-10-21 3:27 ` Rik van Riel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200210201733.44683.conman@kolivas.net \
--to=conman@kolivas.net \
--cc=akpm@digeo.com \
--cc=andrea@suse.de \
--cc=jim.houston@attbi.com \
--cc=jim.houston@ccur.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=riel@conectiva.com.br \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.