SAR에서 추출한 일부 데이터를 이해하려고 합니다. 이에 대해 세 가지 주요 질문이 있습니다. 궁극적으로 서버 클러스터에서 샘플링 간격당 유휴 상태인 CPU 수를 확인하고 싶습니다.
- 모든 항목에 많은 CPU가 표시되지는 않습니다. 이것이 예상되는가? 이것이 정확히 무엇을 의미하나요? 이것이 #2와 관련이 있나요?
- 사용되지 않은 라인이 있습니다(CPU=U). 이것문서"U는 시스템 전체에서 사용되지 않은 용량을 나타냅니다."라고 말합니다. "시스템 전체에서 사용되지 않은 용량"에 대한 정확한 정의나 정의를 실제로 찾을 수 없습니다. "사용하지 않는 용량은 70%가 비어있다"는 말을 어떻게 해석해야 할지 모르겠습니다.
-
마지막으로 ORall
라인이 어떻게 계산되는지 잘 모르겠습니다 . 저는 이것이 모든 CPU의 평균이라고 생각했지만, 모든 CPU에 걸쳐 계산을 해보니 해당 행과는 매우 다른 답을 얻었습니다. 이 계산이 정확히 무엇을 의미하는지 말해 줄 수 있는 사람이 있나요? 이것을 좀 더 자세히 살펴보세요SAR에 관한 질문system-wide
유휴 비율은 각 CPU의 유휴 비율에 "physc" 값을 곱한 합계인 것으로 보입니다 . 불행하게도 나physc
에게는 또는 entc%(있는 경우)가 없으므로 내 데이터로 이를 확인할 수 없습니다. 이것이 맞다면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%를 얻습니다. 이는 sar에서 제공하는 전체 CPU 유휴 비율 값 85%와 완전히 일치하지 않습니다.
다음은 하루 동안의 어획량 그래프입니다(30초마다).
"시스템 전체" 유휴 시간이 매우 작을 경우 평균 CPU 유휴 시간과 "시스템 전체" 유휴 시간 간의 상관 관계는 거의 완벽합니다. 그러나 "시스템 전체" 유휴 시간이 증가함에 따라 상관 관계는 약해집니다. 이것이 결정론적 기계라고 가정하면, 이는 내가 가지고 있는 데이터가 완전한 그림을 제공하지 않는다는 것을 말해줍니다. 하지만 내가 얼마나 신경쓰나요?
위의 예에서 볼 수 있듯이 일부 CPU가 모든 지점에서 보고되지 않는 이유를 완전히 이해하지 못하지만 누락된 CPU가 고르게 분포되지 않습니다. 또한 이 글을 읽으면서빨간 책, 나는 이것들이 논리적 CPU임에 틀림없다고 생각합니다. 숫자가 없으면 physc
값으로 할 수 있는 일이 없다고 생각합니다. 나는 이 값을 다양한 방정식에 사용해 보았 U
으나 의미가 있는 것을 찾지 못했습니다. 전체 유휴 비율을 액면 그대로 받아들일 수 있는지조차 확신할 수 없습니다.
노트: sar에서 이 데이터를 캡처하는 데 문제가 있습니다. 이것은 #1에 대한 완전히 유효한 답변입니다. 이 경우 항상 반환되어야 합니다.
답변1
sar -P ALL
제공한 출력이 표준 또는 출력 과 다릅니다 sar -u
. 수동으로 포맷했는지, 아니면 다른 도구를 통해 실행했는지는 확실하지 않지만, 이를 파악하는 데 충분한 정보가 있다고 생각합니다.
이것은 매뉴얼 페이지의 중요한 정보입니다.sar
참고: SMP 시스템에서 전혀 활동이 없는 프로세서(각 필드의 0.00)는 비활성화된(오프라인) 프로세서입니다.
클러스터에서 실행하고 있으므로 SMP 시스템을 사용한다고 가정하는 것이 상당히 안전해 보입니다.
예제 2와 3에서는 24개 코어 중 12개만 통계를 보고합니다. 맨 페이지에 명시된 대로 이러한 코어가 비활성화되었다고 가정하면 통계가 의미가 있습니다.
비활성화된 코어를 나타내기 위해 다음과 같이 데이터를 업데이트해 보겠습니다.-
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 9 | - 9 | -
10 | 33 10 | - 10 | -
11 | 64 11 | - 11 | -
12 | 6 12 | 0 12 | 38
13 | 6 13 | - 13 | -
14 | 6 14 | - 14 | -
15 | 6 15 | - 15 | -
16 | 12 16 | 12 16 | 37
17 | 15 17 | - 17 | -
18 | 62 18 | - 18 | -
19 | 69 19 | - 19 | -
20 | 7 20 | 3 20 | 42
21 | 7 21 | - 21 | -
22 | 6 22 | - 22 | -
23 | 7 23 | - 23 | -
그런 다음 다음을 사용하여 평균을 계산할 수 있습니다. (이것은 제가 작성한 간단한 한 줄입니다. 더 나은 내용을 작성할 수 있다고 확신합니다.)
$ awk '{idle = $3; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 22.208333 Cores: 24
$ awk '{idle = $6; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 42.000000 Cores: 12
$ awk '{idle = $9; output += idle; if (idle >= 0) {cores += 1} } END {printf "Ave idle%%: %f Cores: %d\n", output / cores, cores }' input_file
Ave idle%: 48.250000 Cores: 12
예제 2와 3의 코어 수는 12개입니다. 이는 예제 출력에 표시되는 것과 일치하는 평균입니다.
첫 번째와 두 번째 사례 사이의 어느 시점에서 CPU 코어의 절반이 비활성화된 것으로 보입니다.
질문에 대한 간단한 요약:
- 데이터 손실은 프로세서 코어가 비활성화되었음을 의미할 수 있습니다.
U
평균 행의 내용은U
이 매뉴얼 페이지의 내용과 다릅니다. 매뉴얼 페이지의 참조는U
프로세서 ID 열 아래에 나타나야 합니다.- 귀하가 제공하는 출력은 표준 출력과 다르며 평균 또는 참조 항목을
sar
결정하는 데 충분한 정보를 제공하지 않습니다 . 첫 번째 숫자는 활성 코어의 유휴 비율인 것으로 보입니다.U
all