https://bugs.linaro.org/show_bug.cgi?id=3201

            Bug ID: 3201
           Summary: Performance degradation due to no-copy packet
                    reference commits
           Product: OpenDataPlane - linux- generic reference
           Version: master
          Hardware: Other
                OS: Linux
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: ---
         Component: Buffers & Packets
          Assignee: bill.fischo...@linaro.org
          Reporter: petri.savolai...@linaro.org
                CC: lng-odp@lists.linaro.org
  Target Milestone: ---

Packet reference patch set causes serious performance degradation on many
packet API functions. Also l2fwd application throughput dropped by about 6-10%. 
Measurements were done in master, just before packet ref patch set (commit
bb0ca193f8c28036) and just after it (commit a1786671550c5f83).


L2fwd packet throughput with dpdk pktio, 10GE NICs
--------------------------------------------------
CPUs            1       2       4
direct          -6.4%   -5.4%
parallel        -3.4%   -5.6%   -8.5%
atomic          -2.3%   -6.3%   -10.8%
ordered         -3.4%   -6.1%   -8.5%


L2fwd packet throughput with dpdk pktio (copy vs. zero-copy), 40GE NICs
-----------------------------------------------------------------------
                          zero-copy
Cores   direct  atomic  direct  atomic
1       -6.3 %  -5.6 %  -18.3 % -9.5 %
2       -6.1 %  -6.9 %  -9.2 %  -12.3 %
4       -6.1 %  -8.8 %          -9.9 %
6       -4.5 %  -8.1 %          -7.3 %
8               -7.7 %          -5.5 %


odp_bench_packet cycle counts
-----------------------------
                                64      128     256     512     1024    1518    
