다중 프로세서 시스템의 코어 간에 스레드는 어떻게 배포됩니까?

다중 프로세서 시스템의 코어 간에 스레드는 어떻게 배포됩니까?

현재 2개의 12코어 프로세서, 즉 24코어가 있는 시스템에서 서버 응용 프로그램의 한계를 확인하고 있습니다. (현재 하이퍼스레딩은 비활성화되어 있습니다).

작업 관리자에 따르면 해당 상자에서 동일한 앱의 UDP 수신이 많은 인스턴스 12개를 실행하고 있으며 소켓 2개 중 하나의 코어 12개를 모두 최대화합니다. 그러나 다른 소켓은 유휴 상태입니다. 또한 해당 응용 프로그램의 13번째 인스턴스를 시작하려고 시도했지만 이미 사용 중인 첫 번째 소켓에서 여전히 실행됩니다.

왜? 다중 프로세서 시스템에서 스레드가 코어에 예약되는 규칙은 무엇입니까?

몇 가지 아이디어:

  • 활성화되어 있고 적어도 우리 앱의 수신 스레드에 대한 코어 선택에 관여하는 RSS(수신 측 스케일링)와 관련이 있을 수 있습니까(그러나 앱에는 작업이 많은 다른 스레드도 있음)?
  • RSS(또는 MSI/MSI-X)는 하나의 소켓으로 제한됩니까?
  • 단일 앱 인스턴스가 여러 소켓에서 동시에 실행될 수 있습니까?

시스템 세부정보:

  • 프로라이언트 BL460c Gen9
  • 인텔 제온 E5-2670 v3
  • 윈도우 2012 R2

답변1

일부 슬롯/IO 장치는 프로세서 중 하나와 직접 통신합니다(다른 슬롯은 다른 슬롯과 통신할 수 있음). 해당 프로세서에서 해당 카드/IO 장치에 의해 생성된 작업을 수행하면 이점이 있습니다.

예를 들어디디오PCI 슬롯/IO 장치에 연결된 프로세서에 가장 적합합니다.

관련 정보