네 가지 위치를 따로 확인합니다
DPDK 25.11 문서를 기준으로 NIC의 NUMA 위치, RX descriptor ring, mbuf pool, 패킷을 처리하는 lcore를 나눕니다. rte_eth_dev_socket_id의 -1은 위치 미확인 또는 잘못된 port를 나타낼 수 있습니다. rte_errno와 장치 정보를 확인해야 하며 -1을 node 0으로 읽지 않습니다.
큐 설정은 기존 패킷 풀을 옮기지 않습니다
단일 풀 수신 구성의 rte_eth_rx_queue_setup에서 socket_id는 RX descriptor 메모리의 배치 조건입니다. mb_pool은 별도로 만든 패킷 버퍼 풀입니다. rte_pktmbuf_pool_create의 socket_id로 풀의 메모리 배치를 정합니다. BUFFER_SPLIT을 쓰는 다중 segment 구성은 별도 rx_seg 조건을 확인해야 하므로 단일 풀 그림에 섞지 않습니다.
장치: NIC가 연결된 NUMA node 확인
메모리: RX descriptor의 socket_id와 mbuf pool의 socket_id를 각각 확인
실행: 큐를 poll하는 lcore의 CPU affinity와 node 확인
lcore 번호와 OS CPU 번호도 구분합니다
rte_lcore_to_socket_id는 lcore와 socket의 관계를 제공합니다. EAL의 lcore 매핑과 스레드 affinity도 함께 확인합니다. 한 큐를 여러 코어가 무조건 안전하게 poll한다고 가정하지 말고 PMD의 큐 소유·동시 접근 조건을 따릅니다. 다른 node로 패킷을 넘기는 pipeline이라면 다음 소비자의 접근도 포함해야 합니다.
배치를 맞췄다고 성능이 검증된 것은 아닙니다
같은 NIC·PMD·패킷 크기·큐 수·burst·offload 조건에서 처리량, drop, 지연 분포를 비교합니다. 원격 배치가 성능에 영향을 줄 수 있지만 모든 패킷이 매번 원격 DRAM을 읽는다는 뜻은 아닙니다. CPU cache와 실제 데이터 경로를 확인해야 합니다. 이 글은 실기 DPDK 시험 결과나 고정 배수의 향상 보장이 아닙니다.