더북(TheBook)

예를 들어 CPU 코어가 8개 있는 기기가 있고 스레드를 8개 갖고 있다고 칩시다. 각 스레드는 자주 잠을 잡니다. 이 경우 CPU는 대기를 하는 시간을 종종 가지므로 결과적으로 CPU 연산량이 떨어질 수밖에 없습니다.

이왕 CPU가 놀 것이라면 노는 시간 동안 다른 일을 더 처리하도록 하면 좋습니다. 스레드 개수를 더 많이 배정하면 됩니다. 예를 들어 일을 처리하는 총 시간의 1/4이 CPU 연산이고 3/4이 잠자는 시간이라면, CPU가 더 일을 배정받을 수 있는 시간이 3배 더 남는 셈입니다. 이 경우 스레드 개수를 CPU 개수의 3배, 즉 24개 배정하는 것이 적절하다는 계산이 나옵니다.

요약하자면, 스레드 개수에 다음 규칙을 도출할 수 있습니다.

• 어떤 서버의 주 역할이 CPU 연산만 하는 스레드라면(즉, 디바이스 타임이 없다면) 스레드 풀의 스레드 개수는 서버의 CPU 개수와 동일하게 잡아도 충분합니다.

• 서버에서 데이터베이스나 파일 등 다른 것에 액세스하면서 디바이스 타임이 발생할 때 스레드 개수는 CPU 개수보다 많아야 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.