On 6/6/2017 11:25 PM, Imre Pinter wrote:
[...]
I've double-checked it, and if I combine Step (1) and Step (2), then OVS start 
end up in the following error:
EAL: Detected 32 lcore(s)
EAL: 1024 hugepages of size 2097152 reserved, but no mounted hugetlbfs found 
for that size
EAL: Probing VFIO support...
EAL: Not enough memory available on socket 1! Requested: 1024MB, available: 0MB
PANIC in rte_eal_init():
Cannot init memory

I experienced the same behavior with testpmd.
However when they use hugepages from the 'huge_qemu_1G' mountpoint, then they 
start properly.

Br,
Imre

Ah yes, I tried by myself and encounter similar error as you. And try to deep dive into kernel hugetlb related code to see what's going on:

The hugepage allocation path is: hugetlb_fault -> hugetlb_no_page -> alloc_huge_page -> dequeue_huge_page_vma. Inside dequeue_huge_page_vma(), we can see the code logic to iterate node. But from huge_zonelist(), we can see "interleave" policy only applies to a VMA. In our case, each hugepage file is an independent VMA. As a result, we will go though all hugepages from node to another node one by one.

Sorry that I take "interleave" as granted. Fortunately, there is a try to fix this: http://dpdk.org/dev/patchwork/patch/25069/. Besides, we can write a simple application which will allocate all hugepages except those used by OVS-DPDK.

Thanks,
Jianfeng

Reply via email to