SAR에서 가져온 일부 데이터를 이해하려고합니다. 이것에 관한 세 가지 주요 질문이 있습니다. 궁극적으로 서버 클러스터 전체에서 샘플링 간격마다 유휴 상태 인 CPU 수를 결정하고 싶습니다.
- 많은 CPU가 모든 항목에 나타나지는 않습니다. 이것이 예상되는 것이며 정확히 무엇을 의미합니까? # 2와 관련이 있습니까?
- 사용되지 않는 라인이 있습니다 (CPU = U). 문서는 "U는 시스템 전반에 걸쳐 사용하지 않은 용량을 나타냅니다"라고. "시스템 전체 사용되지 않은 용량"에 대한 정확한 정의 나 전혀 정의를 찾을 수 없습니다. "사용되지 않은 용량이 70 % 유휴 상태입니다."와 같은 줄을 해석하는 방법을 잘 모르겠습니다.
- 마지막으로 줄
-
이나all
선이 어떻게 계산 되는지 잘 모르겠습니다 . 나는 그것이 모든 CPU의 평균이라고 생각하지만 모든 CPU에서 수학을 할 때 그 라인에있는 것과는 완전히 다른 대답을 얻습니다. 아무도 그 계산에 정확히 무엇이 들어 있는지 말해 줄 수 있습니까? SAR에 대한 이 관련 질문을 자세히 보면system-wide
유휴 백분율은 각 CPU의 유휴 백분율과 'physc'값의 곱의 합인 것으로 보입니다 . 불행히도, 나는physc
또는 entc % (1이 있다고 가정)가 없으므로 내 데이터로 이것을 확인할 수 없습니다. 그것이 맞다면,physc
유휴 백분율을 진정으로 이해하기 위해 값이 필요하다는 것을 의미 합니까?
다음은 내가보고있는 예입니다. 이것들은 모두 같은 날입니다.
CPU | Idle CPU | Idle CPU | Idle
---------- ---------- ----------
0 | 8 0 | 15 0 | 17
1 | 25 1 | 94 1 | 32
2 | 79 2 | 100 2 | 97
3 | 62 3 | 99 3 | 71
4 | 5 4 | 13 4 | 5
5 | 7 5 | 13 5 | 23
6 | 6 6 | 99 6 | 71
7 | 7 7 | 44 7 | 98
8 | 11 8 | 12 8 | 48
9 | 17 12 | 0 12 | 38
10 | 33 16 | 12 16 | 37
11 | 64 20 | 3 20 | 42
12 | 6 U | 95 U | 97
13 | 6 - | 15 - | 85
14 | 6
15 | 6
16 | 12
17 | 15
18 | 62
19 | 69
20 | 7
21 | 7
22 | 6
23 | 7
U | 80
- | 15
case 1: avg(24): 22
case 2: avg(12): 42
case 3: avg(12): 48
이 데이터는 sar -P ALL 1 1
다음 을 실행하는 스크립트에 의해 생성됩니다. 그런 다음 awk 명령을 실행합니다. 나는 awk에 좋지 않지만 이것들은 분명히 중요한 부분입니다.
필터: /System|AIX|^$|%/ {next}
파싱 : {k=0;if(NR==7) k=1} {sub("^-", "all", $1); cpu=$(1+k); user=$(2+k); sys=$(3+k); io=$(4+k); idle=$(5+k)}
이것은 내가 awk에 대해 거의 이해하지 못하고 출력의 예에서 보는 것을 기반으로 올바른 것으로 보입니다.
사례 2에 대해 누락 값이 모두 0이라고 가정하면 평균은 21이며 사례 1과 다소 일치하는 것으로 보입니다. 그러나 사례 3에 대해 가정하면 24 %를 얻습니다. 이는 85 %와 완전히 일치합니다. 전체 CPU 유휴에 대해 sar이 제공 한 백분율 값.
하루 종일 캡처 (30 초마다)에 대한 그래프는 다음과 같습니다.
'시스템 전체'유휴 시간이 거의없는 경우 평균 CPU 유휴와 '시스템 전체'유휴 간의 상관 관계는 거의 완벽합니다. 그러나 '시스템 전체'유휴 시간이 증가함에 따라 상관 관계가 훨씬 약해집니다. 이것이 결정 론적 기계라는 가정에 따라 작업하면 내가 가진 데이터가 전체 그림을 제공하지 않는다는 것을 알 수 있습니다. 하지만 얼마나 신경 쓰나요?
각 지점에서 일부 CPU가보고되지 않는 이유를 완전히 이해하지 못하지만 누락 된 CPU는 위의 예와 같이 고르게 분산되지 않습니다. 또한이 레드 북 을 읽으면 논리 CPU이어야하며 physc
숫자가 없으면이 값으로 할 수있는 것이 많지 않다고 생각합니다. U
다양한 방정식 에서 값 을 사용하려고 시도했지만 합리적인 것을 찾지 못했습니다. 전체 유휴 비율을 액면가로 취할 수 있다는 것은 분명하지 않습니다.
참고 : sar 에서이 데이터를 캡처하는 데 문제가있는 것은 항상 반환 해야하는 경우 # 1에 대한 완전한 대답입니다.
sar -P ALL 1 1
awk를 호출 한 다음 CPU 번호와 사용자, 시스템, IO 대기 및 유휴 백분율을 구분하기 위해 awk를 사용합니다. 답변에 더 많은 정보를 추가하겠습니다.
sar -P ALL
이 스크립트의 출력이 아닌 직접 의 출력을 제공 할 수 있습니까? 비표준 스크립트이므로 아무도 보지 않고 스크립트를 수행 할 수 없습니다.
sar -P ALL
출력 처럼 보이지 않습니다 .