tools/android: Disk IO simple benchmark tool.

Adds a simple tool writing random data to a file, then reading it. The
file is optionally evicted from the OS page cache between the read and
write. This is used to assess device IO performance locally.

From an Android Go device (Gobo) running O MR1 with 360MB free on /data:

Without the OS page cache:
$ adb shell /data/local/tmp/io_benchmark /data/local/tmp/test 1
Size = 4096
 Write 4096 = 50.0us (81.92MB/s)
 Read 4096 = 1489.0us (2.75MB/s)
Size = 8192
 Write 8192 = 61.0us (134.30MB/s)
 Read 8192 = 1486.0us (5.51MB/s)
Size = 16384
 Write 16384 = 81.0us (202.27MB/s)
 Read 16384 = 1602.0us (10.23MB/s)
Size = 32768
 Write 32768 = 145.0us (225.99MB/s)
 Read 32768 = 1877.0us (17.46MB/s)
Size = 65536
 Write 65536 = 215.0us (304.82MB/s)
 Read 65536 = 2656.0us (24.67MB/s)
Size = 131072
 Write 131072 = 468.0us (280.07MB/s)
 Read 131072 = 4531.0us (28.93MB/s)
Size = 262144
 Write 262144 = 642.0us (408.32MB/s)
 Read 262144 = 5041.0us (52.00MB/s)
Size = 524288
 Write 524288 = 1219.0us (430.10MB/s)
 Read 524288 = 8949.0us (58.59MB/s)
Size = 1048576
 Write 1048576 = 2466.0us (425.21MB/s)
 Read 1048576 = 13606.0us (77.07MB/s)
Size = 2097152
 Write 2097152 = 4908.0us (427.29MB/s)
 Read 2097152 = 25840.0us (81.16MB/s)
Size = 4194304
 Write 4194304 = 9502.0us (441.41MB/s)
 Read 4194304 = 76867.0us (54.57MB/s)
Size = 8388608
 Write 8388608 = 20814.0us (403.03MB/s)
 Read 8388608 = 119062.0us (70.46MB/s)

With it:
$ adb shell /data/local/tmp/io_benchmark /data/local/tmp/test 0
Size = 4096
 Write 4096 = 56.0us (73.14MB/s)
 Read 4096 = 172.0us (23.81MB/s)
Size = 8192
 Write 8192 = 65.0us (126.03MB/s)
 Read 8192 = 23.0us (356.17MB/s)
Size = 16384
 Write 16384 = 101.0us (162.22MB/s)
 Read 16384 = 35.0us (468.11MB/s)
Size = 32768
 Write 32768 = 134.0us (244.54MB/s)
 Read 32768 = 57.0us (574.88MB/s)
Size = 65536
 Write 65536 = 229.0us (286.18MB/s)
 Read 65536 = 109.0us (601.25MB/s)
Size = 131072
 Write 131072 = 348.0us (376.64MB/s)
 Read 131072 = 170.0us (771.01MB/s)
Size = 262144
 Write 262144 = 721.0us (363.58MB/s)
 Read 262144 = 354.0us (740.52MB/s)
Size = 524288
 Write 524288 = 1895.0us (276.67MB/s)
 Read 524288 = 783.0us (669.59MB/s)
Size = 1048576
 Write 1048576 = 2405.0us (436.00MB/s)
 Read 1048576 = 2872.0us (365.10MB/s)
Size = 2097152
 Write 2097152 = 4688.0us (447.34MB/s)
 Read 2097152 = 3398.0us (617.17MB/s)
Size = 4194304
 Write 4194304 = 10358.0us (404.93MB/s)
 Read 4194304 = 6556.0us (639.77MB/s)
Size = 8388608
 Write 8388608 = 19040.0us (440.58MB/s)
 Read 8388608 = 17753.0us (472.52MB/s)

TBR=digit@chromium.org  # per tools/OWNERS

Bug: 837659, 857070
Change-Id: I33fe4aeb287a5c5910c941a580093d9fecf8f758
Reviewed-on: https://chromium-review.googlesource.com/1116700
Commit-Queue: Benoit L <lizeb@chromium.org>
Reviewed-by: Benoit L <lizeb@chromium.org>
Reviewed-by: David Turner <digit@chromium.org>
Reviewed-by: Egor Pasko <pasko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#571077}
4 files changed