Options for improving f_fs.c performance?

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

 



(reposting this question in its own subject, instead of buried in a patchset)

Android has migrated to using f_fs for the mtp function, but in the
process we ran into some performance hiccups in comparison to f_mtp
during bulk transfer of large files.

Allocating memory at boot allowed f_mtp to use large buffers,
around 250kB. Compared to using a 16 or 32 kB buffer, the larger buffer
is faster by almost 50%. f_fs can't use io sizes that large due
to memory fragmentation, since there is a kmalloc on each call.

One option here would be to add O_DIRECT as a flag to open
(similar to what is discussed here:
http://www.makelinux.net/ldd3/chp-15-sect-3).
Then on each io, we could get_user_pages, vmap them together,
and pass that address into ep_queue (for sync io only, non direct io
does not change). This would would allow larger io sizes
to be used and eliminates a user-kernel copy. Having the flag
allows users to decide which endpoints they choose to use this way.

Does this sound like something that people want or find acceptable?
If there's other suggestions for fixing this issue, I'd be willing to help
implement.

--Jerry
--
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



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

  Powered by Linux