Re: Scheduler question

2011-02-23 Thread Daniel O'Connor

On 04/02/2011, at 13:26, Daniel O'Connor wrote:
 I am writing a program which reads from a data acquisition chassis connected 
 to a radar via USB. The interface is a Cypress FX2 and I am communicating via 
 libusb.

I ended up writing a kernel driver (thank you hps for usb_fifo_*!) and it has 
greatly improved things which is good news for me :)

I will some of the tests suggested by various people soon, I have to wait for a 
new PC to do them though.

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
The nice thing about standards is that there
are so many of them to choose from.
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C






___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-18 Thread Daniel O'Connor

On 04/02/2011, at 13:26, Daniel O'Connor wrote:
 I only have about 10 milliseconds of buffering (96kbyte FIFO, 8Mbyte/sec) in 
 the hardware, however I have about 128Mb of USB requests queued up to libusb. 
 hps@ informed me that libusb will only queue 16kbyte (2msec) in the kernel at 
 one time although I have increased this.

We have upped the hardware FIFO size to 768kb, which is 91msec at 8Mb/sec, 
although due to the fact we only start reading out when it's 1/6th full the 
effective buffer is 75msec.

It does seem much more resilient to CPU load, however heavy disk activity on 
the same drive still stalls it for too long :(

Given the large buffering in the program it does seem very odd that it would 
stall for long enough unless both threads are slept while one is waiting for 
disk IO (which seems like a bug to me).

BTW I have changed to -current (without WITNESS).

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
The nice thing about standards is that there
are so many of them to choose from.
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C






___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-14 Thread Daniel O'Connor

On 11/02/2011, at 6:58, Matthew Dillon wrote:
   It sounds like there are at least two issues involved.
 
   The first could be a buffer cache starvation issue due to the load on
   the filesystem from the tar.  If the usb program is doing any filesystem
   operation at all, even at low bandwidths, it could be hitting blockages
   due to the disk intensive tar eating up available buffer cache buffers
   (e.g. causing an excessive ratio of dirty buffers vs clean buffers).
   This would NOT be a scheduler problem per-say, but instead a kernel
   resource management problem.

OK..
Note that my program is split into 2 threads and queues up a large number of 
buffers. One thread just calls the libusb event handler so if the main thread 
is blocked for IO it should still run.. right? :)

   The way to test this is to double-buffer or tripple-buffer the output
   via shared memory.  A pipe might not do the job if it gets stuck doing
   direct transfers (I eventually gave up trying to optimize pipes in DFly
   due to a similar problem and just run everything through a kernel buffer
   now).  Still, it may be possible to test against this particular problem
   by having the program write to a pipe and another program or fork handle
   the actual writing to the disk or filesystem.

Hmm.. in effect I have this as I write all data to disk via mbuffer and this 
did help, but it still drops out which seems to indicate to me that my libusb 
event loop thread is being stalled. 

Note that the total CPU consumed by it is very low (1%) and that thread does 
no I/O.
 
   Another way to test this is to comment out the writing in the usb program
   entirely and see if things improve.

If I write to /dev/null it works fine.

   The second issue sounds more scheduler-related.  Try running the
   usb program at nice -20?  You could even run it at a pseudo-realtime
   priority using rtprio but nice -20 had better work properly against
   a md5 or there is something seriously broken in the scheduler.

