Ý nghĩa của đầu ra từ sar trên AIX


11

Tôi đang cố gắng hiểu một số dữ liệu được lấy từ SAR. Tôi có ba câu hỏi chính về điều này. Cuối cùng, tôi muốn xác định có bao nhiêu CPU không hoạt động ở mỗi khoảng thời gian lấy mẫu trên một cụm máy chủ.

  1. Nhiều CPU không hiển thị trong mỗi mục. Đây có phải là mong đợi và chính xác điều đó có nghĩa là gì? Có liên quan đến # 2?
  2. Có những dòng không được sử dụng (CPU = U). Các tài liệu cho biết "U chỉ ra khả năng không được sử dụng trên toàn hệ thống". Tôi thực sự không thể tìm thấy một định nghĩa chính xác về "dung lượng chưa sử dụng trên toàn hệ thống" hoặc bất kỳ định nghĩa nào. Tôi không chắc làm thế nào để diễn giải một dòng cho biết một cái gì đó như "khả năng không sử dụng là 70% nhàn rỗi."
  3. Cuối cùng, tôi không chắc về cách tính -hoặc alldòng. Tôi sẽ nghĩ rằng đó là trung bình của tất cả các CPU nhưng khi tôi làm toán trên tất cả các CPU, tôi nhận được một câu trả lời rất khác so với những gì trên dòng đó. Bất cứ ai có thể cho tôi biết chính xác những gì đi vào tính toán đó? Nhìn kỹ vào câu hỏi liên quan này về SAR, có vẻ như system-widetỷ lệ phần trăm nhàn rỗi là tổng sản phẩm của mỗi phần trăm nhàn rỗi của CPU và giá trị 'vật lý'. Thật không may, tôi không có physchoặc entc% (giả sử có một) vì vậy tôi không thể xác minh điều này với dữ liệu của riêng tôi. Nếu điều đó đúng, điều đó có nghĩa là tôi cần các physcgiá trị để thực sự hiểu phần trăm nhàn rỗi?

Dưới đây là một số ví dụ về những gì tôi đang thấy. Đây là tất cả từ cùng một ngày.

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

Dữ liệu này được tạo bởi một tập lệnh chạy: sar -P ALL 1 1Sau đó, nó chạy một lệnh awk. Tôi không tốt với awk nhưng đây rõ ràng là những phần quan trọng:

Bộ lọc: /System|AIX|^$|%/ {next}

Phân tích: {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)}

Điều này có vẻ đúng dựa trên những gì tôi hiểu về awk và những gì tôi thấy từ các ví dụ về đầu ra.

Nếu tôi giả sử rằng các giá trị bị thiếu đều bằng 0 đối với trường hợp 2, thì trung bình là 21 có vẻ hơi phù hợp với trường hợp 1. Tuy nhiên, nếu tôi đưa ra giả định đó cho trường hợp 3, tôi nhận được 24% tỷ lệ cược hoàn toàn với 85% giá trị phần trăm được cung cấp bởi sar cho tổng thể CPU nhàn rỗi.

Dưới đây là biểu đồ chụp cả ngày (cứ sau 30 giây):

nhập mô tả hình ảnh ở đây

Khi có rất ít thời gian nhàn rỗi 'toàn hệ thống', mối tương quan giữa không hoạt động của CPU trung bình và không hoạt động 'toàn hệ thống' là gần như hoàn hảo. Nhưng khi thời gian nhàn rỗi của toàn hệ thống tăng lên, mối tương quan trở nên yếu hơn nhiều. Làm việc dựa trên giả định rằng đây là những cỗ máy xác định, điều đó cho tôi biết rằng dữ liệu tôi có không đưa ra bức tranh đầy đủ. Nhưng tôi quan tâm đến mức nào?

Tôi không hiểu đầy đủ lý do tại sao một số CPU không được báo cáo tại mỗi điểm nhưng những CPU bị thiếu không được phân phối đều như đã thấy trong các ví dụ ở trên. Ngoài ra, từ việc đọc cuốn sách đỏ này , tôi cho rằng đây phải là những CPU hợp lý và nếu không có physcsố, tôi nghĩ tôi không thể làm được gì nhiều với những giá trị này. Tôi đã cố gắng sử dụng Ugiá trị trong các phương trình khác nhau nhưng tôi không tìm thấy bất cứ điều gì hợp lý. Tôi thậm chí còn không rõ ràng rằng phần trăm nhàn rỗi tổng thể có thể được lấy theo mệnh giá.

LƯU Ý : Có gì đó không đúng với việc thu thập dữ liệu này từ sar là câu trả lời hoàn toàn hợp lệ cho # 1, nếu đó là trường hợp nó luôn luôn phải trả về.


Lệnh nào bạn đang chạy để có được đầu ra đó? Nó không giống như sar -P ALLđầu ra tiêu chuẩn .
Thụy Sĩ

@Swiss Điều này đến từ một kịch bản mà tôi đã không viết. Nó gọi sar -P ALL 1 1và sau đó sử dụng awk để phá vỡ số cpu và sau đó là tỷ lệ phần trăm người dùng, hệ thống, IO-Wait và idle. Tôi sẽ thêm thông tin vào câu trả lời của bạn.
JimmyJames

