time
là một lệnh tuyệt vời nếu bạn muốn tìm ra thời gian CPU cho một lệnh đã cho.
Tôi đang tìm kiếm một cái gì đó tương tự có thể đo I / O đĩa của chương trình và bất kỳ đứa trẻ nào. Tốt nhất là nên phân biệt giữa I / O đã được lưu trong bộ nhớ cache (và do đó không làm cho đĩa quay) và I / O không được lưu trong bộ nhớ cache.
Vì vậy, tôi muốn làm:
iomeassure my_program my_args
và nhận đầu ra tương tự như:
Cached read: 10233303 Bytes
Cached write: 33303 Bytes # This was probably a tmp file that was erased before making it to the disk
Non-cached read: 200002020 Bytes
Non-cached write: 202020 Bytes
Tôi đã xem xét vmstat
, iostat
và sar
, nhưng không ai trong số này đang xem xét một quá trình duy nhất. Thay vào đó họ nhìn vào toàn bộ hệ thống.
Tôi đã xem xét iotop
, nhưng điều đó chỉ cho tôi một cái nhìn ngay lập tức.
--- biên tập ---
câu trả lời của snap có vẻ gần.
'Đầu vào hệ thống tệp:' là các lần đọc không được lưu trong bộ đệm 512 byte.
'Đầu ra hệ thống tệp:' là ghi được lưu trong bộ nhớ cache trong các khối 512 byte.
Bạn có thể buộc bộ đệm trống với:
sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
Tôi đã thử nghiệm với:
seq 10000000 > seq
/usr/bin/time -v bash -c 'perl -e "open(G,\">f\"); print G <>;close G; unlink \"f\";" seq'