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


Reply via email to