2010-06-17 3 views
0

멀티 코어 프로세서의 경우 특정 응용 프로그램에 단일 코어 또는 2 코어 또는 3 코어로 실행되도록 지시하는 방법이 있습니다. 응용 프로그램 (많은 스레드가있는)이 둘 이상의 코어에서 실행되는 시나리오를 고려할 때 스케줄러는 멀티 코어 프로세서의 특정 코어에서로드 (스레드 수)를 결정하고 그에 따라 다양한 코어에서로드 (스레드 할당)?멀티 코어 프로세서의 특정 코어에 대한 부하 결정

+1

스케줄러입니다 taskset -C### ./executable가 itself.You이보고 할 수 있습니다에 별도의 주제입니다 사용할 수 있습니다. 프로그래머 수준에서 상호 의존적이지 않은 부분을 병렬 (스레드)로 실행할 수 있도록 알고리즘을 개발해야합니다 .Fast Fourier Transforms는 병렬 처리 계산의 완벽한 예입니다 멀티 코어 프로그래밍을 용이하게하는 병렬 라이브러리가 있습니다. – itisravi

+0

정확한 답변을 얻지는 못했지만 아주 좋은 링크였습니다. –

답변

1

대부분의 스케줄러에서 모든 CPU는 시스템의 현재 상태를 검사하고 유용한 작업을 찾으려고 독립된 엔티티입니다. CPU를 일중독으로 묘사하십시오 - 그것은 항상 수행 할 수있는 모든 것을 시도 할 것입니다. 스케줄러는 CPU에게 다음에해야 할 일을 알려주는 "보스 (boss)"가 아니므로 모든 사람들이 공정한 분배를하는지 확인하십시오. 오히려 각 CPU는 시스템의 상태를 검사하고 가능한 한 많은 작업을 수행하는 방법을 찾으려는 스케줄링 알고리즘을 따릅니다.

예약 알고리즘에는 "스레드 선호도"에 대한 규정이있을 수 있습니다. 이는 CPU가 이전에 예약 된 스레드를 실행하는 것을 선호한다는 것을 의미합니다. 즉, 해당 스레드가 캐시에있을 가능성이 높기 때문입니다. 그러나 네트워크로드 균형 조정과는 달리 스케줄링 알고리즘은 작업 부하가 불공평 해지더라도 항상 모든 CPU를 가능한 한 바쁘게 유지하는 것과 관련이 있습니다.

왜? 작업 부하가 CPU를 많이 사용하는 경우 모든 CPU를 거의 100 %로 실행할 수 있으며 작업 부하는 공평합니다. 작업 부하가 I/O 집약적이고 CPU가 실제 시스템의 일반적인 경우 인 공유 리소스를 기다리는 데 대부분의 시간을 소비하는 경우 모든로드 균형 조정 전략은 공유 리소스를 단순히 최대한 빨리

간단한 다중 CPU 스케줄러는 실행 가능한 스레드 대기열과 차단 된 스레드 목록을 포함합니다.이 대기열과 목록은 잠금으로 보호 된 액세스로 모든 CPU에서 공유하는 데이터 구조입니다. CPU가 스케줄러에 들어갈 때 가장 우선 순위가 높은 실행 가능한 스레드를 선택하고 블록 또는 할당 된 타임 슬라이스가 만료 될 때까지 해당 스레드를 실행합니다. 스레드가 차단되면 스레드가 다시 실행 가능해질 때까지 차단 된 스레드 목록에 배치됩니다. 타임 슬라이스가 만료되면 스레드는 실행 가능 스레드 대기열의 지연된 위치에 놓이고 다른 스레드가 선택됩니다. HTTP : //software.intel

0

리눅스에서는 ####는 CPU리스트에게 멀티 코어 인식

관련 문제