Tại sao top báo cáo việc sử dụng cpu khác với CloudWatch?


9

tophiển thị mức sử dụng CPU trung bình trong thời gian cao điểm khoảng 20% ​​trong khi giám sát CloudWatch cho thấy mức sử dụng CPU trung bình là 40%. Điều gì gây ra sự khác biệt này?

Câu trả lời:


15

Một quan sát rất tốt và chúng tôi cũng đã gặp phải điều này. Đây là những gì tôi tìm thấy:

Hãy cẩn thận đo mức sử dụng CPU từ trong một phiên bản EC2. Có thể thấy mức độ sử dụng CPU dưới 100% và vẫn được tối đa hóa hoàn toàn. Hãy tin tôi: đã ở đó, làm điều đó. (Nhân tiện, CloudWatch CPUUtilization, được đo từ bên ngoài thể hiện và luôn luôn đúng.)

Có một mô tả rất hay về toàn bộ điều ở đây: https://axibase.com/news/ec2-monitoring-the-case-of-stolen-cpu/

Trong ví dụ trên, phiên bản m1.small EC2 được phân bổ 0,4 đơn vị bộ xử lý và vì vậy 40% CPU bận có nghĩa là tỷ lệ sử dụng phần trăm của lõi bên dưới. Tuy nhiên vì 40% là chia sẻ CPU tối đa có thể được phân bổ cho VM này, nên mức sử dụng CPU hiệu quả là 40% / 40% = 100%. Đó là số được hiển thị bởi CloudWatch.

Nếu bạn đang tự hỏi 40% đến từ đâu, thì toán học khá đơn giản. Hệ thống linux m1.small có quyền sử dụng 1 đơn vị tính toán EC2 cung cấp dung lượng CPU tương đương của bộ xử lý Opteron 1.0 2007 GHz1.2 GHz 2007 hoặc bộ xử lý Xeon. Do VM chạy trên một máy có tốc độ xung nhịp 2,6 GHz, nên nó được hưởng 38,4% chia sẻ bộ xử lý 38,4% trên nút XEN cụ thể này. Bạn có thể chạy lệnh cat / Proc / cpuinfo để tìm hiểu kiến ​​trúc CPU đằng sau các phiên bản EC2 của bạn.

Đặc biệt chú ý đến gợi ý về cách xử lý các công cụ không biết về toán học đặc biệt:

Một tùy chọn khác có thể được sử dụng để trang bị thêm cho các công cụ giám sát dựa trên tác nhân hiện tại hoặc SNMP, không tích hợp với CloudWatch, là sử dụng số liệu nhàn rỗi của CPU. Tất cả những gì bạn cần làm là viết lại các quy tắc để đo CPU nhàn rỗi thay vì CPU bận. Ví dụ: nếu bạn có ngưỡng> 75% được xác định cho CPU bận, hãy tạo quy tắc <25% cho CPU không hoạt động. Nếu CPU không hoạt động là 0, thì máy chủ của bạn bị ràng buộc CPU.

Rất đơn giản. Rất đẹp.

Khi bạn chạy hàng đầu trong phiên bản EC2, nó đang đo mức độ sử dụng CPU của máy lõi vật lý đang chạy phiên bản của bạn và các máy khác. Cách sử dụng này không chính xác nếu bạn muốn đo mức sử dụng cpu của cá thể của bạn (đơn vị tính EC2 được gán cho thể hiện của bạn).

Đó là lý do tại sao các số liệu của Cloudwatch là có thật vì nó được đo bên ngoài đối tượng cho (các) đơn vị tính toán EC2 được gán cho riêng cá thể của bạn.

Xem tại đây - https://forums.aws.amazon.com/thread.jspa?threadID=99993


Nói cách khác, cả hai đều đúng nhưng đo lường những thứ khác nhau.
bahamat

1
Bạn có thể đặt nó theo cách đó. Tuy nhiên, OP lo ngại rằng những gì anh ta nghĩ anh ta nhìn thấy không phải là những gì amazon nói anh ta nhìn thấy. Vì vậy, trong trường hợp của anh ta, dữ liệu hàng đầu là không chính xác cho anh ta. Nhưng, nếu bạn đo lường mức độ sử dụng cpu của lõi bên dưới để gỡ lỗi các vấn đề về hiệu năng, thì việc chạy hàng đầu là rất hữu ích. Nếu bạn chỉ quan tâm đến việc sử dụng cá thể của mình, thì Cloudwatch là cách để đi. Vì vậy, vâng, cả hai đều đo lường những thứ khác nhau.
Chida

1
Tôi đoán tôi nên làm theo lời tuyên bố của mình với "cái trước là thứ bạn nghĩ bạn muốn, cái sau là thứ bạn thực sự muốn", nhưng tôi nghĩ rằng nó đã được che đậy.
bahamat

+1 cho những gì bạn vừa nói :)
Chida

1
Tôi lấy nội dung của liên kết chết từ máy wayback và thêm nó vào bài viết trực tiếp.
Johano Fierra
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.