Unfortunately neither of these improve things, I am pretty surprised a nice -20 
or rtprio'd thread doesn't beat a pure CPU user doing no IO :(
 
   Dynamic priority handling is supposed to deal with this sort of thing
   automatically, particularly if the usb program is not using a lot of
   cpu, but sometimes it can't tell whether a newly-exec'd program is
   going to be interactive or batch until after it has run for a while.
 
   Tuning initial conditions after an exec for the scheduler is not an
   easy task.  Simply giving a program a more batch/bulk-run priority on
   exec and letting the dynamic priority shift it more to interactive
   operation tends to mess up interactive shells in the face of
   cpu-intensive system operation, for example.  Theoretically dynamic
   priority handling should bump up the priority for the usb program well
   beyond any initial conditions for exec once it has been running a while,
   assuming it doesn't use tons of cpu.

Hmm.. It is unfortunate the hinting mechanisms are very coarse :(

   An md5, or any single-file reading operation, would not overload the
   buffer cache.  File writing and/or multi-file operations (such as a
   tar extraction or a tar-up) can create blockages in the buffer cache.

The md5 process is just reading /dev/null - I run it to soak up the CPU because 
in production the system will be doing CPU intensive data analysis.

   It takes a considerable amount of VM/buffer-cache tuning to get those
   subsystems to pipeline properly and sometimes things can go stale and
   stop pipelining properly for months without anyone realizing it.

:(
I am waiting on a new buffer card with 8 times bigger FIFOs which should help I 
hope..

Also I am writing a kernel driver in the hope it will be more robust :)

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
The nice thing about standards is that there
are so many of them to choose from.
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C






___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-10 Thread Matthew Dillon
   It sounds like there are at least two issues involved.

   The first could be a buffer cache starvation issue due to the load on
   the filesystem from the tar.  If the usb program is doing any filesystem
   operation at all, even at low bandwidths, it could be hitting blockages
   due to the disk intensive tar eating up available buffer cache buffers
   (e.g. causing an excessive ratio of dirty buffers vs clean buffers).
   This would NOT be a scheduler problem per-say, but instead a kernel
   resource management problem.

   The way to test this is to double-buffer or tripple-buffer the output
   via shared memory.  A pipe might not do the job if it gets stuck doing
   direct transfers (I eventually gave up trying to optimize pipes in DFly
   due to a similar problem and just run everything through a kernel buffer
   now).  Still, it may be possible to test against this particular problem
   by having the program write to a pipe and another program or fork handle
   the actual writing to the disk or filesystem.

   Another way to test this is to comment out the writing in the usb program
   entirely and see if things improve.

   --

   The second issue sounds more scheduler-related.  Try running the
   usb program at nice -20?  You could even run it at a pseudo-realtime
   priority using rtprio but nice -20 had better work properly against
   a md5 or there is something seriously broken in the scheduler.

   Dynamic priority handling is supposed to deal with this sort of thing
   automatically, particularly if the usb program is not using a lot of
   cpu, but sometimes it can't tell whether a newly-exec'd program is
   going to be interactive or batch until after it has run for a while.

   Tuning initial conditions after an exec for the scheduler is not an
   easy task.  Simply giving a program a more batch/bulk-run priority on
   exec and letting the dynamic priority shift it more to interactive
   operation tends to mess up interactive shells in the face of
   cpu-intensive system operation, for example.  Theoretically dynamic
   priority handling should bump up the priority for the usb program well
   beyond any initial conditions for exec once it has been running a while,
   assuming it doesn't use tons of cpu.

   --

   An md5, or any single-file reading operation, would not overload the
   buffer cache.  File writing and/or multi-file operations (such as a
   tar extraction or a tar-up) can create blockages in the buffer cache.

   It takes a considerable amount of VM/buffer-cache tuning to get those
   subsystems to pipeline properly and sometimes things can go stale and
   stop pipelining properly for months without anyone realizing it.

-Matt
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-07 Thread Ivan Voras
On 07/02/2011 04:12, Daniel O'Connor wrote:

 On 07/02/2011, at 13:02, Ivan Voras wrote:
 I'll be looking at it on Monday, I will let you know :)

 No luck with mlock() so it wouldn't appear to be paging is the issue :(

 I'm also interested in raw device vs file system access!

 Oops, sorry.. I just tried that now but it doesn't improve things :(

Meaning: you still get jitter?

 I am writing directly to /dev/ad10 but stressing /dev/ad14 (sudo tar -cf 
 /dev/null /local0)

Can you do only one of those things? I.e. leave all the file systems
alone and just do something like 'diskinfo -vt /dev/ad14'?
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-07 Thread Daniel O'Connor

On 07/02/2011, at 21:07, Ivan Voras wrote:
 I'm also interested in raw device vs file system access!
 
 Oops, sorry.. I just tried that now but it doesn't improve things :(
 
 Meaning: you still get jitter?

Yes, well I didn't measure the read frequency but it dropped out (stopped 
streaming due to a full FIFO) no less often.

 I am writing directly to /dev/ad10 but stressing /dev/ad14 (sudo tar -cf 
 /dev/null /local0)
 
 Can you do only one of those things? I.e. leave all the file systems
 alone and just do something like 'diskinfo -vt /dev/ad14'?

OK, I wrote the data to /dev/null from USB and ran diskutil in a loop and it 
doesn't drop out.

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
The nice thing about standards is that there
are so many of them to choose from.
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C






___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-07 Thread Ivan Voras
On 7 February 2011 13:38, Daniel O'Connor docon...@gsoft.com.au wrote:

 I am writing directly to /dev/ad10 but stressing /dev/ad14 (sudo tar -cf 
 /dev/null /local0)

 Can you do only one of those things? I.e. leave all the file systems
 alone and just do something like 'diskinfo -vt /dev/ad14'?

 OK, I wrote the data to /dev/null from USB and ran diskutil in a loop and it 
 doesn't drop out.

Maybe I misunderstood you and it's a different problem than what I was
experiencing; is this a better description of your problem:

1) you have a program communicating with a USB device
2) it reads from the device and writes to a file
3) you experience stalls when you write the data recived from the USB
device to the file but only if the file system you're writing on is
also loaded by something else - heavy reads?

