Timeslice 이야기

By | 2010/01/24

  커널 스터디를 하면서 나온 얘기 중 하나입니다.

  Process Scheduling을 결정하는 정책의 근거로 process가 I/O 중심이냐 연산 중심이냐 혹은 priority의 값과 함께 timeslice의 값이 있습니다.

  마지막에 소개한 timeslice는 process가 선점하고(preempted) 있을 때 얼마나 오랫동안 동작(run)할 수 있는지를 결정하는 것입니다. Linux에서는 기본적으로 100ms를 제공하고 있으며 최소 5ms에서 최대 800ms까지 제공하며 그것을 결정하는 값을 nice value라고 합니다. 만약 한 process가 자신이 가지고 있는 timeslice를 다 썼다면 다른 process가 timeslice를 다 쓰기까지 기다려야 하고, 모든 process가 다 쓰고 나면 nice value에 따라 timeslice를 제공받습니다.

  그럼 이제 커널 스터디를 진행하면서 나온 얘기를 하겠습니다.

c006

  현재 스터디 교재로 쓰이고 있는 Linux Kernel Development, Second Edition의 그림 4.1입니다. 여기에서 timeslice를 적게 주는 화살표를 보면 ‘lower priority or less interactive’라고 적혀있습니다. 이 부분이 잠시 논란이 되었던 것입니다.

  낮은 priority를 가질 때 적은 timeslice를 가지는 것은 이해가 되었습니다. 하지만 interactive가 적을 때도 과연 timeslice를 적게 가져야 하는가에 대해 말이 나온 것입니다. interactive가 적다는 말은 그만큼 CPU를 사용하는 일이 많다는 뜻이기에 오히려 더 많은 작업을 하도록 해야 할 것이고, 반대로 많은 interactive를 일으키는 process의 경우 I/O 중심이기에 timeslice를 많이 줄 경우 많은 시간을 I/O를 기다리는데 쓰여 덜 효율적이라는 얘기가 나온 것입니다. 책에서도 다음과 같은 말이 적혀있었습니다.

Too long a timeslice causes the system to have poor interactive performance; the system will no longer feel as if applications are concurrently executed.

Chapter 4. Process Scheduling – Policy – Timeslice

  그래서 과연 이것을 어떻게 해석해야 하는가 고민을 했습니다.

  하지만 그림 밑에 나온 문단에서 이를 말끔하게 해결하였습니다.

Note that a process does not have to use all its timeslice at once. For example, a process with a 100-millisecond timeslice does not have to run for 100 milliseconds in one go or risk losing the remaining timeslice. Instead, the process can run on five different reschedules for 20 milliseconds each. Thus, a large timeslice also benefits interactive tasks: Although they do not need such a large timeslice all at once, it ensures they remain runnable for as long as possible.

Chapter 4. Process Scheduling – Policy – Timeslice

  즉, timeslice를 가졌다고 할 지라도 이를 한 번에 다 쓰는 것이 아니라는 것입니다. 따라서 timeslice를 많이 가졌다 할지라도 interactive한 일을 하는데 있어 이득을 취할 수 있다고 합니다.

  후에 실제 코드를 살펴보고 관련 논문을 읽어봐야 좀 더 수긍이 될 듯싶지만, 문득 느끼는 것은 이것이었습니다.

정책은 단순하지 않구나.

  세상에 경우란 너무나 많아 거기에 어느 정도 만족을 시킬 수 있는 그런 정책을 만든다는 것은 단순히 ‘이것의 장점은 저것의 단점’이라고 하는 수준의 공부로는 어려움이 많겠다는 것을 느낍니다. 참으로 어렵습니다.^^

  이 글은 커널 스터디를 하면서 나온 얘기이지만, 개인적으로 느끼는 것도 있어 블로그에 글을 올립니다. 좀 더 정리하여 커널 스터디 위키에 추가/수정할 예정입니다.

참조

Leave a Reply