>From memory.

The code isn't trying to eliminate that race, no.  If/when it arises, and all
threads are idle, then the timeout will ensure progress.

In particular, if there is no work for -any- threads, it is desirable for at 
least
most to go idle.  As work ramps up, threads will be woken.

The next optimization, I would intuit, might be to have a leader that is 
resistant
to idle.

Matt

----- "Malahal Naineni" <mala...@us.ibm.com> wrote:

> The nfs_rpc_enqueue_req is called by the producer and 
> nfs_rpc_dequeue_req is called by the consumer. Here is the high level
> view of those functions.
> 
> In particular, if a consumer finds no request in the queue, and then
> attempts to go to sleep, but before he adds himself to the wait list 
> (before step 2b), if producer adds another request at that instant,
> the
> producer would find the wait list empty and couldn't wake up any
> consumer.
> 
> Later the consumer would add himself to the wait list and goes to
> sleep
> (in a loop actually due to timedwait call. This will continue if
> there
> was no other request coming in. Am I missing something?
> 
> nfs_rpc_dequeue_req()
> {
>         1. request = nfs_rpc_consume_req()
>         2. if (request == NULL) { /* no work to do */
>                 a) set Wqe_LFlag_WaitSync flag
>                 b) add itself to the wait list
>                 c) while not Wqe_LFlag_SyncDone {
>                         pthread_cond_timedwait(5 seconds)
>                 }
>               goto step 1; /* woke up with SyncDone */
>         }
> }
> 
> nfs_rpc_enqueue_req()
> {
>         1. add request to the list
>         2. if (wait list is not empty) {
>                 a) pick up first waiting thread.
>                 b) set Wqe_LFlag_SyncDone
>                 c) if Wqe_LFlag_WaitSync() pthread_cond_signal().
>         }
> }
> 
> 
> ------------------------------------------------------------------------------
> Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
> Get real-time metrics from all of your servers, apps and tools
> in one place.
> SourceForge users - Click here to start your Free Trial of Datadog
> now!
> http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
> _______________________________________________
> Nfs-ganesha-devel mailing list
> Nfs-ganesha-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel

-- 
Matt Benjamin
CohortFS, LLC.
315 West Huron Street, Suite 140A
Ann Arbor, Michigan 48103

http://cohortfs.com

tel.  734-761-4689 
fax.  734-769-8938 
cel.  734-216-5309 

------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
Nfs-ganesha-devel mailing list
Nfs-ganesha-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel

Reply via email to