강좌 & 팁
3.14 에 올라온 릴리지의 주요사항중에 가장 위에 있는 것이 deadline scheduling 의 realtime 기능 강화입니다.
그냥 커널을 설치하거나 컴파일하면 기본값으로 Complete Fail Scheduler(cfs) 라는 알고리즘이 적용되게 되어 있습니다.
말그대로 completely fairly quality 를 보여줄수 있도록 설계된 거죠
또다른 것은 deadline 스케쥴러이고 이번에 그 기능이 리얼타임에 적합하도록 올라온 것으로 보입니다.
최악의 실행 타임에 대한 최소한의 보장을 하자.... 뭐 이렇게 출발하는거죠.
결국 그 최악의 실행타임제한이 데드라인이고 리얼타임성을 요구할때 그 요구사항이 매우 짧아져도
기능이 가능해야 할겁니다.
이런 기능을 운용하기 위해서 고려해야 할 사항들이 있습니다.(당연한 거겠죠)
1. 해당 기능을 수행하기 위해서 필요한 cpu time 의 최대치
2. 얼마나 자주 수행되어야 하는가
우리가 제작하는 제품의 기능을 분석하다 보면 매우 바쁜일을 수행하는 복잡한 제품이더라도
이러한 알고리즘의 변경은 효과를 볼 수 도 있습니다.
예를 들어 응용프로램을 단일 프로세스로 만들수 있는 정도라면 차이가 없을수 있겠지만
멀티 프로세스로 동작하는 형태로 밖에 할수 없는 복잡한 구조의 응용이라면
해당 프로세스들은 경쟁관계에 놓이게 됩니다.
이때 해당 프로세스들의 기능상의 분류나 해야 할일의 양에 따라서
스케쥴링을 해준다면 상당한 효과를 볼수도 있습니다.
당연히 응용들은 프로세스간의 ipc 를 사용하고 동기화도 사용합니다.
이럴때 경쟁 관계에 놓이거나 상대의 시그널을 기다릴때는 오버헤드나 비효율성이 발생할수도 있습니다.
한번쯤 이상하게 같은 cpu 로 만들었는데 우리 꺼만 성능이 떨어진다면?
시도해 볼만한 튜닝의 포인트입니다.
내용이 올라온 링크를 올려드립니다.
http://kernelnewbies.org/LinuxChanges
Recommended LWN article: Deadline scheduling: coming soon?