?
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-07 Thread Daniel O'Connor

On 07/02/2011, at 23:36, Ivan Voras wrote:
 OK, I wrote the data to /dev/null from USB and ran diskutil in a loop and it 
 doesn't drop out.
 
 Maybe I misunderstood you and it's a different problem than what I was
 experiencing; is this a better description of your problem:
 
 1) you have a program communicating with a USB device
 2) it reads from the device and writes to a file
 3) you experience stalls when you write the data recived from the USB
 device to the file but only if the file system you're writing on is
 also loaded by something else - heavy reads?
 
 ?

Yes, however CPU loading also seems to affect it.

Unfortunately I don't have a useful measurement to show the problem - ie I 
don't have a metric which correlates with the hardware FIFO filling up.

This makes the testing rather annoying :)

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
The nice thing about standards is that there
are so many of them to choose from.
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C






___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-06 Thread Daniel O'Connor

On 05/02/2011, at 12:43, Daniel O'Connor wrote:
 On 05/02/2011, at 11:09, Ivan Voras wrote:
 It doesn't allocate memory once it's going, everything is preallocated 
 before the data transfer starts.
 
 I'll have a go with mlock() and see what happens.
 
 Did you find anything interesting?
 
 I'll be looking at it on Monday, I will let you know :)

No luck with mlock() so it wouldn't appear to be paging is the issue :(

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
The nice thing about standards is that there
are so many of them to choose from.
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C






___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-06 Thread Ivan Voras
On 7 February 2011 02:41, Daniel O'Connor docon...@gsoft.com.au wrote:

 On 05/02/2011, at 12:43, Daniel O'Connor wrote:
 On 05/02/2011, at 11:09, Ivan Voras wrote:
 It doesn't allocate memory once it's going, everything is preallocated 
 before the data transfer starts.

 I'll have a go with mlock() and see what happens.

 Did you find anything interesting?

 I'll be looking at it on Monday, I will let you know :)

 No luck with mlock() so it wouldn't appear to be paging is the issue :(

I'm also interested in raw device vs file system access!
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-06 Thread Daniel O'Connor

On 07/02/2011, at 13:02, Ivan Voras wrote:
 I'll be looking at it on Monday, I will let you know :)
 
 No luck with mlock() so it wouldn't appear to be paging is the issue :(
 
 I'm also interested in raw device vs file system access!

Oops, sorry.. I just tried that now but it doesn't improve things :(

I am writing directly to /dev/ad10 but stressing /dev/ad14 (sudo tar -cf 
/dev/null /local0)

