[dpdk-dev] [PATCH v2 0/6] enable lpm, acl and other missing libraries in ppc64le

gowrishankar gowrishankar.m at linux.vnet.ibm.com
Mon Jul 11 11:37:22 CEST 2016


Hi Chao,

On Monday 11 July 2016 02:25 PM, Chao Zhu wrote:
> Gowrishankar,
>
> Nice patches! Do you have some function test result? I need some time to
> verify the patches.

Please find below lpm and acl units tests (Test OK at the end of each 
tests).


# ./app/test
< EAL/PMD logs>
APP: HPET is not enabled, using TSC as default timer
RTE>>lpm_autotest
No. routes = 1076806
Route distribution per prefix width:
DEPTH    QUANTITY (PERCENT)
---------------------------
01              0 (0.00)
02              0 (0.00)
03              1 (0.00)
04              0 (0.00)
05              3 (0.00)
06              2 (0.00)
07              4 (0.00)
08            201 (0.02)
09             37 (0.00)
10             55 (0.01)
11             97 (0.01)
12            381 (0.04)
13            775 (0.07)
14           2104 (0.20)
15           3712 (0.34)
16          69319 (6.44)
17          12983 (1.21)
18          23667 (2.20)
19          69068 (6.41)
20          62354 (5.79)
21          48531 (4.51)
22          72355 (6.72)
23          85427 (7.93)
24         583900 (54.23)
25           2654 (0.25)
26           5650 (0.52)
27           6467 (0.60)
28           7127 (0.66)
29          12936 (1.20)
30           5999 (0.56)
31             13 (0.00)
32            984 (0.09)

Unique added entries = 1039948
Used table 24 entries = 11343198 (67.6107%)
64 byte Cache entries used = 360735 (23087040 bytes)
Average LPM Add: 110820 cycles
Average LPM Lookup: 34.5 cycles (fails = 19.3%)
BULK LPM Lookup: 31.5 cycles (fails = 19.3%)
LPM LookupX4: 29.5 cycles (fails = 19.3%)
Average LPM Delete: 63841.6 cycles
Test OK

RTE>>acl_autotest
ACL: allocation of 25166728 bytes on socket 33 for ACL_acl_ctx failed
ACL: rte_acl_add_rules(acl_ctx): rule #1 is invalid
ACL: rte_acl_ipv4vlan_add_rules: rule #1 is invalid
ACL: rte_acl_ipv4vlan_add_rules: rule #1 is invalid
ACL: rte_acl_ipv4vlan_add_rules: rule #1 is invalid
ACL: rte_acl_ipv4vlan_add_rules: rule #1 is invalid
ACL: rte_acl_add_rules(acl_ctx): rule #1 is invalid
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 0/0
quad nodes/vectors/bytes used: 0/0/0
DFA nodes/group64/bytes used: 1/4/4104
match nodes/bytes used: 1/128
total: 6432 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 2
memory consumed: 8388615
ACL: trie 0: number of rules: 16, indexes: 1
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 22/176
quad nodes/vectors/bytes used: 30/104/832
DFA nodes/group64/bytes used: 6/19/11784
match nodes/bytes used: 6/768
total: 15760 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 64
memory consumed: 8388615
ACL: trie 0: number of rules: 6000, indexes: 4
acl context <acl_ctx>@0x3efded3b3400
   socket_id=-1
   alg=5
   max_rules=196608
   rule_size=128
   num_rules=0
   num_categories=0
   num_tries=0
