2009-09-30 4 views

답변

1

이것은 실행 가능한 프로세스의 수가 평균 이하가 될 때까지 새로운 스레드를 시작하지 않는다는 것을 의미합니다. 일정 기간 동안 평균은 2.5 미만입니다. 포도 나무 '발언
실행 가능한 프로세스를 다음

편집, 유닉스 용어에서, CPU 시간 또는 즉시 실행을 기다리는 중입니다 과정이다. 기술적으로 이것은 TASK_RUNNING 상태에있는 프로세스입니다.

그러나 ...이 다시 읽어 원래의 질문에 나를 메시지 및주의 그 부분을 "윈도우"...
내 원래 대답은 GNU에 대한 올바른 느슨하게,시킨다 유닉스와 같은 호스트를 만들면 Windows에서 사실적으로 부족합니다. 동작의 불일치는 두 운영 체제가 "현재"CPU 부하를 설명하는 매우 다른 메트릭을 제공한다는 사실 때문입니다. 결과적으로 Make의 논리는 이러한 CPU로드 판독 값을 다르게 해석하여로드 평균 기능을 제공해야합니다.

--load-average 매개 변수의 목적은 새 스레드를 시작할 수있는 시점을 확인하는 지침을 제공하는 것입니다. Make가 다른 응용 프로그램과 (그리고 그 자체 내에서) CPU 자원을보다 우아하게 공유하게합니다.
커널에서보고 한대로 평균로드가 일 때 새로운 만들기 스레드가 허용됩니다. (이 값은 "1 분"로드 평균이라고 가정합니다. 5 분 1이 될 수 있지만)은 매개 변수 값보다 작습니다.
Windows에서 Make는 CPU로드 (GetSystemTimes 함수에 의해보고 된)와 메모리로드 (예 : GlobalMemoryStatusEx 함수)의 가중 평균으로부터로드 평균을 계산합니다.

+1

실행 가능한 프로세스의 수는 무엇입니까? 그게 뭐야? – vines

+0

기본적으로 Unix에서로드 평균은 얼마나 많은 프로세스가 자신의 차례를 기다리고 있는지 나타냅니다. 커널은 지난 1 분, 5 분 또는 15 분 동안이를보고 할 수 있습니다. – tripleee

0

Windows에서 - 명백하게. 이것은 유닉스 용어입니다 : http://en.wikipedia.org/wiki/Load_%28computing%29

uptime 명령을 실행하면 Cygwin에서 사본 평균 부하가 0으로보고됩니다. Windows에서 이것을 계산하는 빠른 방법이 없다고 생각합니다. Cygwin 메일 링리스트에서 과거에 물었다.

즉, 구현되지 않았으므로 항상 0입니다. 내가 GNU의 최신 버전을 확인하지 않은

# if !defined (LDAV_DONE) && (defined (__MSDOS__) || defined (WINDOWS32)) 
# define LDAV_DONE 

    /* A faithful emulation is going to have to be saved for a rainy day. */ 
    for (; elem < nelem; elem++) 
    { 
     loadavg[elem] = 0.0; 
    } 
# endif /* __MSDOS__ || WINDOWS32 */ 

만들하지만 난 그게 바뀌 의심 :

다음은 GNU는 3.81 소스를 확인에서 직접, getloadavg의 구현입니다.

관련 문제