(In reply to comment #130) > Can you try with this simple patch applied? > > diff --git a/block/blk.h b/block/blk.h > index 6e1ed40..a145c3a 100644 > --- a/block/blk.h > +++ b/block/blk.h > @@ -5,7 +5,7 @@ > #define BLK_BATCH_TIME (HZ/50UL) > > /* Number of requests a "batching" process may submit */ > -#define BLK_BATCH_REQ 32 > +#define BLK_BATCH_REQ 1 > > extern struct kmem_cache *blk_requestq_cachep; > extern struct kobj_type blk_queue_ktype; > Hi Jens, I tried it on a 2.6.29-rc3 kernel. It made things worse for "default" config, but did help with config1. (fio "ssh" test bench) (config1 : quantum=1, slice_async_rq=1, queue_depth=1) max runt 2.6.29-rc3 default no patch 14247msec max runt 2.6.29-rc3 default patch 30833msec max runt 2.6.29-rc3 config1 no patch 7574msec max runt 2.6.29-rc3 config1 patch 6585msec Note that the results seems to indicate that the larger run times occur near the "write" job. The listings below show the runtime of the jobs (1 large write and many 2M reads executed at regular interval for most of the load, and ending with more randomly delayed jobs) in the order they were run. Note that all the read jobs are started at a 4s interval, except the last 2 jobs which are started after 50s for the 1st one, and after another 10s for the last one. Here is the listing of the 2.6.29-rc3 default no patch write: io=10240MiB, bw=56062KiB/s, iops=53, runt=191526msec read : io=2052KiB, bw=3411KiB/s, iops=141, runt= 616msec read : io=2084KiB, bw=409KiB/s, iops=16, runt= 5215msec read : io=2060KiB, bw=349KiB/s, iops=15, runt= 6031msec read : io=2060KiB, bw=445KiB/s, iops=17, runt= 4731msec read : io=2068KiB, bw=377KiB/s, iops=14, runt= 5606msec read : io=2084KiB, bw=558KiB/s, iops=23, runt= 3824msec read : io=2056KiB, bw=398KiB/s, iops=15, runt= 5279msec read : io=2048KiB, bw=328KiB/s, iops=13, runt= 6393msec read : io=2056KiB, bw=337KiB/s, iops=12, runt= 6236msec read : io=2072KiB, bw=596KiB/s, iops=23, runt= 3558msec read : io=2068KiB, bw=448KiB/s, iops=17, runt= 4723msec read : io=2052KiB, bw=342KiB/s, iops=14, runt= 6143msec read : io=2056KiB, bw=448KiB/s, iops=19, runt= 4695msec read : io=2060KiB, bw=362KiB/s, iops=14, runt= 5814msec read : io=2072KiB, bw=1202KiB/s, iops=44, runt= 1765msec read : io=2048KiB, bw=395KiB/s, iops=17, runt= 5308msec read : io=2056KiB, bw=434KiB/s, iops=17, runt= 4851msec read : io=2064KiB, bw=382KiB/s, iops=14, runt= 5521msec read : io=2072KiB, bw=412KiB/s, iops=16, runt= 5144msec read : io=2052KiB, bw=439KiB/s, iops=17, runt= 4784msec read : io=2076KiB, bw=408KiB/s, iops=15, runt= 5209msec read : io=2084KiB, bw=405KiB/s, iops=15, runt= 5263msec read : io=2052KiB, bw=379KiB/s, iops=14, runt= 5543msec read : io=2076KiB, bw=438KiB/s, iops=18, runt= 4852msec read : io=2052KiB, bw=1016KiB/s, iops=38, runt= 2068msec read : io=2056KiB, bw=227KiB/s, iops=9, runt= 9271msec read : io=2072KiB, bw=1256KiB/s, iops=48, runt= 1689msec read : io=2048KiB, bw=347KiB/s, iops=13, runt= 6036msec read : io=2068KiB, bw=594KiB/s, iops=24, runt= 3562msec read : io=2052KiB, bw=415KiB/s, iops=16, runt= 5057msec read : io=2052KiB, bw=326KiB/s, iops=14, runt= 6430msec read : io=2064KiB, bw=394KiB/s, iops=16, runt= 5362msec read : io=2068KiB, bw=280KiB/s, iops=12, runt= 7553msec read : io=2064KiB, bw=364KiB/s, iops=15, runt= 5806msec read : io=2052KiB, bw=1001KiB/s, iops=41, runt= 2098msec read : io=2084KiB, bw=490KiB/s, iops=18, runt= 4352msec read : io=2056KiB, bw=1197KiB/s, iops=51, runt= 1758msec read : io=2048KiB, bw=471KiB/s, iops=19, runt= 4444msec read : io=2052KiB, bw=158KiB/s, iops=6, runt= 13259msec read : io=2052KiB, bw=147KiB/s, iops=6, runt= 14247msec read : io=2060KiB, bw=3906KiB/s, iops=148, runt= 540msec Here is the listing of the 2.6.29-rc3 default patch write: io=10240MiB, bw=54981KiB/s, iops=52, runt=195291msec read : io=2072KiB, bw=3843KiB/s, iops=159, runt= 552msec read : io=2080KiB, bw=4302KiB/s, iops=173, runt= 495msec read : io=2064KiB, bw=276KiB/s, iops=11, runt= 7642msec read : io=2056KiB, bw=462KiB/s, iops=18, runt= 4552msec read : io=2064KiB, bw=311KiB/s, iops=12, runt= 6790msec read : io=2076KiB, bw=832KiB/s, iops=34, runt= 2554msec read : io=2052KiB, bw=298KiB/s, iops=12, runt= 7038msec read : io=2048KiB, bw=493KiB/s, iops=20, runt= 4250msec read : io=2048KiB, bw=310KiB/s, iops=12, runt= 6746msec read : io=2060KiB, bw=595KiB/s, iops=24, runt= 3542msec read : io=2068KiB, bw=280KiB/s, iops=12, runt= 7542msec read : io=2056KiB, bw=506KiB/s, iops=20, runt= 4155msec read : io=2052KiB, bw=352KiB/s, iops=13, runt= 5953msec read : io=2068KiB, bw=1778KiB/s, iops=73, runt= 1191msec read : io=2080KiB, bw=239KiB/s, iops=9, runt= 8885msec read : io=2064KiB, bw=790KiB/s, iops=31, runt= 2675msec read : io=2048KiB, bw=235KiB/s, iops=9, runt= 8900msec read : io=2052KiB, bw=395KiB/s, iops=16, runt= 5312msec read : io=2048KiB, bw=490KiB/s, iops=20, runt= 4279msec read : io=2048KiB, bw=350KiB/s, iops=14, runt= 5991msec read : io=2060KiB, bw=289KiB/s, iops=13, runt= 7296msec read : io=2060KiB, bw=392KiB/s, iops=14, runt= 5368msec read : io=2048KiB, bw=323KiB/s, iops=13, runt= 6487msec read : io=2052KiB, bw=442KiB/s, iops=17, runt= 4753msec read : io=2056KiB, bw=382KiB/s, iops=15, runt= 5506msec read : io=2052KiB, bw=299KiB/s, iops=11, runt= 7005msec read : io=2052KiB, bw=372KiB/s, iops=15, runt= 5647msec read : io=2068KiB, bw=512KiB/s, iops=18, runt= 4136msec read : io=2056KiB, bw=326KiB/s, iops=13, runt= 6453msec read : io=2060KiB, bw=765KiB/s, iops=30, runt= 2756msec read : io=2052KiB, bw=392KiB/s, iops=15, runt= 5357msec read : io=2060KiB, bw=420KiB/s, iops=19, runt= 5013msec read : io=2052KiB, bw=307KiB/s, iops=12, runt= 6838msec read : io=2056KiB, bw=724KiB/s, iops=33, runt= 2905msec read : io=2052KiB, bw=407KiB/s, iops=16, runt= 5153msec read : io=2048KiB, bw=417KiB/s, iops=15, runt= 5021msec read : io=2048KiB, bw=345KiB/s, iops=15, runt= 6069msec read : io=2048KiB, bw=451KiB/s, iops=21, runt= 4643msec read : io=2048KiB, bw=68KiB/s, iops=2, runt= 30833msec read : io=2048KiB, bw=121KiB/s, iops=5, runt= 17290msec read : io=2052KiB, bw=3876KiB/s, iops=167, runt= 542msec Here is the listing of the 2.6.29-rc3 config1 no patch write: io=10240MiB, bw=61068KiB/s, iops=58, runt=175827msec read : io=2048KiB, bw=4185KiB/s, iops=167, runt= 501msec read : io=2056KiB, bw=3814KiB/s, iops=161, runt= 552msec read : io=2056KiB, bw=448KiB/s, iops=17, runt= 4692msec read : io=2056KiB, bw=1070KiB/s, iops=42, runt= 1966msec read : io=2052KiB, bw=424KiB/s, iops=16, runt= 4946msec read : io=2076KiB, bw=512KiB/s, iops=19, runt= 4149msec read : io=2076KiB, bw=580KiB/s, iops=25, runt= 3664msec read : io=2052KiB, bw=470KiB/s, iops=18, runt= 4467msec read : io=2068KiB, bw=624KiB/s, iops=26, runt= 3390msec read : io=2060KiB, bw=929KiB/s, iops=39, runt= 2270msec read : io=2064KiB, bw=508KiB/s, iops=19, runt= 4160msec read : io=2076KiB, bw=659KiB/s, iops=26, runt= 3224msec read : io=2080KiB, bw=366KiB/s, iops=14, runt= 5819msec read : io=2064KiB, bw=1023KiB/s, iops=42, runt= 2066msec read : io=2060KiB, bw=322KiB/s, iops=13, runt= 6540msec read : io=2060KiB, bw=1383KiB/s, iops=52, runt= 1525msec read : io=2052KiB, bw=691KiB/s, iops=26, runt= 3039msec read : io=2064KiB, bw=444KiB/s, iops=20, runt= 4755msec read : io=2080KiB, bw=551KiB/s, iops=20, runt= 3860msec read : io=2084KiB, bw=743KiB/s, iops=29, runt= 2870msec read : io=2056KiB, bw=412KiB/s, iops=16, runt= 5106msec read : io=2056KiB, bw=406KiB/s, iops=15, runt= 5179msec read : io=2048KiB, bw=465KiB/s, iops=19, runt= 4507msec read : io=2060KiB, bw=446KiB/s, iops=15, runt= 4725msec read : io=2068KiB, bw=467KiB/s, iops=20, runt= 4528msec read : io=2052KiB, bw=461KiB/s, iops=18, runt= 4557msec read : io=2076KiB, bw=628KiB/s, iops=25, runt= 3385msec read : io=2052KiB, bw=518KiB/s, iops=23, runt= 4054msec read : io=2068KiB, bw=492KiB/s, iops=20, runt= 4296msec read : io=2048KiB, bw=543KiB/s, iops=21, runt= 3858msec read : io=2048KiB, bw=559KiB/s, iops=20, runt= 3750msec read : io=2064KiB, bw=646KiB/s, iops=26, runt= 3270msec read : io=2056KiB, bw=426KiB/s, iops=17, runt= 4938msec read : io=2052KiB, bw=741KiB/s, iops=29, runt= 2835msec read : io=2048KiB, bw=453KiB/s, iops=19, runt= 4621msec read : io=2072KiB, bw=579KiB/s, iops=24, runt= 3662msec read : io=2068KiB, bw=418KiB/s, iops=16, runt= 5066msec read : io=2056KiB, bw=2101KiB/s, iops=82, runt= 1002msec read : io=2072KiB, bw=280KiB/s, iops=11, runt= 7574msec read : io=2048KiB, bw=4877KiB/s, iops=190, runt= 430msec read : io=2076KiB, bw=4160KiB/s, iops=168, runt= 511msec and, for comparison, here is the listing of the 2.6.29-rc3 config1 patch write: io=10240MiB, bw=59607KiB/s, iops=56, runt=180134msec read : io=2068KiB, bw=4152KiB/s, iops=162, runt= 510msec read : io=2060KiB, bw=4185KiB/s, iops=168, runt= 504msec read : io=2064KiB, bw=508KiB/s, iops=21, runt= 4157msec read : io=2060KiB, bw=476KiB/s, iops=19, runt= 4425msec read : io=2056KiB, bw=444KiB/s, iops=18, runt= 4738msec read : io=2084KiB, bw=525KiB/s, iops=21, runt= 4063msec read : io=2072KiB, bw=481KiB/s, iops=20, runt= 4406msec read : io=2084KiB, bw=565KiB/s, iops=22, runt= 3777msec read : io=2048KiB, bw=498KiB/s, iops=20, runt= 4209msec read : io=2068KiB, bw=544KiB/s, iops=21, runt= 3888msec read : io=2080KiB, bw=389KiB/s, iops=15, runt= 5462msec read : io=2068KiB, bw=1384KiB/s, iops=55, runt= 1529msec read : io=2072KiB, bw=444KiB/s, iops=18, runt= 4774msec read : io=2064KiB, bw=320KiB/s, iops=12, runt= 6585msec read : io=2060KiB, bw=630KiB/s, iops=28, runt= 3348msec read : io=2064KiB, bw=428KiB/s, iops=15, runt= 4931msec read : io=2052KiB, bw=422KiB/s, iops=15, runt= 4973msec read : io=2056KiB, bw=480KiB/s, iops=21, runt= 4385msec read : io=2060KiB, bw=1453KiB/s, iops=61, runt= 1451msec read : io=2076KiB, bw=426KiB/s, iops=16, runt= 4983msec read : io=2052KiB, bw=735KiB/s, iops=28, runt= 2855msec read : io=2060KiB, bw=427KiB/s, iops=16, runt= 4939msec read : io=2064KiB, bw=508KiB/s, iops=19, runt= 4158msec read : io=2064KiB, bw=511KiB/s, iops=21, runt= 4134msec read : io=2052KiB, bw=538KiB/s, iops=20, runt= 3900msec read : io=2048KiB, bw=454KiB/s, iops=18, runt= 4612msec read : io=2052KiB, bw=520KiB/s, iops=21, runt= 4034msec read : io=2064KiB, bw=505KiB/s, iops=19, runt= 4183msec read : io=2052KiB, bw=414KiB/s, iops=17, runt= 5074msec read : io=2068KiB, bw=520KiB/s, iops=19, runt= 4065msec read : io=2048KiB, bw=392KiB/s, iops=15, runt= 5349msec read : io=2064KiB, bw=671KiB/s, iops=27, runt= 3148msec read : io=2068KiB, bw=551KiB/s, iops=21, runt= 3843msec read : io=2056KiB, bw=665KiB/s, iops=28, runt= 3162msec read : io=2084KiB, bw=606KiB/s, iops=23, runt= 3518msec read : io=2056KiB, bw=346KiB/s, iops=14, runt= 6076msec read : io=2056KiB, bw=452KiB/s, iops=19, runt= 4656msec read : io=2076KiB, bw=495KiB/s, iops=20, runt= 4291msec read : io=2052KiB, bw=407KiB/s, iops=17, runt= 5152msec read : io=2068KiB, bw=2267KiB/s, iops=92, runt= 934msec read : io=2064KiB, bw=4080KiB/s, iops=144, runt= 518msec I start to think that I should put more than a 4s delay between the jobs, since the duration of the reads is always around those 4s. Things become more interesting with the 50s delay probably because the read queue is empty. Mathieu