메모리 대역폭 병목 현상

메모리 대역폭 병목 현상

Python Pandas 프로그램이 있습니다. 8개 코어가 있는 AWS Ec2에서 실행하는 경우. CPU 사용률이 100%이고 프로그램이 8분 만에 완료되었습니다. 그런 다음 16개 코어를 사용하면 CPU 사용률이 50%만 가능하고 프로그램은 여전히 ​​8분 안에 완료됩니다. 메모리 대역폭 병목 현상이 발생하는 것 같아서 64개의 코어가 있고 300GB/s의 메모리 대역폭을 요구하는 X1,16xlarge 인스턴스를 선택했습니다. 그러나 그것은 도움이 되지 않았습니다. 프로그램은 64개 코어 중 아주 적은 비율을 사용했으며 10분 후에도 완료되지 않았습니다. EC2 X1 인스턴스

무슨 일인지 아세요?

(그런데, 4개의 코어가 있는 기존 데스크탑 타워에서 실행되는 동일한 프로그램이 16분 만에 완료되었습니다.)

자세한 내용: 프로그램은 GridSearchCV를 사용하고 다음을 사용합니다.joblib다중 처리를 병렬로 실행합니다. 프로세스 수는 항상 시스템의 코어 수와 동일합니다.

답변1

Python에는 여러 스레드를 효율적으로 활용하는 기능을 제한하는 "전역 인터프리터 잠금"이 있습니다. 하나응답했다이 사이트에서는 C/C++로 시간이 중요한 함수를 작성하는 것을 고려해야 합니다.

가능하다면 분석을 더 작은 단위로 나눈 다음 이를 별도의 프로세스로 실행하여 전역 인터프리터 잠금 문제를 방지하는 것이 좋습니다.

관련 정보