Linux로드 계산에 간단한 1/5/15 분 이동 평균이 사용되지 않는 이유는 무엇입니까?


28

최근까지로드 평균 (예 : 상단에 표시)이 "실행 가능"또는 "실행 중"상태 인 프로세스 수의 n 개의 마지막 값에 대한 이동 평균이라고 생각했습니다. 그리고 n은 이동 평균의 "길이"로 정의되었을 것입니다.로드 평균을 계산하는 알고리즘이 5 초마다 트리거되는 것처럼 보이기 때문에 n은 1 분로드 평균에 대해 12, 5 분로드 평균에 대해 12x5, 12x15입니다. 15 분의로드 평균 동안.

그러나이 기사를 읽었습니다 : http://www.linuxjournal.com/article/9001 . 이 기사는 꽤 오래되었지만 오늘날 Linux 커널에서 동일한 알고리즘이 구현됩니다. 하중 평균은 이동 평균이 아니라 이름을 모르는 알고리즘입니다. 어쨌든 나는 가상 커널로드와 가상의 주기적 부하에 대한 이동 평균을 비교했다.

로드 그래프.

큰 차이가 있습니다.

마지막으로 내 질문은 :

  • 이 구현이 실제 이동 평균과 비교하여 선택된 이유는 무엇입니까?
  • 마지막 순간보다 훨씬 많은 시간이 알고리즘에 의해 고려되므로 모든 사람이 "1 분 평균로드"에 대해 말하는 이유는 무엇입니까? (수학적으로 부팅 이후의 모든 측정; 실제로 반올림 오류를 고려하면 여전히 많은 측정)

5
금융 (기술 분석)과 같이 지수 이동 평균 (EMA)입니다. 장점은 아마도 동일합니다. EMA는 이전 값과 현재 값으로 만 계산할 수 있으며 최근 값에는 이전 값보다 더 많은 가중치가 부여됩니다. 표준 MA에서 가장 오래된 값은 가장 최근의 값만큼 평균에 기여하며 때로는 최신 값이 더 중요하다고 생각합니다.
jg-faustus

답변:


24

이 차이는 원래 버클리 유닉스로 거슬러 올라가며 커널이 실제로 평균을 유지할 수 없다는 사실에서 비롯됩니다. 이를 위해서는 많은 과거의 측정 값을 유지해야하며, 특히 예전에는 여분의 메모리가 없었습니다. 대신 사용 된 알고리즘은 모든 커널이 유지해야하는 이점은 이전 계산의 결과라는 이점이 있습니다.

컴퓨터 속도와 해당 클럭 사이클이 GHz 대신 수십 MHz로 측정 될 때 알고리즘은 실제와 조금 더 가까웠습니다. 요즘 불일치가 발생하는 데 더 많은 시간이 있습니다.


2
좋아, 그것은 구현의 선택을 설명합니다. 왜 많은 사람들이 3 분 평균이 마지막 1 분 / 5 분 / 15 분에 걸쳐 계산된다고 생각하는지 아십니까? 나는 그것이 틀렸다고 생각한다. 알고리즘은 모든 마지막 값에 대한 평균을 계산한다. 이전 값은 새 값보다 중요도가 낮지 만 그럼에도 불구하고 1 분보다 오래된 값은 여전히 ​​1 분로드 평균에 무시할 수없는 영향을 미칩니다. 제 생각에는 "1min / 5min / 15min"은 의미가 없지만 잘못되었을 수 있습니다 (?)
user368507

5
그건 때문에 어떤 문서, 원래 BSD로 시작하는 그들을보고 모든 프로그램 uptimew주장; 실제로는 사실이 아니라는 것을 알기 위해 커널 소스를 살펴 봐야했습니다.
geekosaur

1
정말 유감입니다
user368507

3
@ user5528 시간은 1min/5min/15min 않은 의미가있다. 그들은 현재 부하의 영향이 고정 계수 (아마도 e = 2.71 .. 또는 아마도 2)만큼 떨어지는 시간을 결정합니다. 그냥 사용해보십시오.
maaartinus

2
@maaartinus 예. 1 분 / 5 분 / 15 분은 EMA 계산에서 이전 측정 값의 가중치가 1 / e 이하인 시간을 결정합니다. 이 정밀도는 man uptime 또는 man top 에는 나타나지 않습니다 .
user368507
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.