VPP/AArch64

From fd.io
< VPP
Revision as of 15:32, 30 November 2017 by GabrielGanne (Talk | contribs)

Jump to: navigation, search

Meeting Details

Weekly on Wednesdays, 8-9am PT. FD.io Zoom Meeting room

Join from PC, Mac, Linux, iOS or Android: https://zoom.us/j/5301185804 or https://zoom.us/my/fastdata

Or iPhone one-tap (US Toll):  +14086380968,,5301185804# or +16465588656,,5301185804#

Or Telephone:
    Dial: +1 408 638 0968 (US Toll) or +1 646 558 8656 (US Toll)
    +1 855 880 1246 (US Toll Free)
    +1 877 369 0926 (US Toll Free)
    Meeting ID: 530 118 5804
    International numbers available: https://zoom.us/zoomconference?m=ppBOQMQTVxGYmbxNsVemC6KNo8eX2ptF

IRC Channel

#fdio-arm on freenode.net

Recent Patches

support modern device id Merged 11/28 https://gerrit.fd.io/r/#/c/9596/
enable crc32 on aarch64 (fixup) Merged 11/15 https://gerrit.fd.io/r/#/c/9418/
BIER tests fix Merged 11/14 https://gerrit.fd.io/r/#/c/9413/
Map SVM regions at a sane offset on arm64 Merged 11/10 https://gerrit.fd.io/r/#/c/9342/
bfd tests fix Merged 11/07 https://gerrit.fd.io/r/#/c/9243/
debian packaging fix Merged 11/06 https://gerrit.fd.io/r/#/c/9239/
lb test fix Merged 10/31 https://gerrit.fd.io/r/#/c/9067/
conditional x86intrin.h inclusion Merged 10/25 https://gerrit.fd.io/r/#/c/8952/
fix test_lb_ip4_gre6() cleanup (not enough to fix the tests completely) Merged 10/24 https://gerrit.fd.io/r/#/c/8992/
null-terminate some formatted string Merged 10/20 https://gerrit.fd.io/r/#/c/8922/
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 09/11 https://gerrit.fd.io/r/#/c/8372/
Native arm64 build: dpdk/Makefile change Merged 08/31 https://gerrit.fd.io/r/#/c/8228/

Might want to have a look at this patch which adds "make config"

https://gerrit.fd.io/r/#/c/9200/

Also this other patch proposal (probably not as complete) allows to toggle off some parts of the code such as libvom, and therefore allows compilation on small systems

https://gerrit.fd.io/r/#/c/9186/

Known Issues

Compilation may fail on systems with less than 1GB memory per core. One workaround is to search for -j in build-root/Makefile and multiply by 1 instead of 2.

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

Unit tests

Cmd Status / Issues
make test 1
make test-all 1
make test-debug 1, 2
make test-all-debug 1, 2

Timing consideration on platform: Hierofalcon with Cortex-A57 & Fedora 26

Cmd Timing
make build ~12 min
make build-release ~16 min
make test ~20 min
make test-debug ~23 min

Issues

1. Random initialization failures; "Map SVM regions at a sane offset on arm64" is committed

2. Some tests need timeout finetuning:

Example test_cflow_packet:

assertAlmostEqual(cflow[IPFIX].exportTime, nowUTC, delta=5)

Test order

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

Packaging

Distro Cmd Status
Fedora 26 (Server Edition) make pkg-rpm OK
Ubuntu 17.10 make pkg-deb OK
Ubuntu 16.04.3 LTS make pkg-deb OK

CSIT func & perf

https://wiki.fd.io/view/CSIT/AArch64#TODO

AArch64 Porting & Tuning

VPP-1064 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
VPP-1065 Investigate "show cpu" output and Arm CPU feature detection (AES, SHA1, SHA2, CRC32, ATOMICS) via hwcaps. src/vppinfra/cpu.[ch]
VPP-1066 Use ISB or YIELD on ARM64
VPP-1067 Use REV on ARM64 (merged)

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

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

Investigate dual/quad loop tuning, e.g. l2_forward().

SIMD

  • CLIB_HAVE_VEC128 also covers 256-bit. Add CLIB_HAVE_VEC256?
  • ixge.[ch] - 128-bit vector types with plain C. Needs to be enabled.
  • mheap.c - requires NEON implementation of is_equal
  • hash.h - requires NEON implementation of irotate
  • vnet_classify.h - 128-bit vector types with plain C. Needs to be enabled.
  • vhost-user.c - SSE4.2 only. Implement range search using NEON.
  • ip4_mtrie.h - 128-bit vector types with plain C. Needs to be enabled.

Meeting Minutes

11/29/2017

11/22/2017

  • VPP CI
    • 3 ThunderX for Chrismas
  • CSIT
  • Next steps
    • VPP
    • CSIT
      • structure work & send email (Gabriel)
      • is xxhash vs crc32 finished ? (Gabriel)
      • ask Maciek & setup a presentation meeting with someone from CSIT (Tina)
      • find a time to reschedule this meeting before the CSIT weekly call (Brian)

11/15/2017

  • VPP upstream status
    • build && build-release OK
    • "make test" && "make test-debug" OK
    • packaging:
      • Ubuntu 16.04 OK
      • Ubuntu 17.10 ? (TBC)
      • fedora-26 OK
  • vpp continuous test
    • all task required for jenkin's "verify" job are ready
    • TODO: request gerrit hook to Dave Barachs / vpp-dev (NB & GG)
    • set up ci in fdio lab
  • CSIT
    • setting up env
    • ThunderX platforms should arrive this week
    • csit work sharing

11/8/2017

  • Unit tests
    • Tests pass except for random initialization failures
    • Need to hear back from upstream about Extended unit tests
  • Should we run plugins such as NSH SFC?
  • Hardware to lab
    • Huawei h/w stalled
    • 3x ThunderX shipping to FD.io lab
  • CSIT replication
    • Cavium replicating on ThunderX2; getting started
  • Let's track our work in Jira; Brian to migrate tasks to Jira

10/25/2017

  • Gabriel working on vpp init failure in linux_pci_init()
  • Kumar to check with GeorgeZ on Huawei boards shipped to CSIT; need to verify tests also on this environment (package versions from distro)
  • Brian to check whether anything else needs to be done besides 'make test' for upstream enablement