멀티 코어 컴퓨팅의 경우 처음부터 혼란 스러울 수있는 사실은 멀티 코어 하드웨어 모델이 실제 시스템에서 너무 추상적이라는 것입니다. 하이퍼 스레딩을 사용하는 멀티 코어 코어 프로세서의 멀티 스레드 프로그램 (프로세스)
난 4 코어 논리 코어 8의 NUM하게 함유 하이퍼 스레딩을 지원하는 단일 인텔 프로세서 노트북했다. 가정하자은 내가 자바 프로그램 (이 JVM은 일정에 영향을 미치지 않도록 자바, 스레드 스케줄링의 OS 규칙을 사용 말한다) 동시 알고리즘을 구현하고, 프로그램은 순수하게 CPU 바인딩을 입니다 .
내 관찰 :
- 전체 스레드 NUM 8보다 큰 경우보다 8 개 스레드를 실행하는 프로그램 (프로세스), 스레드의 납입 등의 작업 증가의 병렬 처리는
- 을 증가하는 경우, 성능은 복잡하지만 일반적으로 8 개의 스레드를 실행하는 것보다 개선되지 않습니다. 일부 알고리즘의 경우 8 개 스레드를 실행하는 것보다 시간 소모가 크게 증가했습니다.
이 내 지식 : 지금까지 내가, 내가 실행 프로그램이 OS에 의해 사용자 프로세스로 취급, 프로그램 생성 된 스레드가 병렬 처리를 시도하는 경우, OS가 노력할 것입니다 알고 사용 가능한 코어 사이에서 이러한 스레드를 예약하십시오. 동일한 코어에있는 프로세스의 모든 스레드는 해당 코어에서 프로세스의 총 실행 시간을 공유 할 수 있습니다.
내 질문 : CPU가 내 프로그램 만 실행한다고 가정합니다. 즉 다른 사용자 프로세스가 없습니다. 는 CPU의 1 코어가있는 경우 프로세스의 총 실행 시간은 변경되지 않습니다 때문에
, 프로세스, 멀티 스레딩으로 병렬 어떤 혜택을 얻을 것입니다. 사실입니까?
사용할 수있는 코어가 여러 개인 경우 OS는 프로세스의 스레드를 여러 코어에서 균등하게 균등하게 일정을 잡으려고 시도하고 다른 코어의 프로세스 스레드는 자체적으로 (추가로) 실행 시간을 얻습니다. 과속. 사실입니까?
n> m 인 n 개의 스레드와 m 개의 코어가있는 경우 일부 코어는 프로세스 중 두 개 이상의 스레드를 실행할 수 있으며 스레드 간 "컨텍스트 전환"으로 인해 병렬 처리의 속도가 저하 될 수 있습니다 같은 코어와 잠재적으로 서로 다른 속도로 실행되는 프로세스 스레드의 부작용이 나타날 수 있습니다. 사실입니까?
대단히 감사합니다.
감사합니다. 시나리오에 몇 가지 제한 사항을 추가했습니다. – elexonics
두 사용자 프로세스가 동일한 우선 순위로 실행 중이고 순수하게 CPU 바운드 인 경우 하나의 프로세스 A가 일부 스레드를 작성한 경우 이렇게하면 더 많은 실행 시간이 필요합니까? – elexonics