secondary process fails to initialize memory
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
networking-spp |
Fix Released
|
Undecided
|
Itsuro Oda |
Bug Description
spp_vf and spp_mirror sometime fail with the following log message at initialization.
---
Jan 07 15:25:09 spp-s5 spp_vf[31829]: EAL: Cannot get a virtual area at requested address: 0x7ffbefe00000 (got 0x7ffbe8000000)
Jan 07 15:25:09 spp-s5 spp_vf[31829]: EAL: Could not mmap 17179869184 bytes at [0x7ffbefe00000] - please use '--base-virtaddr' option
Jan 07 15:25:09 spp-s5 spp_vf[31829]: EAL: Cannot preallocate VA space for hugepage memory
Jan 07 15:25:09 spp-s5 spp_vf[31829]: EAL: FATAL: Cannot init memory
---
As a result of the investigation, it turned out that the problem arises for the following reasons.
The primary process(without --base-virtaddr) mmaps the memory segments to the address left to the system.
A secondary process tries to mmap the memory segments to the same address as primary.
At this time, a thread already operating in the secondary process may have already mmaped the same address.
One workaround is to specify an address that the system does not select for the --base-virtaddr option when starting the primary process.
Note that this problem occurs in DPDK v18.08 or earlier.
In v18.11, the mmap address of the memory segments starts from 0x100000000 without specifying the --base-virtaddr option. (Equivalent to specifying 0x100000000 for --base-virtaddr)
Changed in networking-spp: | |
assignee: | nobody → Itsuro Oda (oda-g) |
status: | New → In Progress |
Reviewed: https:/ /review. openstack. org/634842 /git.openstack. org/cgit/ openstack/ networking- spp/commit/ ?id=cdad40daee7 9e52ce25f3d53a0 84ed1f77b6acb0
Committed: https:/
Submitter: Zuul
Branch: master
commit cdad40daee79e52 ce25f3d53a084ed 1f77b6acb0
Author: Itsuro Oda <email address hidden>
Date: Tue Feb 5 10:26:11 2019 +0900
specifying --base-virtaddr option to spp_primary
It is workaround for memory initialization failure of secondary
processes. Seconday processes try to map to the same address
as the primary process, but it happens that the address has
already been mapped. Avoid this problem by specifying the
address that the primary process maps to.
Change-Id: If2e41db00eebd6 41ae208d8dec4ab df24fd3a04f
Closes-Bug: #1814834