Hugepage in DPDK - Basics

Page content

Basic use of hugepage

2022-03-14-dpdk-hugepage-1.png

DPDK application이 hugepage를 사용할 때 다음과 같은 2가지 디렉토리를 사용한다.

  • DPDK runtime config files
    • /var/run/dpdk 로 고정된 경로를 사용요
    • DPDK 에서 hugepage를 어떻게 사용하는 지에 대한 meta data를 저장
  • hugepage map
    • hugepage를 사용하기 위해 hugetlbfs 를 이용할 때 생성하는 hugepage map 파일들이 위치한 곳.
    • DPDK는 이곳에 hugepage의 단위 크기를 갖는 file을 생성하고, mmap()을 사용하여 hugepage를 접근
    • 만일 시스템에 2개 이상의 hugetlbfs가 마운트된 위치가 있는 경우 DPDK process를 실행할 때 --huge-dir 옵션을 사용하여 특정 위치를 사용하도록 할 수 있다.

Multi-process support

2022-03-14-dpdk-hugepage-2.png

각자 virtual address space를 갖는 두 개이상의 DPDK process는 위 두 개 디렉토리를 공유하여 hugepage에 구성된 DPDK resource들(memzone 및 memzone위에 구성되는 DPDK ring 등)을 공유할 수 있다.

참고로, 위와 같이 두 개의 process가 hugepage를 공유할 때 하나의 DPDK process만 hugepage map 파일을 만들어 DPDK memzone을 생성하고, 나머지 DPDK process들은 이미 생성된 memzone을 사용한다. 이때 hugepage map을 만들고 memzone을 생성하는 DPDK process를 통상 primary process라고 부르고, primary process가 생성한 hugepage를 참조하는 DPDK process들을 secondary process라고 부른다.

Simplified view

2022-03-14-dpdk-hugepage-3.png 2022-03-14-dpdk-hugepage-4.png

#til #dpdk