On Mon, 8 Aug 2011, Per Forlin wrote:
FSG_NUM_BUFFERS is set to 2 as default. Usually 2 buffers are enough to establish a good buffering pipeline. The number may be increased in order to compensate a for bursty VFS behaviour.
Here follows a description of system that may require more than 2 buffers.
- CPU ondemand governor active
- latency cost for wake up and/or frequency change
- DMA for IO
Use case description.
- Data transfer from MMC via VFS to USB.
- DMA shuffles data from MMC and to USB.
- The CPU wakes up every now and then to pass data in and out from VFS, which cause the bursty VFS behaviour.
Test set up
- Running dd on the host reading from the mass storage device
- cmdline: dd if=/dev/sdb of=/dev/null bs=4k count=$((256*100))
- Caches are dropped on the host and on the device before each run
Measurements on a Snowball board with ondemand_govenor active.
FSG_NUM_BUFFERS 2 104857600 bytes (105 MB) copied, 5.62173 s, 18.7 MB/s 104857600 bytes (105 MB) copied, 5.61811 s, 18.7 MB/s 104857600 bytes (105 MB) copied, 5.57817 s, 18.8 MB/s
FSG_NUM_BUFFERS 4 104857600 bytes (105 MB) copied, 5.26839 s, 19.9 MB/s 104857600 bytes (105 MB) copied, 5.2691 s, 19.9 MB/s 104857600 bytes (105 MB) copied, 5.2711 s, 19.9 MB/s
There may not be one optimal number for all boards. This is why the number is added to Kconfig.
Signed-off-by: Per Forlin per.forlin@linaro.org Acked-by: Michal Nazarewicz mina86@mina86.com
Acked-by: Alan Stern stern@rowland.harvard.edu