Cơ sở kiến thức

Đánh cắp thời gian, và tại sao của bạn đọc bằng không

Steal time là siêu giám sát thừa nhận một khách khác đã lấy lõi của bạn; trên các lõi chuyên dụng không có gì để lấy, vì vậy phần hữu ích là những gì cần kiểm tra thay thế.

Con số này từ đâu ra

%st trong top là tỷ lệ thời gian CPU ảo của bạn ở trạng thái sẵn sàng chạy nhưng không được lên lịch trên một lõi vật lý, như được báo cáo bởi hypervisor. Bộ đếm này tồn tại vì một máy khách không thể phân biệt được giữa một lõi chậm và một lõi mà nó không bao giờ nhận được.

top -bn1 | head -3
vmstat 1 5
mpstat -P ALL 1 5

Giá trị thô, cho những ai tự vẽ đồ thị, là trường thứ tám của dòng cpu trong /proc/stat, tính bằng USER_HZ:

grep -w cpu /proc/stat

Tại sao nó bằng 0 ở đây

Các lõi được cấp phát một lần. Một vCPU trên instance của bạn được ghim vào một lõi vật lý không nằm trong cấp phát của bất kỳ ai khác, trên một máy chủ không bị bán quá tải, vì vậy không có hàng đợi để chờ. Không phải là một con số thấp, không phải là một khoản tín dụng cạn kiệt vào ngày thứ tư của tháng — không có gì để bị lấy đi.

Nếu của bạn không phải là 0, đó là một lỗi và chúng tôi muốn nhận ticket. Kèm theo kết quả mpstat -P ALL 5 12 và ID instance.

Tại sao con số của người khác không phải là 0

Các gói burstable được xây dựng dựa trên steal time. Nhiều khách hàng dùng chung một lõi, mỗi người giữ một số dư tín dụng, và khi số dư cạn kiệt, bộ lập lịch trao lõi cho người khác. Được bán một cách trung thực, đó là một sản phẩm hợp pháp cho các khối lượng công việc có thời gian rảnh. Nhưng không phải là dịch vụ này. Chúng tôi đã loại bỏ gói rẻ vào năm 2021 và tình trạng bán quá tải cũng biến mất theo.

Kiểm tra gì khi máy cảm thấy chậm

Steal là điều đầu tiên mọi người nhìn vào và hiếm khi là câu trả lời. Theo thứ tự khả năng:

Hàng đợi chạy

vmstat 1 5

Nhiều luồng sẵn sàng hơn số lõi, trong cột r, có nghĩa là bạn chỉ đơn giản là hết CPU. Mọi sự tinh chỉnh đều không tạo ra thêm lõi.

Đĩa

iostat -x 1 5

%iowait tăng trong khi thời gian người dùng thấp chỉ ra lưu trữ, không phải bộ xử lý.

Cgroup của chính bạn

Đây là thứ khiến người ta bối rối. Một container có hạn mức CPU bên trong cảm thấy giống hệt steal time và báo cáo steal là 0, vì giới hạn đó là của bạn chứ không phải của chúng tôi:

cat /sys/fs/cgroup/cpu.stat

nr_throttledthrottled_usec tăng lên có nghĩa là hạn mức do orchestrator của bạn đặt ra là trần. Hãy tăng nó lên hoặc loại bỏ.

Tần số

Xung nhịp boost di chuyển theo khối lượng công việc, và một bài kiểm tra đơn luồng là cách trung thực để xem bạn thực sự ở đâu:

apt install -y sysbench
sysbench cpu --cpu-max-prime=20000 --threads=1 run

So sánh con số sự kiện mỗi giây với một instance khác thay vì so với một con số từ bài blog của ai đó vào năm 2019.

Các cột guest và nested

%guest%gnice chỉ khác 0 khi bạn đang chạy các máy ảo bên trong instance của mình. Ảo hóa lồng nhau có sẵn trên các gói EPYC lớn hơn và trên bare metal; kiểm tra thiết bị trước khi bạn thiết kế dựa trên nó:

ls -l /dev/kvm

Phiên bản ngắn

r cao với thời gian người dùng gần một trăm phần trăm là CPU. %iowait cao là đĩa. cpu.stat đếm throttles là hạn mức của chính bạn. Steal khác 0 là lỗi của chúng tôi, và nó không nên xảy ra.

Sẵn sàng khi bạn cần

Chọn thành phố. Chọn kích thước. Thanh toán bằng coin.

Không có biểu mẫu về bạn là ai, không chờ đợi con người phê duyệt, không gọi điện thoại để xác minh bất cứ điều gì. Hóa đơn được thanh toán và thông tin đăng nhập sẽ vào hộp thư của bạn.