프로그래밍/운영체제

[운영체제] Multiprocessor Scheduling

강민재02 2024. 7. 23. 03:03
728x90

CPU 스케쥴링 알고리즘을 학습할 때는 싱글 코어 프로세서를 가정했습니다.

멀티 코어 프로세서는 어떻게 스케쥴링할까요?

 

멀티 코어 스케쥴링 방법

Asymmetric multiprocessing (AMP)

하나의 프로세서에 특정한 역할을 부여하는 방식.

해당 역할이 부여된 프로세서를 Master라고 하며 스케쥴링, I/O 작업 등을 전담합니다.

Master 프로세서에 많은 역할이 가중되면 시스템 전체의 속도가 같이 느려질 수 있습니다.

 

Symmetric multiprocessing (SMP)

모든 프로세서가 동일한 역할을 수행하는 방식.

각 코어마다 self-scheduling이 필요합니다.

일반적으로 SMP 아키텍쳐를 사용합니다.

 

SMP에 대해 더 다뤄보도록 하겠습니다.

 

SMP에서는 코어가 여러개이기 때문에 각 코어마다 어떻게 작업을 할당할 지에 대해 생각해 보아야 합니다.

그리고 이를 위해 두 가지 방법이 있습니다.

 

1. common ready queue

하나의 ready queue를 공유하여 스케쥴링하는 방법이다.

 

문제점

Race Condition이 발생할 수 있다.

lock을 통해 해결하더라도 병목 현상이 발생하여 느려진다.

 

2. per-core run queues

코어마다 private ready queue를 두어 스케쥴링하는 방법이다.

 

문제점

Race condition이 발생하지 않지만, 각 프로세서의 부하를 균등히 유지하는 Load balancing이 필요하다.

 

일을 균등하게 배분하기만 하면 될 것 같지만, 그 이전에 고려해야 더 중요한 요소가 또 있습니다.

 

Processor Affinity (프로세서 친화성)

Processor Affinity란 Cache hit이 발생하는 정도를 의미합니다.

알다시피, 각 프로세서에게는 데이터를 임시로 저장하는 cache가 존재합니다. 메모리에서 가져와야 할 정보가 cache에 이미 있는 경우, 메모리에 접근할 필요없이 캐시를 통해 더 빠르게 사용할 수 있는데 이를 cache hit 이라고 하며, 그 반대의 경우를 cache miss 라고 합니다. cache hit이 많은 캐시를 warm cache, 그 반대를 cold cache라고 부르기도 합니다.

 

NUMA (Non-Uniform Memory Access)

CPU에 근접한 메모리를 할당함으로써 Processor Affinity를 높이는 시스템 아키텍쳐입니다.

다른 CPU의 메모리가 필요한 경우 느린 경로를 통해 데이터를 얻을 수 있습니다.

 

 

728x90