Có nhiều lệnh (1) lệnh trên một hệ thống Linux điển hình; mặc định là một bash (1) nội trang được phần nào cơ bản. Ngoài ra còn có /usr/bin/time
mà bạn có thể chạy bằng cách gọi chính xác như vậy, hoặc bảo bash (1) không sử dụng bí danh và nội trang dựng sẵn bằng cách thêm tiền tố vào trước đó: \time
. Debian có nó trong gói "thời gian" được cài đặt theo mặc định, Ubuntu có thể giống hệt nhau, và các bản phân phối khác sẽ khá giống nhau.
Gọi nó trong một thời trang tương tự như được xây dựng trong vỏ là đã tiết hơn và nhiều thông tin, mặc dù có lẽ đục hơn trừ khi bạn đã quen thuộc với những gì các con số thực sự có nghĩa là:
$ \time df
[output elided]
0.00user 0.00system 0:00.01elapsed 66%CPU (0avgtext+0avgdata 864maxresident)k
0inputs+0outputs (0major+261minor)pagefaults 0swaps
Tuy nhiên, tôi muốn muốn gây sự chú ý của bạn vào trang người đàn ông trong đó liệt kê các -f
tùy chọn để tùy chỉnh định dạng đầu ra, và đặc biệt là định dạng %w
mà đếm số lần quá trình này đã từ bỏ timeslice CPU của nó cho I/O:
$ \time -f 'ios=%w' du Maildir >/dev/null
ios=184
$ \time -f 'ios=%w' du Maildir >/dev/null
ios=1
Lưu ý rằng lần chạy đầu tiên dừng lại cho I/O 184 lần, nhưng lần chạy thứ hai dừng lại chỉ một lần.Con số đầu tiên là đáng tin cậy, vì có 124 thư mục trong số ~/Maildir
của tôi: đọc thư mục và inode cung cấp khoảng hai IOPS cho mỗi thư mục, ít hơn một chút vì một số inode có khả năng cạnh nhau và đọc trong một thao tác. thêm một lần nữa để lập bản đồ trong du (1) nhị phân, thư viện được chia sẻ, v.v.
Con số thứ hai dĩ nhiên thấp hơn do bộ nhớ cache trên đĩa của Linux. Vì vậy, phần cuối cùng là xóa bộ nhớ cache. sync (1) là một lệnh quen thuộc, xóa sạch dữ liệu ghi trên đĩa, nhưng không xóa bộ đệm đọc. Bạn có thể xóa bằng cách viết 3 đến /proc/sys/vm/drop_caches
. (. Các giá trị khác cũng thỉnh thoảng có ích, nhưng bạn muốn 3 đây) Là một người sử dụng không phải root, cách đơn giản nhất để làm điều này là:
echo 3 | sudo tee /proc/sys/vm/drop_caches
Kết hợp điều đó với /usr/bin/time
nên cho phép bạn xây dựng các kịch bản bạn cần để các lệnh chuẩn bạn quan tâm đến
Như trẻ vị thành niên sang một bên, tee (1) được sử dụng vì điều này sẽ không làm việc:.
sudo echo 3 >/proc/sys/vm/drop_caches
lý do? Mặc dù echo (1) chạy dưới dạng root, chuyển hướng là tài khoản người dùng bình thường của bạn, nhưng không có quyền ghi vào drop_caches
. tee (1) có hiệu quả chuyển hướng là root.
Bản sao có thể có của [câu hỏi SO này] (http://stackoverflow.com/questions/249570/how-can-i-record-what-process-or-kernel-activity-is-using-the-disk- in-gnu-linux) hoặc [Câu hỏi lỗi máy chủ này] (http://serverfault.com/questions/586774/getting-iops-of-the-processes-on-linux) Không thể đánh dấu là trùng lặp do tiền thưởng – Appleman1234
hệ thống điều hành của bạn là gì? Bạn đã kiểm tra [DTrace] (http://www.brendangregg.com/dtrace.html) dành cho Unix/MacOS X/Solaris hay [SystemTap] (https://sourceware.org/systemtap/examples/keyword-index .html) có thể được sử dụng cho Linux? – VolenD