bench_empty                     0 %     0 %     0 %     0 %     0 %     0 %     
bench_packet_alloc              -46 %   -47 %   -46 %   -46 %   -46 %   -40 %   
bench_packet_alloc_multi        -88 %   -81 %   -81 %   -67 %   -77 %   -52 %   
bench_packet_free               -8 %    -9 %    -8 %    -9 %    -8 %    -9 %    
bench_packet_free_multi         -80 %   -80 %   -81 %   -81 %   -79 %   -36 %   
bench_packet_alloc_free         0 %     1 %     1 %     1 %     0 %     0 %     
bench_packet_alloc_free_multi   -31 %   -56 %   -34 %   -31 %   -33 %   -56 %   
bench_packet_reset              -29 %   -30 %   -30 %   -31 %   -31 %   -30 %   
bench_packet_from_event         16 %    18 %    18 %    16 %    16 %    16 %    
bench_packet_to_event           -2 %    -2 %    -2 %    -2 %    -2 %    -2 %    
bench_packet_head               -59 %   -68 %   -70 %   -69 %   -65 %   -66 %   
bench_packet_buf_len            -58 %   -72 %   -68 %   -73 %   -70 %   -66 %   
bench_packet_data               -49 %   -60 %   -60 %   -63 %   -57 %   -61 %   
bench_packet_seg_len            -56 %   -62 %   -62 %   -62 %   -62 %   -61 %   
bench_packet_len                -100 %  -103 %  -100 %  -97 %   -100 %  -97 %   
bench_packet_headroom           0 %     0 %     0 %     100 %   0 %     0 %     
bench_packet_tailroom           0 %     0 %     0 %     100 %   0 %     0 %     
bench_packet_tail               -58 %   -64 %   -61 %   -50 %   -64 %   -81 %   
bench_packet_offset             -34 %   -35 %   -37 %   -36 %   -37 %   -34 %   
bench_packet_prefetch           0 %     0 %     0 %     0 %     0 %     0 %     
bench_packet_push_head          -41 %   -50 %   -47 %   -47 %   -50 %   -48 %   
bench_packet_pull_head          -41 %   -48 %   -46 %   -43 %   -45 %   -46 %   
bench_packet_push_tail          -40 %   -45 %   -44 %   -46 %   -39 %   -47 %   
bench_packet_pull_tail          77 %    -39 %   -37 %   -38 %   -40 %   -39 %   
bench_packet_extend_head        -6 %    -6 %    -6 %    -11 %   -7 %    -5 %    
bench_packet_trunc_head         -5 %    30 %    -5 %    -4 %    -5 %    -6 %    
bench_packet_extend_tail        -3 %    -4 %    -5 %    0 %     36 %    -4 %    
bench_packet_trunc_tail         -6 %    -7 %    -6 %    -6 %    -6 %    -7 %    
bench_packet_add_data           -3 %    -2 %    -1 %    0 %     -9 %    -13 %   
bench_packet_rem_data           -3 %    -2 %    0 %     -15 %   10 %    4 %     
bench_packet_align              -6 %    -5 %    -4 %    -3 %    17 %    18 %    
bench_packet_is_segmented       -129 %  -153 %  -146 %  -145 %  -148 %  -190 %  
bench_packet_num_segs           -210 %  -232 %  -150 %  -223 %  -234 %  -232 %  
bench_packet_first_seg          0 %     0 %     0 %     0 %     0 %     0 %     
bench_packet_last_seg           -293 %  -326 %  -315 %  -277 %  -305 %  -1590 % 
bench_packet_next_seg           -76 %   -95 %   -90 %   -85 %   -36 %   -90 %   
bench_packet_seg_data           -601 %  -42 %   -27 %   -41 %   -42 %   -45 %   
bench_packet_seg_data_len       -39 %   -49 %   -46 %   -46 %   -46 %   -50 %   
bench_packet_concat             -6 %    -6 %    -5 %    -5 %    -4 %    -6 %    
bench_packet_split              -15 %   -36 %   -8 %    -5 %    6 %     -27 %   
bench_packet_copy               10 %    -16 %   -3 %    -16 %   7 %     1 %     
bench_packet_copy_part          -6 %    -6 %    -3 %    -18 %   -2 %    -1 %    
bench_packet_copy_to_mem        1 %     -1 %    1 %     -24 %   6 %     -2 %    
bench_packet_copy_from_mem      -2 %    0 %     -28 %   0 %     -15 %   10 %    
bench_packet_copy_from_pkt      -10 %   -5 %    -3 %    22 %    1 %     13 %    
bench_packet_copy_data          -25 %   -5 %    -5 %    -2 %    1 %     -4 %    
bench_packet_move_data          -24 %   -3 %    -6 %    25 %    -1 %    3 %     
bench_packet_pool               2 %     4 %     2 %     3 %     3 %     2 %     
bench_packet_input              -71 %   -73 %   -73 %   -76 %   -71 %   -67 %   
bench_packet_input_index        -32 %   -28 %   -30 %   -30 %   -30 %   -30 %   
bench_packet_user_ptr           -5 %    -4 %    6 %     14 %    4 %     -10 %   
bench_packet_user_ptr_set       -2 %    -2 %    -2 %    -2 %    -2 %    -2 %    
bench_packet_user_area          -6 %    -6 %    5 %     7 %     4 %     -10 %   
bench_packet_user_area_size     -8 %    -8 %    -9 %    -8 %    -8 %    -8 %    
bench_packet_l2_ptr             -34 %   -33 %   -34 %   -32 %   -32 %   -33 %   
bench_packet_l2_offset          -24 %   -26 %   -25 %   -22 %   -24 %   -25 %   
bench_packet_l2_offset_set      -45 %   -43 %   -43 %   -39 %   -44 %   -44 %   
bench_packet_l3_ptr             -34 %   -37 %   -37 %   -34 %   -35 %   -35 %   
bench_packet_l3_offset          -47 %   -51 %   -50 %   -45 %   -47 %   -48 %   
bench_packet_l3_offset_set      -33 %   -26 %   -32 %   -57 %   -33 %   -34 %   
bench_packet_l4_ptr             -409 %  -36 %   -38 %   -35 %   -36 %   -35 %   
bench_packet_l4_offset          -53 %   -54 %   -48 %   -48 %   -48 %   -50 %   
bench_packet_l4_offset_set      -39 %   -39 %   83 %    -37 %   -41 %   -37 %   
bench_packet_flow_hash          -77 %   -77 %   -77 %   -72 %   -40 %   -75 %   
bench_packet_flow_hash_set      -329 %  -478 %  -472 %  -448 %  -1175 % -467 %  
bench_packet_ts                 -73 %   -63 %   -67 %   -63 %   -71 %   -71 %   
bench_packet_ts_set             -439 %  -461 %  -450 %  -428 %  -445 %  -452 %  
bench_packet_ref_static         86 %    87 %    90 %    90 %    93 %    95 %    
bench_packet_ref                53 %    58 %    62 %    60 %    72 %    71 %    
bench_packet_ref_pkt            80 %    83 %    83 %    84 %    87 %    90 %    
bench_packet_unshared_len       -79 %   -79 %   -74 %   -72 %   -70 %   -68 %   
bench_packet_has_ref            -298 %  -298 %  -305 %  -296 %  -293 %  -277 %

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to