On Sun, Feb 03, 2008 at 10:52:52AM +0100, Nick Piggin wrote:Hi Nick, When Matthew was describing this work at an LCA presentation (not sure whether you were at that presentation or not), Zach came up with the idea that allowing the submitting application control the CPU that the io completion processing was occurring would be a good approach to try. That is, we submit a "completion cookie" with the bio that indicates where we want completion to run, rather than dictating that completion runs on the submission CPU. The reasoning is that only the higher level context really knows what is optimal, and that changes from application to application. The "complete on the submission CPU" policy _may_ be more optimal for database workloads, but it is definitely suboptimal for XFS and transaction I/O completion handling because it simply drags a bunch of global filesystem state around between all the CPUs running completions. In that case, we really only want a single CPU to be handling the completions..... (Zach - please correct me if I've missed anything) Looking at your patch - if you turn it around so that the "submission CPU" field can be specified as the "completion cpu" then I think the patch will expose the policy knobs needed to do the above. Add the bio -> rq linkage to enable filesystems and DIO to control the completion CPU field and we're almost done.... ;) Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group --
| Christoph Lameter | Re: [RFC 00/15] x86_64: Optimize percpu accesses |
| Linus Torvalds | Re: [Patch v2] Make PCI extended config space (MMCONFIG) a driver opt-in |
| Greg Kroah-Hartman | [PATCH 005/196] Chinese: add translation of SubmittingDrivers |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
git: | |
| David Miller | [GIT]: Networking |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Christoph Hellwig | Re: [PATCH 06/32] IGET: Mark iget() and read_inode() as being obsolete [try #2] |
| Gerrit Renker | [PATCH 26/37] dccp: Integration of dynamic feature activation - part 1 (socket set... |
