Subject | Re: query-thread priority |
---|---|
Author | Rommel Abesames |
Post date | 2005-10-11T15:32:20Z |
>There's a rudimentary scheduler inside and you see what MS says: whenDisclaimer: I have no knowledge of actual code of Firebird internals
> you run a long task, other clients have to wait.
>
(I'm still just a Firebird end-user) so this might not be applicable...
I think the difference is the usage of I/O completion ports. A
pre-emptive scheduler will interrupt a task repeatedly while
cooperative scheduling combined with I/O completion ports will only
interrupt a task when the task waits on an I/O call.
This can explain why currently a long Firebird (SS) query can dominate
the server...it does not yield to other tasks while waiting for I/Os
to complete. Of course an infinite loop with no I/O in a cooperative
scheduling scheme will still tie up the server...but not heavy
I/O...which dbmss are more subject to.
Or stated another way, I surmise that Firebird currently doesnt take
advantage of threads "not doing anything productive" because they are
waiting for I/O to finish, and it burns away CPU time in context
switches and cache issues by letting the OS interrupt its threads when
they have productive things to do.
http://softwareforums.intel.com/ids/board/message?board.id=42&message.id=120
Anyway, I think Firebird is still a few major versions away from
running out of "normal" improvements to do. In the meantime, I eagerly
anticipate Vulcan =)