Re: [PATCH] O13int for interactivity

From: Nick Piggin (piggin@cyberone.com.au)
Date: Mon Aug 04 2003 - 22:17:51 EST


Con Kolivas wrote:

>On Tue, 5 Aug 2003 12:21, Nick Piggin wrote:
>
>>>I've already posted a better solution in O13.1
>>>
>>No, this still special-cases the uninterruptible sleep. Why is this
>>needed? What is being worked around? There is probably a way to
>>attack the cause of the problem.
>>
>
>Sure I'm open to any and all ideas. Cpu hogs occasionally do significant I/O.
>Up until that time they have been only losing sleep_avg as they have spent no
>time sleeping; and this is what gives them a lower dynamic priority. During
>uninterruptible sleep all of a sudden they are seen as sleeping even though
>they are cpu hogs waiting on I/O. Witness the old standard, a kernel compile.
>The very first time you launch a make -j something, the higher the something,
>the longer all the jobs wait on I/O, the better the dynamic priority they
>get, which they shouldn't.
>

Well I don't think the scheduler should really care about a process waiting
1 second vs a process waiting 10 seconds. The point of the dynamic priority
here is that 1 you want the process to wake up soon to respond to the IO,
and 2 you want to give it a bit of an advantage vs a non sleeping CPU hog,
right? I think a very rapidly decaying benefit vs sleep time is in order.

>
>No, this is not just a "fix the scheduler so you don't feel -j kernel
>compiles" as it happens with any cpu hog starving other tasks, and the longer
>the cpu hogs wait on I/O the worse it is. This change causes a _massive_
>improvement for that test case which usually brings the machine to a
>standstill the size of which is dependent on the number of cpu hogs and the
>size of their I/O wait. I don't think the latest incarnation should be a
>problem. In my limited testing I've not found any difference in throughput
>but I don't have a major testbed at my disposal, nor time to use one if it
>was offered which is why I requested more testing.
>
>Thoughts?
>

Well if it really is the right thing to do, it should be done with _any_
type of sleep, not just uninterruptible. But you may have just answered
your question there: "the longer cpu hogs wait on I/O the worse it is".
Change the dynamic priority boost so this is no longer the case.

I understand this is essentially what you have done, but you did it in a
way that does not allow a task to become "interactive". Try changing the
formula used to derive the priority boost?

-
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 : Thu Aug 07 2003 - 22:00:27 EST