2012-02-23 4 views
0

필자는 유명한 여행 세일즈맨 (Traveling Salesman) 문제에 대한 단일 스레드 무차별 버전을 실행 해 왔으며 YourKit은 CPU가 최대 25 %로 사용되고 있음을 정확히 지적하고 있습니다.전 알고리즘 (메모리 없음)을 사용하고 있지만 CPU 사용량이 25 % 미만입니다. 가능한 병목 현상은 무엇입니까?

그 이유는 무엇입니까? 이러한 종류의 알고리즘은 CPU 집약도가 높지만이 경우 CPU 낭비가 많이 발생한다고합니다.

내 이론은 병목 현상이 RAM 액세스 여야합니다. 잠금 문제는 내가 실행중인 알고리즘이 단일 스레드이므로 문제가되지 않는 것 같습니다.

맞습니까?

+7

음 ... 네가 쿼드 코어 머신을 가지고 있다고 생각해. – Mysticial

+0

쿼드 코어 CPU가 없습니까? –

+1

예./facep. –

답변

6

답할 댓글을 홍보하십시오.

당신은 프로그램이 싱글 스레드이지만 당신은 25 % CPU만을 사용한다고 말합니다.

그건 네가 쿼드 코어 머신을 가지고 있다는 증거 다. (또는 아마도 하이퍼 스레딩이 포함 된 듀얼 코어) 단일 스레드에서는 1 개 이상의 코어를 사용할 수 없습니다.

그래서보고있는 것은 정상입니다. 사이드 지점으로


는 이러한 잠금 및 메모리 액세스와 같은 병목 직접 CPU 사용량을 감소하지 않습니다. 전체 시간 캐시를 사용하지 않는 단일 스레드 프로그램은 실제 계산을 실행하는 것과 동일한 25 % 사용량 (쿼드 코어에서)을 나타냅니다.

멀티 스레드 응용 프로그램에서 이러한 병목 현상으로 인해 다른 스레드가 실행되지 않거나로드 균형에 영향을주는 경우 CPU 사용이 영향을받을 수 있습니다.

4

... CPU가 최대 25 %에서 사용되고 있습니다.

4 개의 코어가 있습니까 (하이퍼 스레딩 사용 또는 사용 안함)?

어떤 일이 발생합니까? 하나의 프로세스가 4 개의 코어 사이에서 점프합니다. 하나의 코어의 경우 평균 활용도는 25 %입니다.

내 이론은 병목 현상이 RAM 액세스 여야한다는 것입니다. 잠금 문제는 내가 실행중인 알고리즘이 단일 스레드이므로 문제가되지 않는 것 같습니다.

RAM 액세스 시간은 개별적으로 고려되지 않으며 CPU 시간의 일부입니다.