Doug Ledford wrote:
> Tony Chung wrote:
> >
> ......
>
> > The scatter_gather/segments concept is due to a limitation of x86 platform that
> > only
> > allow DMA up to a 4K boundary.
>
> Not true. My driver is happy to use S/G segments far larger than 4K in size
> as long as the segments are physically contiguous. Check the SCSI clustering
> code.
>
Thank you for awakening me! I can now get sustained transfer rate of close to 15MB/s
after only adding these two lines in /etc/conf.modules:
keep
options st buffer_kbs=1024 max_sg_segs=128
write 1040384k bytes:
0.14user 6.44system 1:17.03elapsed 8%CPU (0avgtext+0avgdata 0maxresident)k
read 1 040384k bytes:
0.11user 10.46system 1:18.00elapsed 13%CPU (0avgtext+0avgdata 0maxresident)k
So apparently the extra copying from kernel space to user space is insignificant.
Now I may be a little worry about what will happened when direct DMA to user space
is supported in the future.
I think currently the st driver is capable to allocate 1024K contingous physical
memory
(through special kernel funciton) but in the case of a user space, the malloc() will
not be
able to map to a contingous physcial memory. Again this is speaking from my experience
from Solaris 7 and other Unices. There must be a reason for the folks at Sun
Microsystem
to change their page size from 8k (in Sparc platform) to 4k for x86 platform.
--
=============================
Tony Chung
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]