Re: [PATCH] usb: storage: scsiglue: increase transfer size limit

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

 



Hi,

Matthew Dharm <mdharm-usb@xxxxxxxxxxxxxxxxxx> writes:
> Uhh... I think this is a bad idea.  The 120K limit was chosen based on
> seeing a lot of devices which broke if you tried to transfer more.  At
> least, that's my memory.  Otherwise, it's a really goofy number.

okay, if somebody has some link pointing to that, I'd be glad to have a
look.

> I certainly wouldn't mind you increasing it in the case of a USB 3.x
> device, but not globally.

the thing is that his gives me a similar improvement on USB2 devices as
well :-) When I use this same USB3 device connected using USB2 cable, I
still see some 20%-ish improvement. It went from 33-ish to 41-ish
MB/sec.

I'll wait for a pointer to this problematic devices.

regards

> On Thu, Oct 29, 2015 at 1:21 PM, Felipe Balbi <balbi@xxxxxx> wrote:
>
>> Instead of using only 120K for transfer size, let's
>> increase it to 1024K. This has a very noticeable
>> impact on USB3 storage devices.
>>
>> The following measurements were done with v4.2 on
>> the host side and latest linux-next available at the
>> time (20151022). Following are results with default
>> and modified max_sectors. Each number is the average
>> of 100 measurements with each of the two settings.
>>
>>         Pre     244.87
>>         Post    322.10
>>
>> That's a 24% increase in throughput by just allowing
>> more sectors to transferred in a single
>> request. Considering there are other SCSI devices
>> using 2048 (and sometimes more) max_sectors, this
>> shouldn't bring any surprises to anybody other than
>> the extra memory used.
>>
>> Signed-off-by: Felipe Balbi <balbi@xxxxxx>
>> ---
>>  drivers/usb/storage/scsiglue.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/usb/storage/scsiglue.c
>> b/drivers/usb/storage/scsiglue.c
>> index dba51362d2e2..36450111e8b8 100644
>> --- a/drivers/usb/storage/scsiglue.c
>> +++ b/drivers/usb/storage/scsiglue.c
>> @@ -565,8 +565,8 @@ static const struct scsi_host_template
>> usb_stor_host_template = {
>>         /* lots of sg segments can be handled */
>>         .sg_tablesize =                 SCSI_MAX_SG_CHAIN_SEGMENTS,
>>
>> -       /* limit the total size of a transfer to 120 KB */
>> -       .max_sectors =                  240,
>> +       /* limit the total size of a transfer to 1024 KB */
>> +       .max_sectors =                  2048
>>
>>         /* merge commands... this seems to help performance, but
>>          * periodically someone should test to see which setting is more
>> --
>> 2.6.2
>>
>>
>
>
> -- 
> Matthew Dharm
> Maintainer, USB Mass Storage driver for Linux

-- 
balbi

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux