Re: Best way to segments/requests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

Adrian McMenamin wrote:
> I am working on a driver for the CD Rom drive on the Sega Dreamcast
> (the so-called "GD Rom" drive). This device is electorically
> compatible with IDE-3 devices and has a pretty good match in terms of
> the control block registers but it implements its own packet command
> interface.
> 
> I now have a working driver but the performance is lousy.
> 
> The driver reads data off the disk using DMA and the target for the
> DMA has to be a contiguous. Therefore I have set:
> 
> 	/* using DMA so memory will need to be contiguous */
> 	blk_queue_max_hw_segments(gd.gdrom_rq, 1);
> 	/* set a large max size to get most from DMA */
> 	blk_queue_max_segment_size(gd.gdrom_rq, 0x40000);

Ah...

> ie only one segment per request but a big (for a small device) maximum
> size for the segment.
> 
> A priori I can see no performance advantage in allowing each request
> to include multiple segments because then I'd only have to reshake
> them so they went in one at a time. But from the looks of it if I do
> set the maximum number of segments to 1 then each request is limited
> to the smallest size - ie what I set in blk_queue_hardsect_size.

There just isn't much room for maneuver w/ just one segment.  Large
contiguous memory region isn't too common these days.  That said, there
was a bug recently spotted by Mark Lord which made contiguous memory
regions even rarer.  Which kernel version are you using?

> Is that right? What is the best way to go here?

If you can spare some memory and cpu cycles, preparing a contiguous
buffer and staging data there might help.  It will eat up some cpu
cycles but it won't be too much compared to PIO cycles.

-- 
tejun
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux