On Wed, 2011-09-28 at 10:33 -0700, Bart Van Assche wrote: > On Wed, Sep 28, 2011 at 7:29 PM, Eddie Wai <eddie.wai@xxxxxxxxxxxx> wrote: > > On Wed, 2011-09-28 at 08:05 -0700, Peter Zijlstra wrote: > > > I accidentally looked at all kthreads in existence on my system and > > > found I had: > > > > > > [iscsi_eh] > > > [bnx2i_thread/0] > > > [bnx2i_thread/1] > > > [bnx2i_thread/2] > > > [bnx2i_thread/3] > > > [bnx2i_thread/4] > > > [bnx2i_thread/5] > > > [bnx2i_thread/6] > > > [bnx2i_thread/7] > > > [bnx2i_thread/8] > > > [bnx2i_thread/9] > > > [bnx2i_thread/10] > > > [bnx2i_thread/11] > > > [bnx2i_thread/12] > > > [bnx2i_thread/13] > > > [bnx2i_thread/14] > > > [bnx2i_thread/15] > > > [bnx2i_thread/16] > > > [bnx2i_thread/17] > > > [bnx2i_thread/18] > > > [bnx2i_thread/19] > > > [bnx2i_thread/20] > > > [bnx2i_thread/21] > > > [bnx2i_thread/22] > > > [bnx2i_thread/23] > > > > > > This left me wondering why, because I most certainly am not using iSCSI. > > > I don't even know why its enabled in my .config (and it won't be long). > > > > > > Please fix this muck to not create useless threads. > > > > Point noted. In the current bnx2i driver, one kthread is created per > > cpu core upon module init (and destroyed upon module exit). The > > kthreads are meant only to improve I/O performance when iSCSI is > > employed. Otherwise, I agree that they should not exist. > > Why doesn't bnx2i use one of the system work queues defined in > <linux/workqueue.h> ? We defined our own kthreads instead is mainly because we felt that work queues might not have the response time we like to handle I/O completions under heavy stress environments as we migrated from tasklets. Although we really haven't yet quantified this assumption. > > $ git grep system include/linux/workqueue.h|cat > include/linux/workqueue.h: * system_wq is the one used by > schedule[_delayed]_work[_on](). > include/linux/workqueue.h: * system_long_wq is similar to system_wq > but may host long running > include/linux/workqueue.h: * system_nrt_wq is non-reentrant and > guarantees that any given work > include/linux/workqueue.h: * system_unbound_wq is unbound workqueue. > Workers are not bound to > include/linux/workqueue.h: * system_freezable_wq is equivalent to > system_wq except that it's > include/linux/workqueue.h:extern struct workqueue_struct *system_wq; > include/linux/workqueue.h:extern struct workqueue_struct *system_long_wq; > include/linux/workqueue.h:extern struct workqueue_struct *system_nrt_wq; > include/linux/workqueue.h:extern struct workqueue_struct *system_unbound_wq; > include/linux/workqueue.h:extern struct workqueue_struct *system_freezable_wq; > > Bart. > -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html