아, 이것이 장기적으로 가능한 일이라는 것을 알지만 여기서는 단서가 없습니다. 저는 oracale 그리드 엔진(sge)의 HPC(고성능 컴퓨팅 클러스터)에서 여러 컴퓨터 시뮬레이션을 실행하고 있습니다. 단일 작업은 컴퓨터에 작업을 추가할 때 특정 속도(초당 약 80단계)로 실행됩니다. 특정 임계값에서는 속도가 2만큼 감소합니다. 한 컴퓨터(CPU 종류는 모릅니다)에서 임계값은 16개의 CPU에 대해 11개의 작업입니다. 동일한 수와 종류의 CPU를 가진 다른 CPU의 경우 임계값은 8입니다.
처음에는 이것이 메모리 문제라고 생각했지만 각 작업에는 약 60MB - 100MB가 소요되고 각 컴퓨터에는 16GB의 RAM이 있습니다.
이런 문제를 겪으신 분 계신가요? 이것을 분석할 수 있는 방법이 있나요?
감사해요.
답변1
클러스터 설정을 알지 못한 채 CPU가 하이퍼스레팅을 사용하고 있는지 궁금합니다. 과도한 위협을 받는 코어는 물리적 코어 양의 두 배로 표시되지만, 비물리적 코어의 경우 계산 능력이 선형적으로 증가하지 않을 수 있습니다.
https://superuser.com/questions/279629/how-much-speedup-does-a-hyper-thread-give-in-theory
답변2
여러 가지 이유가 있을 수 있습니다.
작업이 많은 메모리를 소비하지 않더라도 메모리 버스(CPU를 RAM에 연결하는)를 가득 채울 수 있습니다. 버스가 꽉 차면 작업을 더 추가하면 메모리 버스에 더 많은 부담이 가해져 모든 것이 느려집니다.
또 다른 가능한 이유는 I/O입니다. 작업에서 많은 파일 작업(예: 파일 열기/쓰기/닫기 작업)을 수행하는 경우 너무 많은 작업이 동시에 실행되면 시스템의 디스크가 이를 따라잡지 못할 수 있습니다.
다른 이유는 공유 캐시나 부동 소수점 실행 장치와 같은 CPU의 다른 병목 현상 때문입니다.