Created
April 30, 2013 21:38
-
-
Save ssvb/5492148 to your computer and use it in GitHub Desktop.
Benchmarking linux framebuffer driver vs. libhybris on Allwinner A10 hardware (Mali400 GPU)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Tests done with: | |
https://github.com/ssvb/libhybris/commit/23bd20eb6c75fc5c6124f1f2c2532356fd91ab3e | |
=== mali framebuffer driver: === | |
CPU load = ~0% | |
strace -f ./test_glesv2_mali_fb | |
[...] | |
[pid 3168] ioctl(6, FBIOPAN_DISPLAY or FBIPUT_COLOR, 0x3fefa4) = 0 | |
[pid 3167] <... ioctl resumed> , 0) = 0 | |
[pid 3168] ioctl(5, 0xc0048204 <unfinished ...> | |
[pid 3167] ioctl(5, 0xc0048500, 0xbe9aef48) = 0 | |
[pid 3168] <... ioctl resumed> , 0xb6abae08) = 0 | |
[pid 3167] ioctl(3, FBIO_WAITFORVSYNC <unfinished ...> | |
[pid 3168] ioctl(5, 0xc0048400, 0xb6abac60) = 0 | |
[pid 3168] ioctl(5, 0xc0048204, 0xb6abae08) = 0 | |
[pid 3168] ioctl(6, FBIOPAN_DISPLAY or FBIPUT_COLOR, 0x3fefa4) = 0 | |
[pid 3167] <... ioctl resumed> , 0) = 0 | |
[pid 3168] ioctl(5, 0xc0048204 <unfinished ...> | |
[pid 3167] ioctl(5, 0xc0048500, 0xbe9aef48) = 0 | |
[pid 3168] <... ioctl resumed> , 0xb6abae08) = 0 | |
[pid 3167] ioctl(3, FBIO_WAITFORVSYNC <unfinished ...> | |
[pid 3168] ioctl(5, 0xc0048400, 0xb6abac60) = 0 | |
[pid 3168] ioctl(5, 0xc0048204, 0xb6abae08) = 0 | |
[pid 3168] ioctl(6, FBIOPAN_DISPLAY or FBIPUT_COLOR, 0x3fefa4) = 0 | |
[pid 3167] <... ioctl resumed> , 0) = 0 | |
[pid 3168] ioctl(5, 0xc0048204 <unfinished ...> | |
[pid 3167] ioctl(5, 0xc0048500, 0xbe9aef48) = 0 | |
[pid 3168] <... ioctl resumed> , 0xb6abae08) = 0 | |
[pid 3167] ioctl(3, FBIO_WAITFORVSYNC <unfinished ...> | |
[pid 3168] ioctl(5, 0xc0048400, 0xb6abac60) = 0 | |
[pid 3168] ioctl(5, 0xc0048204, 0xb6abae08) = 0 | |
[pid 3168] ioctl(6, FBIOPAN_DISPLAY or FBIPUT_COLOR, 0x3fefa4) = 0 | |
=== libhybris wrapped android driver: === | |
CPU load = ~75% | |
strace -f ./test_glesv2 | |
[...] | |
[pid 3188] ioctl(6, FBIOPAN_DISPLAY or FBIPUT_COLOR <unfinished ...> | |
[pid 3173] futex(0xdda698, FUTEX_WAKE_PRIVATE, 1 <unfinished ...> | |
[pid 3188] <... ioctl resumed> , 0xb495e0dc) = 0 | |
[pid 3173] <... futex resumed> ) = 0 | |
[pid 3188] ioctl(6, 0x400446ce <unfinished ...> | |
[pid 3173] sched_yield( <unfinished ...> | |
[pid 3188] <... ioctl resumed> , 0xb599dd90) = 0 | |
[pid 3188] ioctl(6, FBIO_WAITFORVSYNC <unfinished ...> | |
[pid 3173] <... sched_yield resumed> ) = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3188] <... ioctl resumed> , 0xb599dd94) = 0 | |
[pid 3188] ioctl(6, 0x400446ce, 0xb599dd90) = 0 | |
[pid 3188] ioctl(4, 0xc0048400, 0xb599dc30) = 0 | |
[pid 3188] futex(0xdbe084, FUTEX_WAIT_PRIVATE, 457, NULL <unfinished ...> | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] getpid() = 3173 | |
[pid 3173] ioctl(4, 0xc0048500 <unfinished ...> | |
[pid 3189] <... ioctl resumed> , 0xb519ddd8) = 0 | |
[pid 3189] futex(0xdd6d88, FUTEX_WAIT_PRIVATE, 2, NULL <unfinished ...> | |
[pid 3173] <... ioctl resumed> , 0xbed7ee00) = 0 | |
[pid 3173] futex(0xdd6d88, FUTEX_WAKE_PRIVATE, 1) = 1 | |
[pid 3189] <... futex resumed> ) = 0 | |
[pid 3173] futex(0xddac7c, FUTEX_WAIT_PRIVATE, 167, NULL <unfinished ...> | |
[pid 3189] futex(0xdd6d88, FUTEX_WAKE_PRIVATE, 1) = 0 | |
[pid 3189] ioctl(4, 0xc0048204, 0xb519ddd8) = 0 | |
[pid 3189] futex(0xdbe084, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0xdbe080, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 | |
[pid 3188] <... futex resumed> ) = 0 | |
[pid 3189] futex(0xddac7c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0xddac78, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} <unfinished ...> | |
[pid 3188] futex(0xdbaff0, FUTEX_WAKE_PRIVATE, 1 <unfinished ...> | |
[pid 3189] <... futex resumed> ) = 1 | |
[pid 3188] <... futex resumed> ) = 0 | |
[pid 3189] ioctl(4, 0xc0048204 <unfinished ...> | |
[pid 3188] ioctl(6, FBIOPAN_DISPLAY or FBIPUT_COLOR, 0xb495e0dc) = 0 | |
[pid 3188] ioctl(6, 0x400446ce, 0xb599dd90) = 0 | |
[pid 3188] ioctl(6, FBIO_WAITFORVSYNC <unfinished ...> | |
[pid 3173] <... futex resumed> ) = 0 | |
[pid 3173] futex(0xddac58, FUTEX_WAKE_PRIVATE, 1) = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield() = 0 | |
[pid 3173] sched_yield( <unfinished ...> | |
[pid 3188] <... ioctl resumed> , 0xb599dd94) = 0 | |
[pid 3188] ioctl(6, 0x400446ce, 0xb599dd90) = 0 | |
[pid 3188] ioctl(4, 0xc0048400, 0xb599dc30) = 0 | |
[pid 3188] futex(0xdbe084, FUTEX_WAIT_PRIVATE, 459, NULL <unfinished ...> | |
[pid 3173] <... sched_yield resumed> ) = 0 | |
[pid 3173] getpid() = 3173 | |
[pid 3173] ioctl(4, 0xc0048500, 0xbed7ee00) = 0 | |
[pid 3189] <... ioctl resumed> , 0xb519ddd8) = 0 | |
[pid 3173] futex(0xdda6bc, FUTEX_WAIT_PRIVATE, 143, NULL <unfinished ...> | |
[pid 3189] ioctl(4, 0xc0048204, 0xb519ddd8) = 0 | |
[pid 3189] futex(0xdbe084, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0xdbe080, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 | |
[pid 3188] <... futex resumed> ) = 0 | |
[pid 3189] futex(0xdda6bc, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0xdda6b8, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} <unfinished ...> | |
[pid 3188] futex(0xdbaff0, FUTEX_WAKE_PRIVATE, 1 <unfinished ...> | |
[pid 3189] <... futex resumed> ) = 1 | |
[pid 3188] <... futex resumed> ) = 0 | |
[pid 3173] <... futex resumed> ) = 0 | |
[pid 3189] ioctl(4, 0xc0048204 <unfinished ...> | |
[pid 3188] ioctl(6, FBIOPAN_DISPLAY or FBIPUT_COLOR <unfinished ...> | |
Profiling results: | |
66.67% test_glesv2 [kernel.kallsyms] [k] __schedule | |
11.44% test_glesv2 [kernel.kallsyms] [k] vector_swi | |
6.80% test_glesv2 libc.so [.] sched_yield | |
3.01% test_glesv2 [kernel.kallsyms] [k] sub_preempt_count | |
1.77% test_glesv2 libMali.so [.] 0x0004b180 | |
1.58% test_glesv2 libMali.so [.] _mali_osu_atomic_init | |
1.34% test_glesv2 [kernel.kallsyms] [k] ret_fast_syscall | |
0.99% test_glesv2 [kernel.kallsyms] [k] sys_sched_yield | |
0.55% test_glesv2 libc-2.15.so [.] strcmp | |
0.34% test_glesv2 libhybris-common.so.1.0.0 [.] _elf_lookup | |
0.25% test_glesv2 libpthread-2.15.so [.] pthread_mutex_lock | |
0.24% test_glesv2 libpthread-2.15.so [.] __pthread_mutex_unlock_usercnt | |
0.21% test_glesv2 libhybris-common.so.1.0.0 [.] get_hooked_symbol | |
0.18% test_glesv2 libhybris-common.so.1.0.0 [.] reloc_library | |
0.14% test_glesv2 libc-2.15.so [.] memset | |
0.13% test_glesv2 [kernel.kallsyms] [k] finish_task_switch.constprop.75 | |
0.10% test_glesv2 libc-2.15.so [.] _int_free | |
0.10% test_glesv2 [mali] [k] $a | |
0.09% test_glesv2 [kernel.kallsyms] [k] up | |
0.09% test_glesv2 libhybris-common.so.1.0.0 [.] __udivsi3 | |
0.08% test_glesv2 [kernel.kallsyms] [k] do_futex | |
0.08% test_glesv2 libhybris-common.so.1.0.0 [.] ftell@plt | |
0.07% test_glesv2 [kernel.kallsyms] [k] __do_softirq | |
0.07% test_glesv2 [kernel.kallsyms] [k] down | |
0.07% test_glesv2 libpthread-2.15.so [.] pthread_cond_broadcast@@GLIBC_2.4 | |
0.07% test_glesv2 libc-2.15.so [.] _int_malloc | |
0.06% test_glesv2 [kernel.kallsyms] [k] try_to_wake_up | |
0.05% test_glesv2 libui.so [.] 0x00005b70 | |
0.05% test_glesv2 [kernel.kallsyms] [k] finish_wait | |
0.05% test_glesv2 libhybris-common.so.1.0.0 [.] _IO_getc@plt | |
0.05% test_glesv2 libpthread-2.15.so [.] pthread_cond_wait@@GLIBC_2.4 | |
0.05% test_glesv2 [kernel.kallsyms] [k] do_vfs_ioctl | |
0.05% test_glesv2 libc-2.15.so [.] strstr | |
0.05% test_glesv2 [kernel.kallsyms] [k] do_page_fault | |
0.05% test_glesv2 [kernel.kallsyms] [k] __memzero | |
0.05% test_glesv2 gralloc.sun4i.so [.] 0x00000c64 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment