멀티 코어 시스템의 구조

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

멀티코어 시스템에서의 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 |