TODO: bài về mount, fstab (mặc dù những thứ này không thú vị cho lắm nhưng đã dùng Linux là phải biết, đặc biệt là đối với các sysadmin)
NOTE một lần nữa, nội dung bài này không thú vị, nhưng là cần thiết với các sysadmin
Bài viết thực hiện trên:
$ uname -a
Linux archhvn 3.10.9-1-ARCH #1 SMP PREEMPT Wed Aug 21 13:49:35 CEST 2013 x86_64 GNU/Linux #đã lâu rồi không upgrade :D
nội dung có thể áp dụng tương tự cho các Linux based distro khác như Ubuntu ...
Vài thuật ngữ
IO: input/output (for devices and partitions)
report: mỗi output của iostat gọi là một report
iostat là một chương trình nằm trong package sysstat
$ pacman -Qs iostat
local/sysstat 10.2.0-1
a collection of performance monitoring tools (iostat,isag,mpstat,pidstat,sadf,sar)
Để cài đặt package này, dùng câu lệnh để cài tương ứng trên OS của bạn. Trên Ubuntu có thể là:
sudo apt-get install -y sysstat
Format câu lệnh iostat:
iostat [-options ] [ interval [ count ] ]
Vài ví dụ
iostat # hiển thị report từ lúc boot
iostat 2 # hiển thị liên tục report mỗi 2 giây
iostat 2 5 # hiển thị 5 lần report mỗi lần cách nhau 2 giây.
Output của iostat gồm 2 loại report:
- the CPU Utilization report (hiển thị giá trung bình nếu có nhiều CPU)
- the Device Utilization report.
$ iostat -y 2 1
Linux 3.10.9-1-ARCH (archhvn) 12/02/2013 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.53 0.00 0.38 4.29 0.00 92.80
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 4.00 0.00 20.00 0 40
Option -y để bỏ qua report từ lúc boot.
Phần CPU Utilization report có 6 giá trị tính bằng đơn vị %.
3 giá trị về % CPU
- %user: phần trăm CPU được sử dụng khi chạy các ứng dụng ở user level (tất cả những gì không thuộc về kernel)
- %system: phần trăm CPU được sử dụng khi chạy ở system level (kernel)
- %nice: tương tự %user nhưng với nice priority.
nice numbers are used to compute the priorities but are not the priorities themselves3 giá trị về % thời gian
http://en.wikipedia.org/wiki/Nice_%28Unix%29
- %iowait: phần trăm thời gian mà CPU(s) rảnh khi hệ thống thực hiện disk I/O request.
- %idle: phần trăm thời gian mà CPU(s) rảnh và hệ thống không thực hiện disk I/O request.
- %steal: xem thêm ở man 1 iostat.
phần the Device Utilization report cũng gồm 7 giá trị (tên cột / số cột hay đơn vị có thể khác nếu sử dụng các option của iostat, ở đây chỉ viết về ví dụ nói trên)
- Device: tên device, ở đây là "sda". Một device có 1 hay nhiều partition. (dùng iostat -pd sda để hiển thị thông số cho từng partition trong sda)
- tps: transfer per second. Mỗi transfer là một I/O request đến device. Nhiều logical request có thể được hợp lại thành 1 I/O request đến device => một transfer không có kích thước cố định.
- kB_read/s: số kilobytes đọc từ device
- kB_read: tổng số kilobytes đọc từ device = kB_read/s * interval (s)
- kB_wrtn/s: số kilobytes ghi vào device
- kB_wrtn: tổng số kilobytes ghi từ device = kB_read/s * interval (s)
Đến đây coi như đủ, bạn đã có thể đọc được các report của iostat.
Nhiều option khác không liệt kê ở đây, ngoài 1 vài option phổ biến sau:
- -c: chỉ hiện CPU report
- -d: chỉ hiện device report
Bonus: từ kernel 2.4 trở lên, 1 block tương đưong với 1 sector = 512 bytes.
Further reading:
man 1 iostat
https://www.kernel.org/doc/Documentation/iostats.txt
Các câu hỏi thảo luận:
Với lần lượt từng giá trị trong 6 giá trị của CPU, khi nó lên cao có nghĩa là gì, có vấn đề gì ?
Ví dụ: %nice tăng cao, chuyên gì đang xảy ra?