쓰레드 스케쥴링..
이걸 질문에 올려야할지.. 토론에 올려야 할지.. 모르겠는데..
일딴 질문의 느낌이 강해 질문란에 올립니다만..
토론할 거리가 된다고 생각하시면 토론란으로 옮겨주십시요..
일딴 문제의 발단은 이렇습니다.
각 특정 다른 일을 하는 모듈 3가지가 있습니다.
각각 쓰레드를 사용하는 일이 빈번해 각각 Thread Pool 을 가지고 있고..
해당 Thread Pool 안의 Thread 수는 설정할수 있습니다.
각각 모듈의 Thread Pool 의 Thread 수가 튜닝 포인트가 될수 있겠죠.
어느 모듈의 Thread 수를 몇개로 잡아야 할지... 상황에 따라서 셋팅하면 되니까요..
그런데 이렇게 생각한 큰 배경은..
kernel 이 Thread 스케줄링을 할때 되도록이면 공평하게 CPU 시간을 부여한다는 것이였습니다. (어느 플랫폼이든지.. 말입니다.- 아.. 선점형커널에 관한이야기입니다.)
그런데 다른이가 kernel 의 Thread 스케줄링을 믿지 못하겠다.
Thread Pool 을 하나로만 둬서 상황에 따라서 Pool 에서 각 모듈에 Thread 를 할당해야한다는 의견이 나왔습니다.
전 그것은 Thread Pool 을 하나로 가지 않고 각 모듈의 각 Thread Pool 의 Thread 수를 조절함으로써 해결하자는 의견이였고, 특히나 Thread Pool 을 하나로만 두면 Thread 를 하나의 모듈이나 두개의 모듈이 모든 Thread 를 다 차지하고 있어 모듈3 이 Thread 를 받지 못하는 경우가 생길수 있다는 의견이였습니다.
나 : Thread Pool 을 각 모듈별로 따로 가져가고
커널의 쓰레드 스케줄링을 믿으며..
튜닝포인트는 각 모듈의 Thread pool 의 Thread 수다.
다른이 : 커널의 쓰레드 스케줄링을 못 믿겠으며..
모든 모듈의 Thread 는 하나의 Thread Pool 에서 가져와야하며...
하나의 Thread Pool 의 Thread 수가 튜닝 포인트가 되겠지만..
Thread Pool 에서 각 모듈에 대한 Thread 스케줄링을 해야한다.
라는 의견입니다.
어떻게 생각하시는지요?
혹은 어떻게 사용하시는지요?
전 다른 Thread Pool 을 사용하더래도 커널이 쓰레드 스케쥴링을 하기 때문에 특정 모듈만 실행되는 일이 없으며, 특정 모듈의 작업량이 많다면 Thread 수로 튜닝을 해서 최대의 성능을 낼수 있다고 생각하는데..
어떻습니까?
의견을 듣고 싶군요..
댓글 달기