본문 바로가기

IT 공부/운영체제

6-4. 멀티 코어 CPU에서의 스케줄링

멀티 코어 시스템의 구조

멀티 코어의 구조

멀티 코어 시스템에서의 멀티 스레딩

멀티코어 시스템에서의 CPU스케줄링

멀티코어 시스템에서 싱글 코어 CPU 스케줄링을 사용할 때 문제점

  • (문제1) 컨텍스트 스위칭 오버헤드 증가 문제
    • 이전에 실행된 적이 없는 코어에 스레드가 배치될 때,
    • 캐시에 새로운 스레드의 코드와 데이터로 채워지는 긴 경과 시간

컨텍스트 스위칭 오버헤드 증가 문제 해결

  • CPU 친화성(CPU affiniry) 적용
    • 스레드를 동일한 코어에서만 실행하도록 스케줄링
    • 코어 친화성(Core affinity), CPU 피닝(pinning), 캐시 친화성(cache affinity)라고도 부름
    • 리눅스 : taskset 명령, sched-setaffinity() 시스템 호출
    • 윈도우 : 작업관리자에서 프로세스를 특정 코어에서만 실행되도록 지정, SetProcessAffinityMask() 시스템 호출
  • 코어 당 스레드 큐 사용

Windows 사례 : 작업 관리자에서 프로세스에게 코어 친화성 지정

코어 당 스레드 큐

멀티코어 시스템에서의 CPU 스케줄링

멀티코어 시스템에서 싱글 코어 CPU 스케줄링을 사용할 때 문제점

  • (문제 2) 코어별 부하 불균형 문제
    • 스레드를 무작위로 코어에 할당하면, 코어마다 처리할 스레드 수의 불균형 발생 

코어별 부하 불균형 문제 해결

  • 부하 균등화 기법으로 해결
  • 푸시 마이그레이션(push migration)기법
    • 감시 스레드가, 짧거나 빈 큐를 가진 코어에 다른 큐의 스레드를 옮겨 놓는 기법
  • 풀 마이그레이션(pull migration)기법
    • 코어가 처리할 스레드가 없게 되면, 다른 코어의 스레드 큐에서 자신이 큐로 가져와 실행시키는 기법

'IT 공부 > 운영체제' 카테고리의 다른 글

5-2. 스레드의 개념  (0) 2023.04.15
5-1. 프로세스의 문제점  (0) 2023.04.15
6-3. CPU 스케줄링 알고리즘  (0) 2023.04.14
6-2. CPU 스케줄링 기본  (0) 2023.04.13
6. CPU 스케줄링 개요  (0) 2023.04.13