It is interesting also that if I have md5's soaking up CPU then it's much less 
likely to start streaming properly and generally bombs out straight away. If I 
start it streaming and then start md5 it stays running... (even if it's 
rtprio'd)

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
The nice thing about standards is that there
are so many of them to choose from.
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C






___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-04 Thread Ivan Voras

On 04/02/2011 03:56, Daniel O'Connor wrote:


I hooked up a logic analyser and I can see most of the time it's fairly 
regularly transferring 16k of data every 2msec.

If I load up the disk by, eg, tar -cf /dev/null /local0 I find it drops out and 
I can see gaps in the transfers until eventually the FIFO fills up and it stops.

I am wondering if this is a scheduler problem (or I am expecting too much :) in 
that it is not running my libusb thread reliably under load. The other 
possibility is that it is a USB issue, although I am looking at using 
isochronous transfers instead of bulk.


I'm surprised this isn't complained about more often - I also regularly 
see that file system activity blocks other, non-file-using processes 
which are mostly CPU and memory intensive (but since I'm not running 
realtime things, it fell under the good enough category). Maybe there 
is kind of global-ish lock of some kind which the VM or the VFS hold 
which would interfere with normal operation of other processes (maybe 
when the processes use malloc() to grow their memory?).


Could you try 2 things:

	1) instead of doing file IO, could you directly use a disk device (e.g. 
/dev/ad0), possibly with some more intensive utility than dd (e.g. 
diskinfo -vt) and see if there is any difference?


	2) if there is a difference in 1), try modifying your program to not 
use malloc() in the critical path (if applicable) and/or use mlock(2)?



___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-04 Thread Daniel O'Connor

On 04/02/2011, at 21:48, Ivan Voras wrote:
 I am wondering if this is a scheduler problem (or I am expecting too much :) 
 in that it is not running my libusb thread reliably under load. The other 
 possibility is that it is a USB issue, although I am looking at using 
 isochronous transfers instead of bulk.
 
 I'm surprised this isn't complained about more often - I also regularly see 
 that file system activity blocks other, non-file-using processes which are 
 mostly CPU and memory intensive (but since I'm not running realtime things, 
 it fell under the good enough category). Maybe there is kind of global-ish 
 lock of some kind which the VM or the VFS hold which would interfere with 
 normal operation of other processes (maybe when the processes use malloc() to 
 grow their memory?).

I guess for an interactive user anything less than 100msec is probably not 
noticeable unless it happens reasonably regularly when watching a video.

 Could you try 2 things:
 
   1) instead of doing file IO, could you directly use a disk device (e.g. 
 /dev/ad0), possibly with some more intensive utility than dd (e.g. diskinfo 
 -vt) and see if there is any difference?

OK, I'll give it a shot.

   2) if there is a difference in 1), try modifying your program to not 
 use malloc() in the critical path (if applicable) and/or use mlock(2)?

It doesn't allocate memory once it's going, everything is preallocated before 
the data transfer starts.

I'll have a go with mlock() and see what happens.

Thanks :)

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
The nice thing about standards is that there
are so many of them to choose from.
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C






___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-04 Thread Ivan Voras

On 04/02/2011 12:45, Daniel O'Connor wrote:


On 04/02/2011, at 21:48, Ivan Voras wrote:

I am wondering if this is a scheduler problem (or I am expecting too much :) in 
that it is not running my libusb thread reliably under load. The other 
possibility is that it is a USB issue, although I am looking at using 
isochronous transfers instead of bulk.


I'm surprised this isn't complained about more often - I also regularly see that file 
system activity blocks other, non-file-using processes which are mostly CPU and memory 
intensive (but since I'm not running realtime things, it fell under the good 
enough category). Maybe there is kind of global-ish lock of some kind which the VM 
or the VFS hold which would interfere with normal operation of other processes (maybe 
when the processes use malloc() to grow their memory?).


I guess for an interactive user anything less than 100msec is probably not 
noticeable unless it happens reasonably regularly when watching a video.


Could you try 2 things:

1) instead of doing file IO, could you directly use a disk device (e.g. 
/dev/ad0), possibly with some more intensive utility than dd (e.g. diskinfo 
-vt) and see if there is any difference?


OK, I'll give it a shot.


2) if there is a difference in 1), try modifying your program to not 
use malloc() in the critical path (if applicable) and/or use mlock(2)?


