멀티 코어 작업을 실행할 때 시스템 로드 평균이 코어 수보다 높으면 성능이 저하됩니까?

멀티 코어 작업을 실행할 때 시스템 로드 평균이 코어 수보다 높으면 성능이 저하됩니까?

저는 R을 사용하여 많은 통계 분석을 수행하고 AWS에서 대규모 멀티 코어 인스턴스를 많이 사용합니다. 주로 하이퍼파라미터 검색, 교차 검증, 부트스트래핑에 사용됩니다.

코어가 있는 인스턴스 와 한 번에 코어로 아웃소싱되는 c복제본이 있는 작업이 있다고 가정해 보겠습니다. 이제 시스템 프로세스(예: SSH 클라이언트가 실행 중)로 인해 복제 외에 작업이 실행되고 있습니다 .r >= cchtopc

htop이는 운영 체제의 작동 방식에 대한 이해를 바탕으로 프로세서에 액세스할 수 있도록 작업을 종료하는 일부 프로세스가 있음을 의미합니다 . 이러한 다양한 과정을 잠시 동안 햇빛에 노출시킨 후 작업을 재개했습니다.

를 보면 htop빨간색과 녹색이 많이 섞여 있는 것을 볼 수 있습니다. 녹색은 내 작업이고 빨간색은 내 작업을 이루기 위해 완성된 배경 자료입니다. 이것이 정확한가요?

직관적으로 이 셔플링은 차선책인 것 같습니다. 따라서 즉시 질문은 다음과 같습니다. c코어에 액세스할 수 있는 경우 복제 작업을 모든 c코어에 배포해야 합니까, 아니면 c-1어떻게 해야 합니까?

또한 내가 이해하지 못하고 대충 넘어가는 작업에 컴퓨팅 리소스를 할당하는 방법에 대한 세부 정보가 많이 있다고 생각합니다. 모든 작업을 c-1코어로, 모든 시스템 프로세스를 코어로 가져오려면 무엇이 필요합니까 cth? 막대 하나를 제외하고 모든 htop이 녹색으로 표시됩니까? 이게 말이 되나요?

벤치마킹 실험을 할 수 있을 것 같지만, 거대한 인스턴스와 데이터 세트에서는 어려울 것이고, 응용 프로그램별 내용이 얼마나 많은지를 고려하면 무엇을 배울 수 있을지 잘 모르겠습니다. 그래서 저는 일이 어떻게 진행되는지 더 잘 이해하고 싶습니다.

답변1

실험을 하지 않고 특정 애플리케이션에 대한 정확한 영향을 알기는 어렵지만, 일반적인 경험 법칙은 코어 수를 약간 초과하는 것이 유익하다는 것입니다(예: 대부분의 컴파일 가이드에서는 코어/스레드 수 + 호출 호출 사용을 권장합니다) 1) , 그러나 이를 너무 많이 검토하는 것은 추가 오버헤드로 인해 역효과를 낳을 수 있습니다. 그 이유는 하나(또는 여러) 작업이 I/O나 타이머 또는 기타 작업을 기다리며 절전 모드에 있는 경우 다른 스레드가 계속해서 계속될 수 있기 때문입니다.

작업 재구성(운영 체제 스케줄링)은 모든 최신 운영 체제에서 발생하므로 이에 반대하지 말고 이에 맞춰 작업해야 합니다. 관련 없는 경쟁이 있는 것 같으면 프로세스를 훌륭하게 다운그레이드할 수 있지만 전용 AWS 인스턴스에서는... 그렇게 할 필요가 있다고 상상하기 어렵습니다.

관련 정보