@Swiss Tôi đã chỉnh sửa ví dụ để phản ánh rõ hơn về kết quả đầu ra của tập lệnh.
JimmyJames

bạn có thể cung cấp đầu ra sar -P ALLtrực tiếp, thay vì đầu ra của tập lệnh này không? Đó là một kịch bản không chuẩn và không ai có thể nói cho bạn biết nó làm gì mà không nhìn thấy nó.
Thụy Sĩ

@Swiss tiếc là tôi không thể. Tôi có thể thấy kịch bản và nó xuất ra. Có cái gì còn thiếu trong mô tả về những gì nó làm mà tôi có thể làm rõ?
JimmyJames

Câu trả lời:


4

Đầu ra bạn đã cung cấp trông khác với tiêu chuẩn sar -P ALLhoặc sar -uđầu ra. Tôi không chắc liệu bạn có định dạng bằng tay không, hoặc nếu bạn đang chạy nó thông qua một công cụ khác, nhưng tôi nghĩ có đủ thông tin để tìm hiểu điều này.

Đây là phần thông tin quan trọng, được lấy từ trang man cho sar

Lưu ý: Trên máy SMP, bộ xử lý hoàn toàn không có hoạt động (0,00 cho mỗi trường) là bộ xử lý bị tắt (ngoại tuyến).

Vì bạn đang chạy trong một cụm, có vẻ như khá an toàn khi cho rằng bạn đang sử dụng máy SMP.

Lưu ý rằng trong ví dụ 2 và 3, chỉ có 12 trong số 24 lõi được báo cáo thống kê. Nếu bạn cho rằng các lõi này bị vô hiệu hóa, như được đề cập trong trang man, thì số liệu thống kê có ý nghĩa.

Hãy cập nhật dữ liệu của bạn như sau, để chỉ ra lõi bị vô hiệu hóa với -

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  | -

Sau đó, chúng ta có thể sử dụng cách sau để tính trung bình (đây là một oneliner nhanh mà tôi đã viết, tôi chắc chắn có thể viết một cái gì đó tốt hơn.)

$ 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

Lưu ý rằng số lõi trong ví dụ 2 và 3 là 12 và mức trung bình khớp với những gì bạn thấy trong đầu ra ví dụ của bạn.

Có vẻ như tại một số điểm giữa trường hợp thứ nhất và thứ hai của bạn, một nửa số lõi CPU của bạn đã bị vô hiệu hóa.

Tóm tắt nhanh về câu hỏi của bạn:

  1. Thiếu dữ liệu có nghĩa là lõi bộ xử lý bị vô hiệu hóa.
  2. Dòng Utrung bình khác với Utrang người đàn ông đó. Các tham Uchiếu trong trang man sẽ hiển thị dưới cột ID bộ xử lý.
  3. Đầu ra bạn cung cấp khác với sarđầu ra tiêu chuẩn và không có đủ thông tin được cung cấp để xác định những gì Uhoặc alltrên dòng trung bình đề cập đến. Số đầu tiên dường như là% nhàn rỗi trên các lõi hoạt động.

"Lưu ý rằng số lõi trong ví dụ 2 và 3 là 12 và số trung bình khớp với những gì bạn thấy trong đầu ra ví dụ của mình." Xin lỗi, tôi có thể không rõ ràng, tôi đã tính trung bình từ các con số. Điều đó không đến từ sar. Các giá trị Uallđến từ sar như dòng. Tôi đã giải thích chúng trong câu trả lời của mình vì chúng khác nhau về cơ bản so với các giá trị cpu, từ những gì tôi hiểu.
JimmyJames

Nếu các lõi bị vô hiệu hóa, tại sao thời gian nhàn rỗi của toàn hệ thống lại ít hơn nhiều trong trường hợp 2 so với trường hợp 3? Tôi đang đấu tranh để hiểu làm thế nào họ có thể có thời gian nhàn rỗi trung bình gần như nhau trong cùng 12 cpus và thời gian nhàn rỗi trên toàn hệ thống hoàn toàn khác nhau.
JimmyJames

Tôi thấy rằng khi các máy đang tải liên tục, tôi thấy đầu ra từ mọi bộ xử lý. Điều này sẽ gợi ý cho tôi rằng bạn đúng rằng những thứ này bị vô hiệu hóa. Tôi chỉ đang vật lộn với cách hệ thống nhàn rỗi liên quan đến sự nhàn rỗi của cpus không bị vô hiệu hóa.
JimmyJames

Tôi đã cập nhật câu hỏi của mình với một vài thay đổi để làm rõ vấn đề. Vì vậy, nhìn vào trường hợp 2, nếu 12 cpus bị vô hiệu hóa và tỷ lệ phần trăm sys-idle dựa trên tất cả 24,% không sử dụng không thể xuống dưới 50%. Vì vậy, tôi đã có 15%, điều đó có nghĩa là% không hoạt động phải bỏ qua các CPU bị vô hiệu hóa, phải không?
JimmyJames
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.