secondary process fails to initialize memory

Bug #1814834 reported by Itsuro Oda
6
This bug affects 1 person
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
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to networking-spp (master)

Reviewed: https://review.openstack.org/634842
Committed: https://git.openstack.org/cgit/openstack/networking-spp/commit/?id=cdad40daee79e52ce25f3d53a084ed1f77b6acb0
Submitter: Zuul
Branch: master

commit cdad40daee79e52ce25f3d53a084ed1f77b6acb0
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: If2e41db00eebd641ae208d8dec4abdf24fd3a04f
    Closes-Bug: #1814834

Changed in networking-spp:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.