On Thu, 5 Sep 2013, Victor Leschuk wrote: > Hello all, > > I have recently faced a performance problem with usb gadget emulated > USB flash drive. It is working fine except for very low performance. > > I use a 4Gb file, created by dd and created a ext2 or vfat (tried > both) partition on it. Than I mount it using the following command > sequence: > > ------------------------------ > # modprobe dummy_hcd is_super_speed=1 # I tried is_high_speed=1, and > no parameter too > # modprobe g_mass_storage file=/home/del/img/flash stall=0 # tried w/o > stall=0 too > # mount /dev/sdc1 /mnt/tmp > ------------------------------ > > After that I get /dev/sdc and /dev/sdc1 devices created without any > errors in dmesg: > > ------------------------------ > [1256700.986581] usb 3-1: reset high-speed USB device number 5 using dummy_hcd > [1256701.022551] gadget: high-speed config #1: Linux File-Backed Storage > [1256701.242481] usb 3-1: reset high-speed USB device number 5 using dummy_hcd > [1256701.278422] gadget: high-speed config #1: Linux File-Backed Storage > [1256701.422339] gadget: high-speed config #1: Linux File-Backed Storage > [1256934.915697] usb 3-1: reset high-speed USB device number 5 using dummy_hcd > [1256934.951628] gadget: high-speed config #1: Linux File-Backed Storage > [1256935.915155] usb 3-1: reset high-speed USB device number 5 using dummy_hcd > [1256935.951090] gadget: high-speed config #1: Linux File-Backed Storage > [1256936.095018] gadget: high-speed config #1: Linux File-Backed Storage > [1317073.396892] usb-storage 3-1:1.0: Quirks match for vid 0525 pid a4a5: 10000 > [1317073.396995] scsi53 : usb-storage 3-1:1.0 > [1317074.411883] scsi 53:0:0:0: Direct-Access Linux File-CD > Gadget 0302 PQ: 0 ANSI: 2 > [1317074.412669] sd 53:0:0:0: Attached scsi generic sg3 type 0 > [1317074.431910] sd 53:0:0:0: [sdc] 8388608 512-byte logical blocks: > (4.29 GB/4.00 GiB) > [1317074.443816] sd 53:0:0:0: [sdc] Write Protect is off > [1317074.443821] sd 53:0:0:0: [sdc] Mode Sense: 0f 00 00 00 > [1317074.455839] sd 53:0:0:0: [sdc] Write cache: enabled, read cache: > enabled, doesn't support DPO or FUA > [1317074.551757] sdc: sdc1 > [1317074.683704] sd 53:0:0:0: [sdc] Attached SCSI removable disk > ------------------------------ > > The problem is that IO performance is very poor. Writing 200Mb file > takes quite a while: > > ------------------------------ > $ ls -lh file > -rw-rw-r-- 1 root del 206M Sep 4 09:34 file > $ time sudo cp file /mnt/tmp/ > real 11m59.618s > user 0m0.000s > sys 0m0.260s > ------------------------------ > > > Which is about 300K/sec. However the same file on the same system is > copied to a real USB flash in less than a minute. Looks like it is > emulating a USB 1.1 controller, not USB 2.0... > > iotop shows something like this: > > ------------------------------ > TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND > 9986 be/4 root 0.00 B/s 262.05 K/s 0.00 % 99.86 % cp file /mnt/tmp/ > 20651 be/4 root 51.77 K/s 238.95 K/s 0.00 % 93.23 % [file-storage] > ------------------------------ > > Can anything be done to improve the performance of > g_mass_storage-emulated USB drive? > > PS: I am using kernel > > ------------------------------ > $ uname -rm > 3.2.0-4-686-pae i686 > ------------------------------ > > Thanks in advance. This has nothing to do with g_mass_storage. What you are seeing is low performance of dummy-hcd. dummy-hcd depends strongly on the timer setting; it won't really work properly unless you have CONFIG_HZ set to 1000. In general, the performance of dummy-hcd doesn't matter because it is meant only for testing. If you use g_mass_storage with a real USB device controller, you should find that it performs much better. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html