It doesn't allocate memory once it's going, everything is preallocated before 
the data transfer starts.

I'll have a go with mlock() and see what happens.


Did you find anything interesting?

___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler question

2011-02-04 Thread Daniel O'Connor

On 05/02/2011, at 11:09, Ivan Voras wrote:
 It doesn't allocate memory once it's going, everything is preallocated 
 before the data transfer starts.
 
 I'll have a go with mlock() and see what happens.
 
 Did you find anything interesting?

I'll be looking at it on Monday, I will let you know :)

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
The nice thing about standards is that there
are so many of them to choose from.
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C






___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Scheduler question

2011-02-03 Thread Daniel O'Connor
Hi,
I am writing a program which reads from a data acquisition chassis connected to 
a radar via USB. The interface is a Cypress FX2 and I am communicating via 
libusb.

The program starts a thread which sits in a loop doing nothing but 
libusb_handle_events_timeout() which in turn runs a callback if a transfer is 
complete. Each transfer is in a struct which has a mutex and a 'done' flag (the 
former protects the later) which is set when the callback is run by libusb.

The main thread sits in a loop waiting for the next transfer to be done and 
when it is copying data out to be further processed and then written out to 
disk and/or another process for some further mangling.

After each USB transfer is done with (ie the main thread has passed it all out 
for further processing) the main thread re-submits it to libusb.

I only have about 10 milliseconds of buffering (96kbyte FIFO, 8Mbyte/sec) in 
the hardware, however I have about 128Mb of USB requests queued up to libusb. 
hps@ informed me that libusb will only queue 16kbyte (2msec) in the kernel at 
one time although I have increased this.

I hooked up a logic analyser and I can see most of the time it's fairly 
regularly transferring 16k of data every 2msec.

If I load up the disk by, eg, tar -cf /dev/null /local0 I find it drops out and 
I can see gaps in the transfers until eventually the FIFO fills up and it stops.

I am wondering if this is a scheduler problem (or I am expecting too much :) in 
that it is not running my libusb thread reliably under load. The other 
possibility is that it is a USB issue, although I am looking at using 
isochronous transfers instead of bulk.

I just noticed that the USB controller and ATA controller share an IRQ, but I 
wouldn't expect that to cause a problem..

This is running on FreeBSD 8.1-STABLE, Core 2 Duo with ICH9 chipset.

Thanks.

--
Daniel O'Connor software and network engineer
for Genesis Software - http://www.gsoft.com.au
The nice thing about standards is that there
are so many of them to choose from.
  -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C






___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Re: Scheduler Question

2010-10-12 Thread Garrett Cooper
On Sat, Oct 9, 2010 at 4:46 PM, Eknath Venkataramani
eknath.i...@gmail.com wrote:
 DI of the FreeBSD Operating System says it's gonna refer to the BSD default
 scheduler, the 'time share scheduler' does this mean sched_4BSD.c(In the
 introduction section of Chapter 4) handles only time-share process?
 If so, then how (or where) are the kernel processes/real time process
 scheduled?

The Design and Implementation of the FreeBSD Operating System is
unfortunately extremely out of date (my edition which I think is the
latest one refers to FreeBSD 5.2). The FreeBSD scheduler was switched
over to sched_ule.c as the default scheduler in 7.1.
So I'd invest more time in determining how SCHED_ULE works rather
than SCHED_4BSD going forward (even though learning about SCHED_4BSD
is a good lesson in history of design of FreeBSD).
FWIW the algorithm of prioritization, quantization of time slices,
etc for SCHED_4BSD are discussed more in depth in the chapter.
Cheers,
-Garrett
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org


Scheduler Question

2010-10-09 Thread Eknath Venkataramani
DI of the FreeBSD Operating System says it's gonna refer to the BSD default
scheduler, the 'time share scheduler' does this mean sched_4BSD.c(In the
introduction section of Chapter 4) handles only time-share process?
If so, then how (or where) are the kernel processes/real time process
scheduled?

-- 
Eknath Venkataramani
___
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to freebsd-hackers-unsubscr...@freebsd.org