ActivePivot 응용 프로그램을 새 서버 (Intel Xeon 4 소켓, 512GB 메모리)로 마이그레이션하고 있습니다. 배포 한 후 응용 프로그램 벤치 마크 (실시간 트랜잭션과 동시에 대규모 OLAP 쿼리가 혼합 됨)를 시작했습니다. 측정 된 성능은 비슷한 프로세서를 사용하지만 코어가 두 배 줄어들고 메모리가 두 배 줄어든 이전 서버보다 거의 두 배 느립니다.NUMA 아키텍처는 ActivePivot의 성능에 어떤 영향을 줍니까?
우리는 두 서버 간의 차이점을 조사했으며 큰 서버는 NUMA 아키텍처 (비 균일 메모리 액세스)을 가지고있는 것으로 보입니다. 각 CPU 소켓은 물리적으로 메모리의 1/4에 가깝지만 나머지 부분에서는 더 멀리 떨어져 있습니다 ... 우리의 응용 프로그램을 실행하는 JVM은 큰 전역 힙을 할당합니다. 각 NUMA 노드에 해당 힙의 무작위 비율이 있습니다. 우리의 분석은 메모리 액세스 패턴이 꽤 임의적이며 CPU 코어가 원격 메모리에 액세스하는 데 종종 시간을 낭비한다는 것입니다.
NUMA 서버에서 ActivePivot을 활용하는 것에 대한 피드백을 찾고 있습니다. ActivePivot 큐브 또는 스레드 풀을 구성하고 쿼리를 변경하고 운영 체제를 구성 할 수 있습니까?
numactl을 사용할 때, 그 노드에 메모리를 제한하기 위해'--cpunodebind = nodes, -N nodes' 스위치에'--membind = nodes, -m nodes' 스위치를 추가하는 것을 권장합니다. 그렇지 않으면 메모리의 작은 부분은 대개 외부 노드에 할당됩니다 ('-XX : + UseNUMA'로조차도) –