CPU Cache

  • 캐시는 용량이 작고, 빠른 특성때문에 자주사용되는 데이터를 주로 저장합니다
    • Temporal locality(시간 지역성)
      • 마지막에 접근한 데이터를 다시 접근하는 특성을 말합니다.
      • stack, for loop
    • Spatial locality(공간 지역성)
      • 접근한 데이터의 주변 데이터를 다시 접근하는 특성을 말합니다.
      • Array, sequential execution ...
  • Benefit
    • Cache hit : 캐시에 담아놓은 데이터를 접근하게 되면 Cache hit, 담아놓지 않은 데이터를 접근하면 Cache miss가됩니다. Cache hit하게 되면 메모리보다 훨씬 빠른속도로 데이터에 접근할 수 있습니다.
    • Delayed Write : 쓰기 작업시 바로 메모리에 접근하지 않고, 캐시에 쓰기작업을 한 후 메모리에 접근할 때 한번에 쓰기작업을 합니다.

Cache Affinity

  • CPU Cache는 job이 이전에 접근한 메모리를 저장해놓고있는데 Context Switch이후 캐시되어 있는 프로세서가 아닌 다른 프로세서에 스케줄링 되면 Cache miss로 인해 성능저하(Cache miss)가 발생할 수 있습니다.
  • 이를 방지하기 위해서 이전에 수행했던 프로세서에 스케줄링하여 Cache hit를 높이는것이 좋습니다.

SQMS(Single Queue Multiprocessor Scheduling)

여러개의 코어를 하나의 큐로 스케줄링

  • 장점 : 구현이 간단하다, job이 공평하게 분배됨
  • 단점 : 공유자원인 큐에 대한 lock오버헤드 발생

MQMS(Multi Queue Multiprocessor Scheduling)

각 코어마다 큐를 가지고 있음.

  • 장점 : Affinity가 좋다, lock으로 인한 오버헤드가 적다.
  • 단점 : load balancing을 고려해야 한다.

Load balancing(부하균등)

  • 각 CPU의 큐는 독립적이므로 서로의 상태를 알지 못한다.
  • 스케줄러는 가장 여유로운 큐를 Source큐로 선택, 임의 선택된 Target큐가 Source큐보다 Busy하면 Source큐는 Target큐의 Job을 Steal(Work stealing, Migration).

'CS' 카테고리의 다른 글

[OS] Scheduler  (0) 2022.08.22
[OS] RAM disk vs Disk 성능비교  (0) 2022.08.22
[OS] Linux Kernel Structure  (0) 2022.08.22
[Design Pattern] Factory Pattern  (0) 2022.08.22
[Design Pattern] Builder Pattern을 사용하는 이유  (0) 2022.08.22

+ Recent posts