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 > > >