[parisc-linux] [patch 2/2] backport of sba sg list management to ccio-dma

Joel Soete soete.joel at scarlet.be
Thu Oct 25 01:13:18 MDT 2007


> On Tue, Oct 23, 2007 at 06:15:34PM +0200, Joel Soete wrote:
> ...
> > This seems to be better fls then ffs like:
> > int get_iovp_order_faster(unsigned long size)
> > {
> > 	return fls((size - 1) >> (IOVP_SHIFT));
> > }
> 
> Yes, I didn't really think about fls() vs ffs().
> But you figured it out. :)
> 
> I just wanted the asm() version that's 10x faster than looping through
> and testing each bit.
> 
I attached 2 test files (GetOrder-o.c using the original kernel get_iovp_order
 routine and GetOrder-f.c using supposed faster release) and here are some
results:
# gcc -O2 -o GetOrder-o GetOrder-o.c 
# gcc -O2 -o GetOrder-f GetOrder-f.c 

# time ./GetOrder-o

real    0m40.576s
user    0m39.990s
sys     0m0.004s

# time ./GetOrder-f

real    0m1.401s
user    0m1.348s
sys     0m0.008s

# gcc -o GetOrder-o GetOrder-o.c 
# gcc -o GetOrder-f GetOrder-f.c 

# time ./GetOrder-o

real    4m54.438s
user    4m48.486s
sys     0m0.044s

# time ./GetOrder-f

real    1m22.989s
user    1m21.317s
sys     0m0.016s

I didn't check in more details the difference of results between not-optimized
and optimized (-O2) compile but it's clear it's faster ;-)

(why not push this in upstream? [I mean ./include/asm-generic/page.h])

> 
> > Even thought following test seems to be ok:
> > 	unsigned int a;
> > 	unsigned long ul;
> > 
> > 	/* for proof of concept
> > 	*/
> > 	for (ul=0; ul<536870914; ul++) {
> > 		if ( get_iovp_order(ul) !> > 			printf("get_iovp_order(%ld) get_iovp_order(ul), a);
> > 			printf("get_iovp_order_faster(%ld) > > get_iovp_order_faster(ul), a);
> > 			exit (1);
> > 		}
> > 	}
> > 
> > But what would give the kernel generic (include/asm-generic/page.h: this is
> > what get_iovp_order() is if IOVP_SHIFT=PAGE_SHIFT) get_order(0): 0?
> > the answer is 20 for paric and ia32?
> 
> I don't know offhand.
> I'm not sure we have to handle that case...or if we do, make sure it's
handled correctly in get_iovp_order().
> 
I just hope so that linux check to never call get_order(0) ;-)

> > > ...
> > > +#ifdef CCIO_MAP_STATS
> > > +		ioc->usg_pages +> > > +		ioc->usingle_calls--;   /* kluge since call is unmap_sg() */
> > > +#endif
> > >
> > > I wouldn't add MAP_STATS here.
> > > They aren't enabled in SBA becuase they impact performance too much.
> > > I expect that will always be true and would seriously consider removing
> > > MAP_STATS code from SBA as well. Timing the bitmap search is
> > > probably the only critical bit of info that really matters.
> > > And that's for developement/testing only.
> > >
> > mmm, I would so let stay here but with just additional comment to prevent to
> > activate it outside this development/testing context?
> 
> That's fine too.

In fact it would be useless as the begining of the src this #define was
already commented this way ;-)
 
> Just making a suggestion here since stats are alot less
> useful when stats interfere with the actual performance measurements.
> Reducing the stats only measuring the search time would make more sense
> to me.
> 
understand. (I will remove this too so, even thought tbh I didn't yet test
this feature)

> cheers,
> grant
> 
> 
Many tx,
    J.

PS: I play a bit with this stuff and surprisingly with latest git grab of
2.6.23, the narrow s-e disk (on LASI ncr53c710 hba) seems to be usable: I
reach to update an debian unstable installation not updated since a year
(about 430 upgrade) with just few and harmless "Bus Reset ..." and "failing
command because of reset, ..." 
---
Pack Scarlet One, ADSL 6 Mbps + Telephonie, a partir de EUR 29,95...
http://www.scarlet.be/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: GetOrder-o.c
Type: application/octet-stream
Size: 1199 bytes
Desc: not available
Url : http://lists.parisc-linux.org/pipermail/parisc-linux/attachments/20071025/a0434c58/attachment-0004.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: GetOrder-f.c
Type: application/octet-stream
Size: 1731 bytes
Desc: not available
Url : http://lists.parisc-linux.org/pipermail/parisc-linux/attachments/20071025/a0434c58/attachment-0005.obj 


More information about the parisc-linux mailing list