VPP/AArch64
Contents
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
FD.io Lab
Platform | Status |
---|---|
SoftIron OverDrive 1000 | Arrived - One unit RMA'd. LF RT ticket open to add these machines as Jenkins slaves for CI build jobs. |
Huawei TaiShan 2280 | Shipping |
Marvell MACCHIATObin | Ordering |
Build, unit test, packaging
The following is tracked manually until hardware is integrated into upstream FD.io CI
Cmd | Status | timing |
---|---|---|
make bootstrap
|
OK | 0m45 |
make build
|
OK | 11m45 |
make build-release
|
OK | 14m56 |
make test
|
OK | 26m7 |
make test-all
|
OK | 36m15 |
make test-debug
|
OK | 22m32 |
make test-all-debug
|
OK | 33m29 |
Status on commit: ceb4d05ba0fb9771069b0081b928a9e75401fc87 (Thu Dec 14 09:25:31 2017)
Timing consideration on platform: Hierofalcon with Cortex-A57 & Fedora 26
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/
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
https://wiki.fd.io/view/CSIT/AArch64
AArch64 Porting & Tuning
- Review use of Arm architected timer in
src/vppinfra/time.[ch]
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.
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+.
Try disabling ASLR if experiencing random crashes: sysctl -w kernel.randomize_va_space=0
Recent Patches
show cpu microarchitecture | https://gerrit.fd.io/r/#/c/9929/ | Gabriel Ganne | ||
more extended tests fixes | Merged 12/16 | https://gerrit.fd.io/r/#/c/9880/ | Gabriel Ganne | |
Use crc32 wrapper | Merged 12/16 | https://gerrit.fd.io/r/#/c/9854/ | VPP-1086 | Gabriel Ganne |
implement clib_smp_pause() for arm and aarch64 platform | Merged 12/15 | https://gerrit.fd.io/r/#/c/9820/ | VPP-1066 | Kevin Wang |
make "test-all" target pass again (for all platforms) | Merged 12/13 | https://gerrit.fd.io/r/#/c/9702/ | Gabriel Ganne | |
add NEON versions for ethernet_frame_is_tagged() | https://gerrit.fd.io/r/#/c/9749/ | Gabriel Ganne | ||
fill "show cpu" Flag list on aarch64 platforms | Merged 12/06 | https://gerrit.fd.io/r/#/c/9727/ | Gabriel Ganne | |
remove smp dead code (VPP-1066) | Merged 12/06 | https://gerrit.fd.io/r/#/c/9730/ | Gabriel Ganne | |
net/virtio: support modern device id | Merged 11/28 | https://gerrit.fd.io/r/#/c/9596/ | Gabriel Ganne | |
armv8 crc32 - fix macro name | Merged 11/15 | https://gerrit.fd.io/r/#/c/9418/ | Gabriel Ganne | |
bier - fix node table declaration | Merged 11/14 | https://gerrit.fd.io/r/#/c/9413/ | Gabriel Ganne | |
Map SVM regions at a sane offset on arm64 | Merged 11/10 | https://gerrit.fd.io/r/#/c/9342/ | Brian Brooks | |
bfd tests fix | Merged 11/07 | https://gerrit.fd.io/r/#/c/9243/ | Gabriel Ganne | |
debian packaging fix | Merged 11/06 | https://gerrit.fd.io/r/#/c/9239/ | Gabriel Ganne | |
lb test fix | Merged 10/31 | https://gerrit.fd.io/r/#/c/9067/ | Gabriel Ganne | |
conditional x86intrin.h inclusion | Merged 10/25 | https://gerrit.fd.io/r/#/c/8952/ | Gabriel Ganne | |
fix test_lb_ip4_gre6() cleanup (not enough to fix the tests completely) | Merged 10/24 | https://gerrit.fd.io/r/#/c/8992/ | Gabriel Ganne | |
null-terminate some formatted string | Merged 10/20 | https://gerrit.fd.io/r/#/c/8922/ | Gabriel Ganne | |
lb plugin - fix format() type mismatches | Merged 10/16 | https://gerrit.fd.io/r/#/c/8755/ | Gabriel Ganne | |
Use AESNI=y only on x86_64 machines | Merged 10/14 | https://gerrit.fd.io/r/#/c/8622/ | Brian Brooks | |
Improved arm64 chip detection | Merged 09/11 | https://gerrit.fd.io/r/#/c/8372/ | Brian Brooks | |
Native arm64 build: dpdk/Makefile change | Merged 08/31 | https://gerrit.fd.io/r/#/c/8228/ | Brian Brooks |
Meeting Minutes
1/3/2018
- FD.io lab
- One OD1000 sent for RMA
- Huawei PO sent out
- Cavium PO sent out (?)
- VPP
- Gabriel working on patch for "show cpu" to display MIDR as human readable
- Nitin sent preliminary patch for vhost-user NEON impl
- Seeing perf differences on different cores; tradeoff is single-threaded perf vs. NEON
- Kumar built and unit test successfully on D03
- Nitin to resume patch for supporting different cache line sizes for the same arch
- CSIT
- Gabriel cleaned up WIP patch; ready for review
- Kumar starting CSIT func tests with Ubuntu VMs
- Scripts for running on dedicated hardware need to be modified, e.g. PCIe resources
- Kumar to send doc on testing
- Performance
- Kumar to start thread on performance testing
- AIs
- Brian: Check with Tina on shipping and open LF RT ticket once they have arrived
- Brian: Need a way to choose either SW or NEON impl based on chip
- Gabriel: Create list of broken CSIT tests for 2-node topology
12/20/2017
No meeting next week - Dec 27
- FD.io lab
- OD1000s - build only
- 1 of 3 needs to be RMAd
- Can these be up in time to show 'make test' passes on ARM for 18.01 release report?
- TaiShan
- PO in progress
- ThunderX - build only
- PO went out
- OD1000s - build only
- VPP
- Patches / JIRAs
- Patch for extended test failure, but still more (new) extended test failures - Gabriel
- Nitin to post vhost-user.c changes for NEON
- Nitin will finish Gabriel's original NEON patch to add CLIB_HAVE_VEC_128
- Can we share code on Github e.g. NEON perf tests?
- Patches / JIRAs
- CSIT
- Leading question: How many CSIT test cases are passing/failing?
- Environment issues preventing running through all CSIT test cases; Gabriel needs dedicated machines or more RAM
- Cavium & Huawei will join Gabriel in CSIT replication on ARM hardware next week
- Cavium previously ran vhost test cases manually, now moving to CSIT
12/13/2017
- VPP
- Quick overview of work items
- Waiting to hear back from LF about OD1000 connectivity
- Changes needed to ci-mgmt
- CSIT
- Starting to reproduce CSIT on x86 and ARM (with Gabriel's WIP patch)
- Some issues with environment variables (perf tests on 2-node)
- Need Nexus to support aarch64 packages
- Need a contact for Nexus
- Starting to reproduce CSIT on x86 and ARM (with Gabriel's WIP patch)
- Share known issues on wiki!
- Request CSIT 'deep dive'
12/06/2017
- Can we access the OD1000 in csit lab ?
- currently mainly working with VMs
- added dedicated wiki page for CSIT : https://wiki.fd.io/view/CSIT/AArch64
- WIP : https://gerrit.fd.io/r/#/c/9474/
11/29/2017
- VPP
- vhost-user.c - SSE4.2 only. Implement range search using NEON. (nitin)
- OD1000 status ?
- build only
- can we access them ?
- what wan we do to help in general ?
- x86 intrinsic review
- build VPP on ARM VM on x86
- CSIT
- what platforms wil lbe made available
11/22/2017
- VPP CI
- 3 ThunderX for Chrismas
- CSIT
- func on VM vs perfs on HW
- func on x86 VMs OK with 2 nodes
- DPDK integration WIP : https://gerrit.fd.io/r/#/c/9474/
- issues
- how to access the lab ?
- 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