Abstract
In an environment with frequent job requests and short job processing times, thread pool methods are frequently used to increase throughput by reducing overheads due to thread creation and removal. A watermark method normally reduces unnecessary uses of resources by keeping the number of threads less than those needed in the maximum. In the absence of available threads, however, it processes jobs by creating additional threads up to a specified limit so that the system overhead increases due to creation of threads, which results in throughput degradation. This paper presents a history-based dynamic method that alleviates throughput degradation. By estimating and maintaining the number of threads needed for jobs, it reduces overheads due to thread creation and removal. According to experiments, compared to the watermark thread pool method, it shows average 33% increase in the number of threads kept and average 62% reduction in the number of threads created, which results in 6% increase in terms of system throughput.
작업의 실행요청이 빈번하고 실행시간이 짧은 환경에서, 스레드 생성 및 삭제로 인한 오버헤드를 줄여 작업처리효율을 향상시키기 위해 스레드풀 방법이 자주 사용된다. 그중에서 워터마크 스레드풀 방법은 최대로 필요한 스레드 수 이하의 스레드들을 유지함으로써 자원의 불필요한 사용을 줄인다. 그러나 사용가능한 스레드가 없을 경우에는 지정된 한도 내에서 스레드를 추가로 생성하여 작업들을 처리해야 하므로 스레드 생성으로 인한 시스템 오버헤드가 증가하고 결국 성능 저하 현상이 발생할 수 있다. 본 논문은 이런 성능 저하를 줄이기 위한 방법으로써 히스토리 기반의 동적 스레드풀 방법을 제안한다. 이 방법은 작업처리에 필요한 스레드 수를 측정하고 유지함으로써 스레드 생성 및 삭제로 인한 오버헤드를 줄인다. 실험결과에 따르면, 제안방법은 워터마크 스레드 풀 방식과 비교하여 보유 스레드 수는 평균 33% 증가하나 스레드 생성 수는 평균 62% 감소함으로써 평균 6%의 시스템 처리량 증가를 보인다.