2010-12-29 4 views
4

다른 수의 프로세스에서 병렬 처리 할 수있는 분석이 있습니다. IO와 CPU가 모두 집중 될 것으로 예상됩니다 (호기심이 많은 사람은 매우 높은 처리량의 짧은 읽기 DNA 정렬).IO 차단 프로세스가 '상위'출력에서 100 % CPU 사용률을 표시합니까?

이 시스템을 실행하는 시스템은 48 코어 Linux 서버입니다.

질문은 총 처리량이 최대화되도록 최적의 프로세스 수를 결정하는 방법입니다. 어떤 시점에서 프로세스는 아마도 IO 바인딩이되어 더 많은 프로세스를 추가하면 아무런 이점이 없으며 해를 입을 수도 있습니다.

그 시점에 도달하면 표준 시스템 모니터링 도구에서 알 수 있습니까? 상단 (또는 다른 도구)의 출력을 통해 IO 바인딩과 CPU 바인딩 프로세스를 구별 할 수 있습니까? IO에서 차단 된 프로세스가 여전히 100 % CPU 사용률을 표시 할 수 있는지 의심 스럽습니다.

+1

일반적으로 차단되지 않은 스레드의 수는 프로세서 수와 같아야합니다. 비 차단 IO를 사용할 수 있습니까? 아키텍처로 작업 할 수 있다면 단순화 될 수 있습니다. –

답변

1

운영 체제가 IO를 예약하고 일반적으로 완료 될 때까지 기다리고 있기 때문에 단일 IO 바인딩 프로세스도 높은 CPU 사용률을 거의 나타내지 않습니다. 따라서 top은 단순히 CPU를 주기적으로 사용하는 IO 바인딩 프로세스와 비 IO 바인딩 프로세스를 정확하게 구분할 수 없습니다. 사실 모든 IO 바인딩 프로세스로 끔찍하게 오버로드 된 시스템은 간신히 모든 것을 수행 할 수있어 CPU 사용률이 매우 낮을 수 있습니다.

top 만 사용하면 CPU 사용률 수준이 꺼질 때까지 스레드/프로세스를 계속 추가 할 수 있습니다. 즉, 주어진 시스템의 대략적인 구성을 결정할 수 있습니다.

1

iostat 및 vmstat와 같은 도구를 사용하여 I/O에서 프로세스가 소비되는 시간을 표시 할 수 있습니다. 일반적으로 필요한 것보다 더 많은 프로세스를 추가해도 아무런 해가 없지만 이점은 줄어 듭니다. 전반적인 효율성을 측정 할 때 프로세스 대 처리량을 측정해야합니다.

6

프로세스가 입출력에서 차단되면 프로세스가 실행되고 있지 않으므로 시간이 고려되지 않습니다. 실행할 수있는 다른 프로세스가 있으면 대신 실행됩니다. 존재하지 않는 경우 시간은 'IO 대기'로 계산되며 이는 글로벌 통계로 간주됩니다.

대기 시간은 모니터링하는 것이 좋습니다. 상단의 헤더에 % iw와 같이 표시됩니다. iostat 및 vmstat와 같은 도구를 사용하여 더 자세히 모니터링 할 수 있습니다. Serverfault가 더 좋은 장소일지도 모릅니다.

관련 문제