Difference between revisions of "VPP/AArch64"

From fd.io
< VPP
Jump to: navigation, search
m (CSIT unit tests)
(CSIT unit tests)
Line 16: Line 16:
  
 
== CSIT unit tests ==
 
== CSIT unit tests ==
 +
 +
<code>General note:</code>
 +
 +
Some tests are not meant to be played alone.
 +
 +
For example the test_l2bd_arp_term_\d+ list
 +
* test_1: create 5 hosts
 +
* test_2: delete 3 of the hosts created by test_1
 +
...
 +
 +
Those tests should be played grouped. For example in the case above ;
 +
<syntaxhighlight lang="bash">
 +
# works
 +
make test TEST=*.TestL2bdArpTerm.*
 +
# does not work
 +
make test V=1 TEST=*.TestL2bdArpTerm.test_l2bd_arp_term_01
 +
make test V=1 TEST=*.TestL2bdArpTerm.test_l2bd_arp_term_02
 +
...
 +
</syntaxhighlight>
  
 
<code>make test-debug</code> status: ?
 
<code>make test-debug</code> status: ?
Line 21: Line 40:
 
Failed:
 
Failed:
 
* TestIP6VrfMultiInst.test_ip6_vrf_02
 
* TestIP6VrfMultiInst.test_ip6_vrf_02
* TestL2bdArpTerm.test_l2bd_arp_term_10
 
* TestL2bdArpTerm.test_l2bd_arp_term_14
 
* TestL2bdArpTerm.test_l2bd_arp_term_02
 
* TestL2bdArpTerm.test_l2bd_arp_term_11
 
* TestL2bdArpTerm.test_l2bd_arp_term_04
 
* TestL2bdArpTerm.test_l2bd_arp_term_13
 
 
* TestIP6VrfMultiInst.test_ip6_vrf_02
 
* TestIP6VrfMultiInst.test_ip6_vrf_02
 
* TestIPv4FibCrud.test_3_add_new_routes
 
* TestIPv4FibCrud.test_3_add_new_routes
Line 34: Line 47:
 
* TestIPv4FibCrud.test_2_del_routes
 
* TestIPv4FibCrud.test_2_del_routes
  
<code>make test-all-debug</code> status: ?
+
<code>make test-all-debug</code>
  
 
status: no additional test failure
 
status: no additional test failure
Line 47: Line 60:
 
* TestIP6VrfMultiInst.test_ip6_vrf_02
 
* TestIP6VrfMultiInst.test_ip6_vrf_02
 
* TestL2bdMultiInst.test_l2bd_inst_03
 
* TestL2bdMultiInst.test_l2bd_inst_03
 
Other failures:
 
* TestL2bdArpTerm.test_l2bd_arp_term_10
 
* TestL2bdArpTerm.test_l2bd_arp_term_11
 
* TestL2bdArpTerm.test_l2bd_arp_term_13
 
* TestL2bdArpTerm.test_l2bd_arp_term_02
 
* TestL2bdArpTerm.test_l2bd_arp_term_14
 
* TestL2bdArpTerm.test_l2bd_arp_term_04
 
  
 
Unknown (vpp init error):
 
Unknown (vpp init error):

Revision as of 07:22, 19 October 2017

Patches

lb plugin - fix format() type mismatches Merged 10/16 https://gerrit.fd.io/r/#/c/8755/
Use AESNI=y only on x86_64 machines Merged 10/14 https://gerrit.fd.io/r/#/c/8622/
Improved arm64 chip detection Merged 9/11 https://gerrit.fd.io/r/#/c/8372/
Native arm64 build: dpdk/Makefile change Merged 8/31 https://gerrit.fd.io/r/#/c/8228/

Known Issues

GCC 5.3.x ICEs during FP register allocation. Please use GCC 5.4+.

CSIT unit tests

General note:

Some tests are not meant to be played alone.

For example the test_l2bd_arp_term_\d+ list

  • test_1: create 5 hosts
  • test_2: delete 3 of the hosts created by test_1

...

Those tests should be played grouped. For example in the case above ;

# works
make test TEST=*.TestL2bdArpTerm.*
# does not work
make test V=1 TEST=*.TestL2bdArpTerm.test_l2bd_arp_term_01
make test V=1 TEST=*.TestL2bdArpTerm.test_l2bd_arp_term_02
...

make test-debug status: ?

Failed:

  • TestIP6VrfMultiInst.test_ip6_vrf_02
  • TestIP6VrfMultiInst.test_ip6_vrf_02
  • TestIPv4FibCrud.test_3_add_new_routes
  • TestIp4VrfMultiInst.test_ip4_vrf_02
  • TestL2bdMultiInst.test_l2bd_inst_02
  • TestL2bdMultiInst.test_l2bd_inst_03
  • TestIPv4FibCrud.test_2_del_routes

make test-all-debug

status: no additional test failure

make test

VPP cleanup failure:

  • TestIPPunt.test_ip_punt
  • TestIPv4FibCrud.test_2_del_routes
  • TestIPv4FibCrud.test_3_add_new_routes
  • TestIp4VrfMultiInst.test_ip4_vrf_02
  • TestIP6VrfMultiInst.test_ip6_vrf_02
  • TestL2bdMultiInst.test_l2bd_inst_03

Unknown (vpp init error):

  • TestIpIrb.test_0103_ip6_irb_1
  • TestIpIrb.test_1201_ip6_irb_1
  • TestIpIrb.test_1112_ip6_irb_1
  • TestL2fib.test_l2_fib_delete12
  • TestSRv6.test_SRv6_End_X_with_PSP
  • TestL2bdMultiInst.test_l2bd_inst_02

make test-all

status: no additional test failure

Misc

Support multiple cache line sizes per architecture. AArch64 is currently hard coded to 128B. For native build, inspect ARMv8 Main ID Register in Makefile and pass cache line size as compiler option, e.g. -DCACHE_LINE_SIZE=128.

Investigate "show cpu" output and Arm CPU feature detection (AES, SHA1, SHA2, CRC32, ATOMICS) via hwcaps. src/vppinfra/cpu.[ch]

Review use of Arm architected timer in src/vppinfra/time.[ch]

Use ISB or YIELD in src/vppinfra/smp.h

Use REV in src/vppinfra/byte_order.h

Review use of __sync_xxx/__atomic_xxx builtins to ensure correct memory ordering on non-TSO machines.

Investigate hash performance (CRC32 vs xxhash) e.g. in src/vppinfra/bihash_8_8.h. Dependent on Arm CPU feature detection.

Investigate memcpy performance (src/vppinfra/string.h); both inlined-by-compiler and libc versions.

SIMD

  • Investigate uses of CLIB_HAVE_VEC128 that are not implemented on Arm (mheap_bootstrap.h, vhost-user.c, ixge.c)
  • Investigate uses of splat for initialization
  • Investigate uses of SIMD types with plain C bit-wise/arith ops (code generation) (dpdk/node.c, ...)

Investigate current tuning of dual/quad loop optimizations for hiding memory latency, e.g. l2_forward().