저는 R을 사용하여 많은 통계 분석을 수행하고 AWS에서 대규모 멀티 코어 인스턴스를 많이 사용합니다. 주로 하이퍼파라미터 검색, 교차 검증, 부트스트래핑에 사용됩니다.
코어가 있는 인스턴스 와 한 번에 코어로 아웃소싱되는 c
복제본이 있는 작업이 있다고 가정해 보겠습니다. 이제 시스템 프로세스(예: SSH 클라이언트가 실행 중)로 인해 복제 외에 작업이 실행되고 있습니다 .r >= c
c
htop
c
htop
이는 운영 체제의 작동 방식에 대한 이해를 바탕으로 프로세서에 액세스할 수 있도록 작업을 종료하는 일부 프로세스가 있음을 의미합니다 . 이러한 다양한 과정을 잠시 동안 햇빛에 노출시킨 후 작업을 재개했습니다.
를 보면 htop
빨간색과 녹색이 많이 섞여 있는 것을 볼 수 있습니다. 녹색은 내 작업이고 빨간색은 내 작업을 이루기 위해 완성된 배경 자료입니다. 이것이 정확한가요?
직관적으로 이 셔플링은 차선책인 것 같습니다. 따라서 즉시 질문은 다음과 같습니다. c
코어에 액세스할 수 있는 경우 복제 작업을 모든 c
코어에 배포해야 합니까, 아니면 c-1
어떻게 해야 합니까?
또한 내가 이해하지 못하고 대충 넘어가는 작업에 컴퓨팅 리소스를 할당하는 방법에 대한 세부 정보가 많이 있다고 생각합니다. 모든 작업을 c-1
코어로, 모든 시스템 프로세스를 코어로 가져오려면 무엇이 필요합니까 cth
? 막대 하나를 제외하고 모든 htop이 녹색으로 표시됩니까? 이게 말이 되나요?
벤치마킹 실험을 할 수 있을 것 같지만, 거대한 인스턴스와 데이터 세트에서는 어려울 것이고, 응용 프로그램별 내용이 얼마나 많은지를 고려하면 무엇을 배울 수 있을지 잘 모르겠습니다. 그래서 저는 일이 어떻게 진행되는지 더 잘 이해하고 싶습니다.
답변1
실험을 하지 않고 특정 애플리케이션에 대한 정확한 영향을 알기는 어렵지만, 일반적인 경험 법칙은 코어 수를 약간 초과하는 것이 유익하다는 것입니다(예: 대부분의 컴파일 가이드에서는 코어/스레드 수 + 호출 호출 사용을 권장합니다) 1) , 그러나 이를 너무 많이 검토하는 것은 추가 오버헤드로 인해 역효과를 낳을 수 있습니다. 그 이유는 하나(또는 여러) 작업이 I/O나 타이머 또는 기타 작업을 기다리며 절전 모드에 있는 경우 다른 스레드가 계속해서 계속될 수 있기 때문입니다.
작업 재구성(운영 체제 스케줄링)은 모든 최신 운영 체제에서 발생하므로 이에 반대하지 말고 이에 맞춰 작업해야 합니다. 관련 없는 경쟁이 있는 것 같으면 프로세스를 훌륭하게 다운그레이드할 수 있지만 전용 AWS 인스턴스에서는... 그렇게 할 필요가 있다고 상상하기 어렵습니다.