Name
Last commit
Last update
..
ISSUED numa, result modify
RESULT numa, result init
README.md numa overview init

logo

NUMA 구성 Review

!참고 : numactl 명령이 존재하지 않을 경우 다음과 같이 패키지를 설치해야 한다.

# yum install nuamctl

이제 다음과 같이 현재 프로세스의 NUMA 정책 설정을 표시 하는데, 현재 서버 머신은 Total 32Core인 것을 확인할 수 있다.

# numactl --show
policy: default
preferred node: current
physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
cpubind: 0 1
nodebind: 0 1
membind: 0 1

추가적으로 NUMA H/W 정책도 같이 확인 한다. 현재 서버 머신은 Total 128GB의 메모리가 설치되어 있는 것을 알 수 있다.

# numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23
node 0 size: 63916 MB
node 0 free: 1873 MB
node 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
node 1 size: 64484 MB
node 1 free: 54 MB
node distances:
node   0   1
  0:  10  21
  1:  21  10

numastat

numastat 명령은 자주 사용되는 명령으로서, 다음과 같이 현재 각 필드 별 상태를 확인할 수 있다.

# numastat
                         node0             node1
numa_hit              2303089960      5856080919
numa_miss              904157931          711940
numa_foreign              711940       904157931
interleave_hit             33473           32804
local_node            2303093653      5856042930
other_node             904154238          749929

참고적으로 위의 각 필드의 값은 페이지의 개수 이며, 결과적으로 node0에 numa_hit가 많은 상태이기 때문에 이를 특정 Node 또는 균등하게 할당되는 것이 Key Point 이다.

numastat Overview

  • numa_hit

해당 노드에 성공적으로 할당된 페이지의 수 이다.

  • numa_miss

원래 의도된 노드에 메모리가 부족하여, 다른 노드에 할당된 페이지의 수이다. 이 필드의 값이 낮으면 CPU 성능이 최적화 되어 있음을 의미 한다.

  • numa_foreign

다른 노드에 할당하려 했으나, 처음에 의도된 노드에 할당된 페이지의 수이다. 이 필드의 값이 낮으면 CPU 성능이 최적화 되어 있음을 의미 한다.

  • interleave_hit

노드별로 균등하게(RoundRobin), 메모리가 할당된 페이지의 수이다.

  • local_node

해당 노드의 프로세스에 의해 성공적으로 할당된 페이지 수이다. numa_hit의 값으로 봐도 무방하다.

  • other_node

다른 노드에서 실행된 프로세스에 의해 할당된 페이지의 수이다. numa_miss 값과는 다르며, 일반적으로 interleave 정책에서 이 값이 상승되는 것을 확인할 수 있다.