dpdk 예제

예제는 흐름 규칙을 빌드하기 위한 구현을 보유하는 예제 논리 및 flow_blocks.c를 포함하는 main.c의 2개의 파일로 빌드됩니다. 이 예제에서는 포트가 rte_eth_rx_queue_setup() 및 rte_eth_tx_queue_setup() 함수를 사용하여 1개의 RX 및 1TX 큐로 설정됩니다. 다른 가능한 RTE_TARGET 값 및 컴파일에 대한 추가 정보는 Linux에서 DPDK 컴파일 또는 FreeBSD에서 DPDK 컴파일을 참조하십시오. 응용 프로그램은 $RTE_SDK/예제/앱 디르/빌드 또는 $RTE_SDK/예제/앱 디르/$RTE_TARGET으로 출력됩니다. 이러한 예제는 단순에서 합리적으로 복잡한 것까지 다양하지만 대부분은 DPDK의 특정 기능을 보여 주도록 설계되었습니다. 더 흥미로운 예 중 일부는 아래에 강조 표시됩니다. 위의 예제에서는 컴파일된 응용 프로그램이 빌드 하위 디렉터리에 기록됩니다. 응용 프로그램을 다른 위치에 기록하려면 make 명령에 O=/path/to/build/directory 옵션을 지정할 수 있습니다. 다음 장에는 더 많은 예제가 나와 있습니다. 문서화된 각 샘플 응용 프로그램은 응용 프로그램을 컴파일, 구성 및 실행하는 방법과 코드의 주요 기능을 설명하는 방법을 보여 준다. Hello World 샘플 응용 프로그램은 작성할 수 있는 가장 간단한 DPDK 응용 프로그램의 예입니다. 응용 프로그램은 단순히 모든 사용 lcore에 “helloworld”메시지를 인쇄합니다. 추가 샘플 응용 프로그램은 ${RTE_SDK}/예제 디렉토리에 포함됩니다.

이러한 샘플 응용 프로그램은 이 설명서의 이전 섹션과 유사한 방식으로 빌드및 실행할 수 있습니다. 또한 응용 프로그램에 대한 설명, 컴파일 및 실행에 대한 특정 지침 및 코드에 대한 몇 가지 설명은 DPDK 샘플 응용 프로그램 사용 설명서를 참조하십시오. EAL이 초기화되면 응용 프로그램은 lcore에서 함수를 시작할 준비가 되었습니다. 이 예제에서는 사용 가능한 모든 lcore에서 lcore_hello()가 호출됩니다. 다음은 함수의 정의입니다: DPDK 응용 프로그램에 의한 EAL 계층의 초기화시 사용할 논리 코어와 해당 소켓 위치가 표시됩니다. 이 정보는 예를 들어 cat /proc/cpuinfo를 실행하여 /proc/cpuinfo 파일을 검사하여 시스템의 모든 코어에 대해 결정될 수도 있습니다. 각 프로세서에 대해 나열된 물리적 ID 특성은 프로세서가 속한 CPU 소켓을 나타냅니다. 이 기능은 다른 프로세서를 사용하여 논리 코어가 소켓에 매핑되는 것을 이해하는 경우에 유용할 수 있습니다. 다음은 DPDK Linux 환경에서 실행되는 helloworld 응용 프로그램을 만드는 예제입니다. 이 예제는 ${RTE_SDK}/예제 디렉토리에서 찾을 수 있습니다. 위의 예에서 헬로월드는 DPDK의 디렉토리 구조에 있었습니다.

그러나 DPDK 구조를 그대로 유지하기 위해 디렉터리 구조 외부에 위치했을 수 있습니다. 다음 경우 helloworld 응용 프로그램이 새 시작 지점으로 새 디렉터리로 복사됩니다. 소켓-mem 옵션을 사용하여 특정 소켓에 대한 특정 양의 메모리를 요청할 수 있습니다. 이는 –socket-mem 플래그를 제공하고 각 소켓에 요청된 메모리 양을 공급하여 소켓 1에 대해서만 512MB를 시도하고 예약하는 경우 수행됩니다. 마찬가지로 4개의 소켓 시스템에서 각 소켓 0과 2에만 1GB 메모리를 할당하려면 매개 변수 –socket-mem=1024,0,1024를 사용할 수 있습니다. 명시적으로 참조되지 않은 CPU 소켓(예: 이 경우 소켓 3)에는 메모리가 예약되지 않습니다. DPDK가 각 소켓에 충분한 메모리를 할당할 수 없는 경우 EAL 초기화가 실패합니다. 예를 들어 사용자가 -q 4를 지정하면 응용 프로그램은 하나의 lcore로 4개의 포트를 폴링할 수 있습니다.

Share on Google+Share on FacebookTweet about this on Twitter
error: Садржај је заштићен !!