• Martijn Coenen's avatar
    ANDROID: binder: Add thread->process_todo flag. · 148ade2c
    Martijn Coenen authored
    This flag determines whether the thread should currently
    process the work in the thread->todo worklist.
    
    The prime usecase for this is improving the performance
    of synchronous transactions: all synchronous transactions
    post a BR_TRANSACTION_COMPLETE to the calling thread,
    but there's no reason to return that command to userspace
    right away - userspace anyway needs to wait for the reply.
    
    Likewise, a synchronous transaction that contains a binder
    object can cause a BC_ACQUIRE/BC_INCREFS to be returned to
    userspace; since the caller must anyway hold a strong/weak
    ref for the duration of the call, postponing these commands
    until the reply comes in is not a problem.
    
    Note that this flag is not used to determine whether a
    thread can handle process work; a thread should never pick
    up process work when thread work is still pending.
    
    Before patch:
    ------------------------------------------------------------------
    Benchmark                           Time           CPU Iterations
    ------------------------------------------------------------------
    BM_sendVec_binderize/4          45959 ns      20288 ns      34351
    BM_sendVec_binderize/8          45603 ns      20080 ns      34909
    BM_sendVec_binderize/16         45528 ns      20113 ns      34863
    BM_sendVec_binderize/32         45551 ns      20122 ns      34881
    BM_sendVec_binderize/64         45701 ns      20183 ns      34864
    BM_sendVec_binderize/128        45824 ns      20250 ns      34576
    BM_sendVec_binderize/256        45695 ns      20171 ns      34759
    BM_sendVec_binderize/512        45743 ns      20211 ns      34489
    BM_sendVec_binderize/1024       46169 ns      20430 ns      34081
    
    After patch:
    ------------------------------------------------------------------
    Benchmark                           Time           CPU Iterations
    ------------------------------------------------------------------
    BM_sendVec_binderize/4          42939 ns      17262 ns      40653
    BM_sendVec_binderize/8          42823 ns      17243 ns      40671
    BM_sendVec_binderize/16         42898 ns      17243 ns      40594
    BM_sendVec_binderize/32         42838 ns      17267 ns      40527
    BM_sendVec_binderize/64         42854 ns      17249 ns      40379
    BM_sendVec_binderize/128        42881 ns      17288 ns      40427
    BM_sendVec_binderize/256        42917 ns      17297 ns      40429
    BM_sendVec_binderize/512        43184 ns      17395 ns      40411
    BM_sendVec_binderize/1024       43119 ns      17357 ns      40432
    Signed-off-by: default avatarMartijn Coenen <maco@android.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    148ade2c
binder.c 160 KB