[Click] NotifierQueue on multi-threaded Click problem.

Eddie Kohler kohler at cs.ucla.edu
Wed Aug 29 19:32:20 EDT 2007


Hi Jason,

The patch I recently sent regarding Task::_pending did not go far enough.
However, I'd really like to avoid holding the _task_lock for the whole
time the
pending list is being processed.  (This is the "Fix Master's lock."
portion of
your patch.)  Currently checked in is a different approach, which I
think will suffice.
Would you like to test it?

The commit:
http://www.read.cs.ucla.edu/gitweb?p=click;a=commit;h=7ec20ef8190937aaa62c3aeb57af9d3e51ecf659

Eddie


Jason Park (Joonwoo Park) wrote:
> Hi.
> Recently I tried multi-threaded Click to get more performance.
> But I got stopped queue in a few seconds.
> For the test, I connected two click installed machine with e1000 gigabit
> directly as sender and replier.
> The replier made problem on multi-threaded click that run_task() of
> ToDevice() won't be called any more.
> 
> I worked patch for the problem and it contains.
> - FullNoteQueue, NotifierQueue
>  The spinlock_bh needed because of push and pull can be called
> concurrently from softirq.
>   But I didn't work for SimpleQueue, it might lock needed too.
> - Task
>   I think that the member _pending should be atomic, in more race
> conditional situation, it can be problem. (You can try SLEEPNIESS_TRIGGER=1)
> - Etc.
>   Replace member function of SpinlockIRQ with the things from linux to
> disable preempt when irq disabled. (But I didn't set CONFIG_PREEMPT for
> this test) 
>   Add class SpinlockBH.
>   Fix Master's lock. (Eddie, Am I right?)
>   I'm running linux 2.6.19.2 SMP.
> 
> I'll be pleased if this patch works.
> 
> Jason Park (Joonwoo Park).



More information about the click mailing list