acl context <acl_ctx>@0x3efded3b3400
   socket_id=-1
   alg=5
   max_rules=196608
   rule_size=128
   num_rules=0
   num_categories=0
   num_tries=0
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 974/7792
quad nodes/vectors/bytes used: 816/3211/25688
DFA nodes/group64/bytes used: 137/289/150024
match nodes/bytes used: 1181/151168
total: 336880 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 3108
memory consumed: 8388615
ACL: trie 0: number of rules: 15, indexes: 4
ACL: trie 1: number of rules: 12, indexes: 5
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 974/7792
quad nodes/vectors/bytes used: 816/3211/25688
DFA nodes/group64/bytes used: 137/289/150024
match nodes/bytes used: 1181/151168
total: 336880 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 3108
memory consumed: 8388615
ACL: trie 0: number of rules: 15, indexes: 4
ACL: trie 1: number of rules: 12, indexes: 5
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 0
memory consumed: 8388615
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 974/7792
quad nodes/vectors/bytes used: 816/3211/25688
DFA nodes/group64/bytes used: 137/289/150024
match nodes/bytes used: 1181/151168
total: 336880 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 3108
memory consumed: 8388615
ACL: trie 0: number of rules: 15, indexes: 4
ACL: trie 1: number of rules: 12, indexes: 5
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 974/7792
quad nodes/vectors/bytes used: 816/3211/25688
DFA nodes/group64/bytes used: 137/289/150024
match nodes/bytes used: 1181/151168
total: 336880 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 3108
memory consumed: 8388615
ACL: trie 0: number of rules: 15, indexes: 4
ACL: trie 1: number of rules: 12, indexes: 5
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 0/0
quad nodes/vectors/bytes used: 0/0/0
DFA nodes/group64/bytes used: 1/4/4104
match nodes/bytes used: 1/128
total: 6432 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 2
memory consumed: 8388615
ACL: trie 0: number of rules: 1, indexes: 1
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 0
memory consumed: 8388615
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 3/24
quad nodes/vectors/bytes used: 3/10/80
DFA nodes/group64/bytes used: 1/4/4104
match nodes/bytes used: 2/256
total: 6672 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 9
memory consumed: 8388615
ACL: trie 0: number of rules: 2, indexes: 2
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 0
memory consumed: 8388615
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 3/24
quad nodes/vectors/bytes used: 3/11/88
DFA nodes/group64/bytes used: 1/4/4104
match nodes/bytes used: 3/384
total: 6800 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 10
memory consumed: 8388615
ACL: trie 0: number of rules: 3, indexes: 2
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 0
memory consumed: 8388615
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 3/24
quad nodes/vectors/bytes used: 3/11/88
DFA nodes/group64/bytes used: 1/4/4104
match nodes/bytes used: 3/384
total: 6800 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 10
memory consumed: 8388615
ACL: trie 0: number of rules: 4, indexes: 2
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 0
memory consumed: 8388615
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 3/24
quad nodes/vectors/bytes used: 3/11/88
DFA nodes/group64/bytes used: 1/4/4104
match nodes/bytes used: 3/384
total: 6800 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 10
memory consumed: 8388615
ACL: trie 0: number of rules: 5, indexes: 2
running test_convert_rules(acl_ipv4vlan_tuple)
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 974/7792
quad nodes/vectors/bytes used: 816/3211/25688
DFA nodes/group64/bytes used: 137/289/150024
match nodes/bytes used: 1181/151168
total: 336880 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 3108
memory consumed: 8388615
ACL: trie 0: number of rules: 15, indexes: 4
ACL: trie 1: number of rules: 12, indexes: 5
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 9136/73088
quad nodes/vectors/bytes used: 13258/55366/442928
DFA nodes/group64/bytes used: 2242/4493/2302472
match nodes/bytes used: 25011/3201408
total: 6022096 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 16384
nodes created: 49647
memory consumed: 100663380
ACL: trie 0: number of rules: 22, indexes: 5
ACL: trie 1: number of rules: 5, indexes: 5
running test_convert_rules(acl_ipv4vlan_tuple, 
RTE_ACL_FIELD_TYPE_BITMASK type for IPv4)
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 974/7792
quad nodes/vectors/bytes used: 816/3211/25688
DFA nodes/group64/bytes used: 137/289/150024
match nodes/bytes used: 1181/151168
total: 336880 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 3108
memory consumed: 8388615
ACL: trie 0: number of rules: 15, indexes: 4
ACL: trie 1: number of rules: 12, indexes: 5
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 9136/73088
quad nodes/vectors/bytes used: 13258/55366/442928
DFA nodes/group64/bytes used: 2242/4493/2302472
match nodes/bytes used: 25011/3201408
total: 6022096 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 16384
nodes created: 49647
memory consumed: 100663380
ACL: trie 0: number of rules: 22, indexes: 5
ACL: trie 1: number of rules: 5, indexes: 5
running test_convert_rules(acl_ipv4vlan_tuple, RTE_ACL_FIELD_TYPE_RANGE 
type for IPv4)
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 997/7976
quad nodes/vectors/bytes used: 1052/4198/33584
DFA nodes/group64/bytes used: 195/405/209416
match nodes/bytes used: 1917/245376
total: 498560 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 4161
memory consumed: 8388615
ACL: trie 0: number of rules: 15, indexes: 4
ACL: trie 1: number of rules: 12, indexes: 5
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 9400/75200
quad nodes/vectors/bytes used: 13549/56210/449680
DFA nodes/group64/bytes used: 2603/5215/2672136
match nodes/bytes used: 26504/3392512
total: 6591728 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 16384
nodes created: 52056
memory consumed: 100663380
ACL: trie 0: number of rules: 22, indexes: 5
ACL: trie 1: number of rules: 5, indexes: 5
running test_convert_rules(acl_ipv4vlan_tuple: swap VLAN and PORTs order)
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 446/3568
quad nodes/vectors/bytes used: 600/1854/14832
DFA nodes/group64/bytes used: 530/924/475144
match nodes/bytes used: 544/69632
total: 565376 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 2120
memory consumed: 8388615
ACL: trie 0: number of rules: 15, indexes: 4
ACL: trie 1: number of rules: 8, indexes: 5
ACL: trie 2: number of rules: 4, indexes: 2
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 1071/8568
quad nodes/vectors/bytes used: 2328/7050/56400
DFA nodes/group64/bytes used: 3526/6266/3210248
match nodes/bytes used: 5235/670080
total: 3947504 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 16384
nodes created: 12160
memory consumed: 58720305
ACL: trie 0: number of rules: 23, indexes: 5
ACL: trie 1: number of rules: 4, indexes: 2
running test_convert_rules(acl_ipv4vlan_tuple: swap SRC and DST IPv4 order)
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 1040/8320
quad nodes/vectors/bytes used: 1319/5494/43952
DFA nodes/group64/bytes used: 162/331/171528
match nodes/bytes used: 2270/290560
total: 516560 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 2048
nodes created: 4791
memory consumed: 16777230
ACL: trie 0: number of rules: 17, indexes: 4
ACL: trie 1: number of rules: 10, indexes: 5
ACL: Gen phase for ACL "acl_ctx":
runtime memory footprint on socket -1:
single nodes/bytes used: 8822/70576
quad nodes/vectors/bytes used: 12788/53374/426992
DFA nodes/group64/bytes used: 2175/4359/2233864
match nodes/bytes used: 24100/3084800
total: 5818432 bytes
max limit: 18446744073709551615 bytes
ACL: Build phase for ACL "acl_ctx":
node limit for tree split: 16384
nodes created: 47885
memory consumed: 100663380
ACL: trie 0: number of rules: 22, indexes: 5
ACL: trie 1: number of rules: 5, indexes: 5
Test OK
RTE>>

