Merge changes I4d351f56,Ib9e91157
* changes: adbd: tune USB read/write sizes and queue depths. adb: add benchmarks for sink/source.
This commit is contained in:
commit
7669ea5a44
2 changed files with 43 additions and 4 deletions
|
|
@ -17,6 +17,8 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import statistics
|
import statistics
|
||||||
|
import subprocess
|
||||||
|
import tempfile
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import adb
|
import adb
|
||||||
|
|
@ -56,6 +58,41 @@ def analyze(name, speeds):
|
||||||
msg = "%s: %d runs: median %.2f MiB/s, mean %.2f MiB/s, stddev: %.2f MiB/s"
|
msg = "%s: %d runs: median %.2f MiB/s, mean %.2f MiB/s, stddev: %.2f MiB/s"
|
||||||
print(msg % (name, len(speeds), median, mean, stddev))
|
print(msg % (name, len(speeds), median, mean, stddev))
|
||||||
|
|
||||||
|
def benchmark_sink(device=None, size_mb=100):
|
||||||
|
if device == None:
|
||||||
|
device = adb.get_device()
|
||||||
|
|
||||||
|
speeds = list()
|
||||||
|
cmd = device.adb_cmd + ["raw", "sink:%d" % (size_mb * 1024 * 1024)]
|
||||||
|
|
||||||
|
with tempfile.TemporaryFile() as tmpfile:
|
||||||
|
tmpfile.truncate(size_mb * 1024 * 1024)
|
||||||
|
|
||||||
|
for _ in range(0, 10):
|
||||||
|
tmpfile.seek(0)
|
||||||
|
begin = time.time()
|
||||||
|
subprocess.check_call(cmd, stdin=tmpfile)
|
||||||
|
end = time.time()
|
||||||
|
speeds.append(size_mb / float(end - begin))
|
||||||
|
|
||||||
|
analyze("sink %dMiB" % size_mb, speeds)
|
||||||
|
|
||||||
|
def benchmark_source(device=None, size_mb=100):
|
||||||
|
if device == None:
|
||||||
|
device = adb.get_device()
|
||||||
|
|
||||||
|
speeds = list()
|
||||||
|
cmd = device.adb_cmd + ["raw", "source:%d" % (size_mb * 1024 * 1024)]
|
||||||
|
|
||||||
|
with open(os.devnull, 'w') as devnull:
|
||||||
|
for _ in range(0, 10):
|
||||||
|
begin = time.time()
|
||||||
|
subprocess.check_call(cmd, stdout=devnull)
|
||||||
|
end = time.time()
|
||||||
|
speeds.append(size_mb / float(end - begin))
|
||||||
|
|
||||||
|
analyze("source %dMiB" % size_mb, speeds)
|
||||||
|
|
||||||
def benchmark_push(device=None, file_size_mb=100):
|
def benchmark_push(device=None, file_size_mb=100):
|
||||||
if device == None:
|
if device == None:
|
||||||
device = adb.get_device()
|
device = adb.get_device()
|
||||||
|
|
@ -110,6 +147,8 @@ def benchmark_shell(device=None, file_size_mb=100):
|
||||||
def main():
|
def main():
|
||||||
device = adb.get_device()
|
device = adb.get_device()
|
||||||
unlock(device)
|
unlock(device)
|
||||||
|
benchmark_sink(device)
|
||||||
|
benchmark_source(device)
|
||||||
benchmark_push(device)
|
benchmark_push(device)
|
||||||
benchmark_pull(device)
|
benchmark_pull(device)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,11 +57,11 @@ using android::base::StringPrintf;
|
||||||
// We can't find out whether we have support for AIO on ffs endpoints until we submit a read.
|
// We can't find out whether we have support for AIO on ffs endpoints until we submit a read.
|
||||||
static std::optional<bool> gFfsAioSupported;
|
static std::optional<bool> gFfsAioSupported;
|
||||||
|
|
||||||
static constexpr size_t kUsbReadQueueDepth = 16;
|
static constexpr size_t kUsbReadQueueDepth = 32;
|
||||||
static constexpr size_t kUsbReadSize = 16384;
|
static constexpr size_t kUsbReadSize = 8 * PAGE_SIZE;
|
||||||
|
|
||||||
static constexpr size_t kUsbWriteQueueDepth = 16;
|
static constexpr size_t kUsbWriteQueueDepth = 32;
|
||||||
static constexpr size_t kUsbWriteSize = 16 * PAGE_SIZE;
|
static constexpr size_t kUsbWriteSize = 8 * PAGE_SIZE;
|
||||||
|
|
||||||
static const char* to_string(enum usb_functionfs_event_type type) {
|
static const char* to_string(enum usb_functionfs_event_type type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue