Làm thế nào để có được tổng số đọc và viết IOPS trong Linux?


32

Làm cách nào để tôi đọc và viết IOPS riêng trong Linux, sử dụng dòng lệnh hoặc theo cách lập trình? Tôi đã cài đặt sysstatgói.

Xin vui lòng cho tôi biết làm thế nào để tôi tính toán riêng biệt bằng cách sử dụng sysstatcác lệnh gói.

Hoặc, có thể tính toán chúng bằng hệ thống tập tin?

ví dụ: /proc hoặc /syshoặc/dev

Câu trả lời:


46

iostatlà một phần của sysstatgói, có thể hiển thị các iops tổng thể nếu muốn hoặc hiển thị chúng cách nhau bằng cách đọc / ghi.

Chạy iostatvới cờ -d để chỉ hiển thị trang thông tin thiết bị và -x để biết thông tin chi tiết (thống kê đọc / ghi riêng biệt). Bạn có thể chỉ định thiết bị bạn muốn thông tin bằng cách thêm nó vào sau dòng lệnh.

Hãy thử chạy iostat -dxvà nhìn vào bản tóm tắt để cảm nhận đầu ra. Bạn cũng có thể sử dụng iostat -dx 1để hiển thị đầu ra làm mới liên tục, rất hữu ích cho việc khắc phục sự cố hoặc giám sát trực tiếp,

Sử dụng awk, trường 4 sẽ cho bạn đọc / giây , trong khi trường 5 sẽ cho bạn viết / giây .

Chỉ đọc / giây:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4; }'

Chỉ viết / giây:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $5; }'

Đọc / giây và ghi / giây cách nhau bằng dấu gạch chéo:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4"/"$5; }'

IOPS tổng thể (những gì hầu hết mọi người nói về):

iostat -d <your disk name> | grep <your disk name> | awk '{ print $2; }'

Ví dụ: chạy lệnh cuối cùng với ổ đĩa chính của tôi, / dev / sda, trông như thế này:

dan@daneel ~ $ iostat -dx sda | grep sda | awk '{ print $4"/"$5; }' 15.59/2.70

Lưu ý rằng bạn không cần phải root để chạy cái này, làm cho nó hữu ích cho người dùng không có đặc quyền.

TL; DR: Nếu bạn chỉ quan tâm sda, lệnh sau sẽ cung cấp cho bạn IOPS tổng thể cho sda:

iostat -d sda | grep sda | awk '{ print $2; }'

Nếu bạn muốn thêm IOPS trên tất cả các thiết bị, bạn có thể sử dụng lại awk:

iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}'

Điều này tạo ra đầu ra như vậy:

dan@daneel ~ $ iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}' 18.88


Cảm ơn Mr.Dannel hữu ích của nó. Nếu tôi muốn có được hệ thống đầy đủ Đọc / Viết IOPS Làm thế nào để có được?
shas

Khi tôi chạy, iostat -dx 1tôi có một ans như thế này Linux 2.6.35.14-106.fc14.i686 (shashi) 08/24/2015 _i686_ (2 CPU) Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 2.46 13.80 2.27 2.03 136.26 123.91 60.53 0.11 25.77 4.43 1.91 dm-0 0.00 0.00 2.35 0.77 93.07 6.11 31.86 0.17 53.73 2.59 0.81 dm-1 0.00 0.00 1.02 2.83 8.14 22.66 8.00 0.83 214.34 0.60 0.23 dm-2 0.00 0.00 1.37 11.89 34.77 95.14 9.80 1.67 126.06 0.84 1.11cho dm-0, dm-1, dm-2 đệ quy tôi có nên thêm không?
shas

Tôi đã cập nhật câu trả lời với một mẫu tổng thể và một ví dụ cho sda. Nếu bạn chỉ đơn giản muốn xem IOPS cho ổ cứng của mình, thì hãy sử dụng lệnh cuối cùng đó cho IOPS tổng thể ( iostat -d sda | grep sda | awk '{ print $2; }')
Daneel

Không tôi muốn riêng như bạn đề cập trong câu trả lời đầu tiên. hơi nhầm lẫn với dm-*vì vậy tôi đã hỏi, tôi cần phải thực hiện bổ sung trên các phân vùng đó
shas 24/08/2015

À, được rồi. Bạn có thể sử dụng lệnh sau để kiểm tra xem mỗi dm-xthiết bị là gì: lvdisplay|awk '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}'- Tôi sẽ cập nhật câu trả lời với điều này, cũng như cách thêm kết quả.
Daneel
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.