Date: Wed, 5 Oct 2011 18:54:57 +0200 From: Riccardo Cattaneo <cattaneo.riccardo@gmail.com> To: freebsd-hackers@freebsd.org Subject: 4.4BSD timeslice management Message-ID: <127B21EE-2730-4463-8921-B79CCE2B5ECB@gmail.com>
next in thread | raw e-mail | index | archive | help
Hello, I'm looking into the code of 4.4BSD scheduler (and related files) of FreeBSD version 7.2-RELEASE on an amd64 machine in order to understand how to manage time slices. I'm trying to dynamically change the length of the time slice on a thread by thread basis to "give more priority" or "less priority" to threads. In function sched_clock (sched_4bsd.c) I found a piece of code in which thread's flags are added with TDF_NEEDRESCHED when the time slice (quantum) expires but I failed to notice any point in the code that actually preempt the thread. Adding a per-thread parameter (e.g., in struct thread) I could set TDF_NEEDRESCHED when the dynamic time slice expires but how can I be sure the thread gets preempted? Where can I set a per-thread parameter (maybe after cpu_switch?!)? Is there a timer periodically calling a sort of context switch function or the context switches happen only when triggered by the kernel code? Thanks Riccardo Cattaneo
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?127B21EE-2730-4463-8921-B79CCE2B5ECB>
