[Click] NotifierQueue on multi-threaded Click problem.

Jason Park (Joonwoo Park) jason at geninetworks.com
Sun Jul 8 21:58:01 EDT 2007


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).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: infinitereply.click
Type: application/octet-stream
Size: 281 bytes
Desc: not available
Url : https://pdos.csail.mit.edu/pipermail/click/attachments/20070708/8b2abbd9/infinitereply.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: infiniteecho.click
Type: application/octet-stream
Size: 171 bytes
Desc: not available
Url : https://pdos.csail.mit.edu/pipermail/click/attachments/20070708/8b2abbd9/infiniteecho.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: multithread.patch
Type: application/octet-stream
Size: 7085 bytes
Desc: not available
Url : https://pdos.csail.mit.edu/pipermail/click/attachments/20070708/8b2abbd9/multithread.obj


More information about the click mailing list