I can't really point to a problem area in Apache 2.0 yet since we are still
in the early stages of our port to NetWare. But you can do a quick search in
the 1.3 tree for calls to ThreadSwitch() and ThreadSwitchWithDelay() that are
currently scattered in the source. There aren't a lot of them but a few were
entered in some heavily hit areas just to make sure that things run smoothly.
The reason why I bring this up now is because I hit a "CPU Hog" error on my
NetWare server while trying to run the TESTMEM.c memory api tester. After
hacking in a call to NXThreadYield, everything seemed to work much better.
thanks,
Brad
>>> "William A. Rowe, Jr." <[EMAIL PROTECTED]> Monday, July 30, 2001 2:44:30 PM
>>> >>>
From: "Justin Erenkrantz" <[EMAIL PROTECTED]>
Sent: Monday, July 30, 2001 3:15 PM
> On Mon, Jul 30, 2001 at 12:54:18PM -0600, Brad Nicholes wrote:
> > I would like to propose adding the function apr_thread_yield() as part
> > of the threading API's. The reason for this to to
allow applications to force a thread to yield the processor during a compute
bound operation. On the NetWare platform, not yielding
the processor in a timely fashion can cause the entire server to become
sluggish. The implementation of this routine for NetWare
would be as simple as:
> >
> > void apr_thread_yield()
> > {
> > NXThreadYield();
> > }
>
> I'm not sure that this is a good idea (esp. considering that sched_yield
> on POSIX systems is not well-defined - it depends on your scheduling
> policy).
>
> On most OSes, this should be a no-op (as the OS should be handling
> this via preemption). I'm not a fan of adding apr_thread_yield()
> throughout to support a poor OS scheduler.
>
> So, -0 from me (I won't stop you, but I don't like it). -- justin
Actually, this could be very, very efficient from the perspective of WinNT
fibers-as-threads
or any other pseudo-threading model.
That is, fibers are user-domain scheduled, and as such, this could work quite
well.
I wish we had some WebTEN guys on this list to comment, since I recall
MacOS(<X) was
not really preemptive either.
I agree they will inevitably cruft-up any app. Brad, what are the pain points
that
you need addressed here? Are the Netware threads really that non-preemptive
that it's
causing problems today in 1.3?
Bill