From: Mike Christie <michaelc at cs.wisc.edu> Subject: Re: [Stgt-devel] More threads for device server Date: Sun, 04 Sep 2005 22:53:13 -0500 > >>>The current code uses work queue for performing SCSI commands (or > >>>block target's tasks). Work queue is simple and good enough for > >>>debugging, however, a single thread per CPU is not good enough (from > >>>the performance perspective). > >>> > >>>I thought about creating multiple kernel threads by hand. Are there > >>>handy APIs? > >> > >>you can create a single threaded workqueue per target or session? > > > > > > The vfs APIs work synchronously. So we need multiple threads per > > target (or session) to perform several SCSI commands simultaneously. > > > > If we always use asynchronous block I/O APIs (like AIO vfs, > > submit_bio, etc), a single threaded workqueue would be fine. > > Hey what was the submit_bio idea though? Is there a way o do that and > still get to use the systems cache? Some storage systems want to use own cache algorithm, so avoiding page cache can be useful. The following paper might interest you. http://www.usenix.org/events/fast04/tech/li.html It says that EMC Symmetric storage systems can have 4-64 GB of memory for cache. Anyway, direct I/O is handy than submit_bio, I guess. |