[PATCH 0/8] IO queuing and complete affinity

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-kernel@...>
Cc: <Alan.Brunelle@...>, <arjan@...>, <dgc@...>, <npiggin@...>
Date: Thursday, February 7, 2008 - 5:18 am

Hi,

Since I'll be on vacation next week, I thought I'd send this out in
case people wanted to play with it. It works here, but I haven't done
any performance numbers at all.

Patches 1-7 are all preparation patches for #8, which contains the
real changes. I'm not particularly happy with the arch implementation
for raising a softirq on another CPU, but it should be fast enough
so suffice for testing.

Anyway, this patchset is mainly meant as a playground for testing IO
affinity. It allows you to set three values per queue, see the files
in the /sys/block/<dev>/queue directory:

completion_affinity
	Only allow completions to happen on the defined CPU mask.
queue_affinity
	Only allow queuing to happen on the defined CPU mask.
rq_affinity
	Always complete a request on the same CPU that queued it.

As you can tell, there's some overlap to allow for experimentation.
rq_affinity will override completion_affinity, so it's possible to
have completions on a CPU that isn't set in that mask. The interface
is currently limited to all CPUs or a specific CPU, but the implementation
is supports (and works with) cpu masks. The logic is in
blk_queue_set_cpumask(), it should be easy enough to change this to
echo a full mask, or allow OR'ing of CPU masks when a new CPU is passed in.
For now, echo a CPU number to set that CPU, or use -1 to set all CPUs.
The default is all CPUs for no change in behaviour.

Patch set is against current git as of this morning. The code is also in
the block git repo, branch is io-cpu-affinity.

git://git.kernel.dk/linux-2.6-block.git io-cpu-affinity

-- 
Jens Axboe



--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/8] IO queuing and complete affinity, Jens Axboe, (Thu Feb 7, 5:18 am)
Re: [PATCH 0/8] IO queuing and complete affinity, Alan D. Brunelle, (Thu Feb 7, 11:16 am)
[patch] block layer: kmemcheck fixes, Ingo Molnar, (Thu Feb 7, 6:49 am)
Re: [patch] block layer: kmemcheck fixes, Linus Torvalds, (Thu Feb 7, 1:42 pm)
Re: [patch] block layer: kmemcheck fixes, Jens Axboe, (Fri Feb 8, 7:38 am)
Re: [patch] block layer: kmemcheck fixes, David Miller, (Thu Feb 7, 9:22 pm)
Re: [patch] block layer: kmemcheck fixes, Arjan van de Ven, (Fri Feb 8, 11:09 am)
Re: [patch] block layer: kmemcheck fixes, Nick Piggin, (Fri Feb 8, 6:44 pm)
Re: [patch] block layer: kmemcheck fixes, Arjan van de Ven, (Fri Feb 8, 6:56 pm)
Re: [patch] block layer: kmemcheck fixes, Nick Piggin, (Fri Feb 8, 7:58 pm)
Re: [patch] block layer: kmemcheck fixes, Linus Torvalds, (Thu Feb 7, 9:28 pm)
Re: [patch] block layer: kmemcheck fixes, Ingo Molnar, (Thu Feb 7, 3:31 pm)
Re: [patch] block layer: kmemcheck fixes, Jens Axboe, (Thu Feb 7, 4:06 pm)
Re: [patch] block layer: kmemcheck fixes, Jens Axboe, (Thu Feb 7, 1:55 pm)