thread accounting in libpthread
Kazuaki Oda
kaakun at highway.ne.jp
Sat Feb 19 09:00:22 PST 2005
Daniel Eischen wrote:
> On Sat, 19 Feb 2005, Kazuaki Oda wrote:
>
>> Daniel Eischen wrote:
>>
>> >On Sat, 19 Feb 2005, Kazuaki Oda wrote:
>> >
>> >>And while looking at thr_kern.c, I've had one more question.
>> >>In kse_switchout_thread, after calling thr_accounting thread is placed
>> >>at the tail of run queue or at the head of it according to
>> >>thread->slice_usec.
>> >>But in kse_check_completed, thread is just placed at the tail of
>> run queue.
>> >>Is there any reason why thread is not placed at the head of run
>> queue in
>> >>case of thread->slice_usec != -1?
>> >>
>> >>
>> >
>> >Because it already blocked and we don't want to needlessly
>> >switch out a currently running thread that hasn't used its
>> >quantum.
>>
>> Blocked? I think that completed threads are *not* blocked and they are
>> ready
>
>
> Blocked is past tense above. It _had_ blocked in the kernel
> and that gave other threads a chance to run. You don't add
> it to the head of the queue because that makes it unfair to
> the other threads that were in the queue. The default
> scheduling is SCHED_RR in libpthread and that is laid
> out by POSIX.
Sorry for my misreading. I've understood what you mean.
>
>> to run except for suspended. And, kse_check_completed could be
>> called after
>> calling kse_wait. In this case there is currently no running thread.
>
>
> kse_check_completed() is called after kse_wait(). Do you
> have local changes that removed it?
>
No, I have not changed. kse_check_completed() is called after kse_wait().
What I meant in the past e-mail was that in such case there was no
running thread,
and so we did not needlessly switch it out.
Thanks.
--------------------
Kazuaki Oda
More information about the freebsd-threads
mailing list