Thanks,
Gowrishankar
> -----Original Message-----
> From: Gowrishankar [mailto:gowrishankar.m at linux.vnet.ibm.com]
> Sent: 2016年7月10日 15:51
> To: dev at dpdk.org
> Cc: Chao Zhu <chaozhu at linux.vnet.ibm.com>; Bruce Richardson
> <bruce.richardson at intel.com>; Konstantin Ananyev
> <konstantin.ananyev at intel.com>; Thomas Monjalon <thomas.monjalon at 6wind.com>;
> Cristian Dumitrescu <cristian.dumitrescu at intel.com>; Pradeep
> <pradeep at us.ibm.com>; gowrishankar <gowrishankar.m at linux.vnet.ibm.com>
> Subject: [PATCH v2 0/6] enable lpm, acl and other missing libraries in
> ppc64le
>
> From: gowrishankar <gowrishankar.m at linux.vnet.ibm.com>
>
> This patchset enables LPM, ACL and other few missing libs in ppc64le and
> also address few patches in related examples (ip_pipeline and l3fwd).
>
> Test report:
> LPM and ACL unit tests verified as in patch set v1.
> Same results as before observed.
>
> v2 changes:
> - enabling libs in config included as part of lib changes itself.
>
> gowrishankar (6):
>    lpm: add altivec intrinsics for dpdk lpm on ppc_64
>    acl: add altivec intrinsics for dpdk acl on ppc_64
>    ip_pipeline: fix lcore mapping for varying SMT threads as in ppc64
>    table: cache align rte_bucket_4_8
>    sched: enable sched library for ppc64le
>    l3fwd: add altivec support for em_hash_key
>
>   app/test-acl/main.c                                |   4 +
>   app/test/test_xmmt_ops.h                           |  16 +
>   config/defconfig_ppc_64-power8-linuxapp-gcc        |   7 -
>   examples/ip_pipeline/cpu_core_map.c                |  12 +-
>   examples/ip_pipeline/init.c                        |   4 +
>   examples/l3fwd/l3fwd_em.c                          |   8 +
>   lib/librte_acl/Makefile                            |   2 +
>   lib/librte_acl/acl.h                               |   4 +
>   lib/librte_acl/acl_run.h                           |   2 +
>   lib/librte_acl/acl_run_altivec.c                   |  47 +++
>   lib/librte_acl/acl_run_altivec.h                   | 328
> +++++++++++++++++++++
>   lib/librte_acl/rte_acl.c                           |  13 +
>   lib/librte_acl/rte_acl.h                           |   1 +
>   .../common/include/arch/ppc_64/rte_vect.h          |  60 ++++
>   lib/librte_lpm/Makefile                            |   2 +
>   lib/librte_lpm/rte_lpm.h                           |   2 +
>   lib/librte_lpm/rte_lpm_altivec.h                   | 154 ++++++++++
>   lib/librte_table/rte_table_hash_key8.c             |   2 +-
>   18 files changed, 649 insertions(+), 19 deletions(-)  create mode 100644
> lib/librte_acl/acl_run_altivec.c  create mode 100644
> lib/librte_acl/acl_run_altivec.h  create mode 100644
> lib/librte_eal/common/include/arch/ppc_64/rte_vect.h
>   create mode 100644 lib/librte_lpm/rte_lpm_altivec.h
>
> --
> 1.9.1
>
>
>




More information about the dev mailing list