time
एक शानदार कमांड है यदि आप यह जानना चाहते हैं कि किसी दिए गए कमांड में कितना सीपीयू समय लगता है।
मैं ऐसी ही किसी चीज़ की तलाश कर रहा हूँ जो प्रोग्राम और किसी भी बच्चे की डिस्क I / O को माप सके। अधिमानतः इसे I / O के बीच अंतर करना चाहिए जो कैश किया गया था (और इस तरह डिस्क को स्पिन करने का कारण नहीं था) और I / O जो कैश नहीं किया गया था।
इसलिए मैं करना चाहूंगा:
iomeassure my_program my_args
और इसके समान आउटपुट प्राप्त करें:
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
मैं पर ध्यान दिया है vmstat
, iostat
और sar
है, लेकिन इनमें से कोई भी एक भी प्रक्रिया को देख रहे हैं। इसके बजाय वे पूरे सिस्टम को देखते हैं।
मैंने गौर किया है iotop
, लेकिन यह केवल मुझे इस बात का संकेत देता है।
--- संपादित करें ---
स्नैप का जवाब करीब लगता है।
'फाइल सिस्टम इनपुट:' 512-बाइट ब्लॉक में नॉन-कैशेड रीड है।
'फाइल सिस्टम आउटपुट:' कैश्ड 512-बाइट ब्लॉक में लिखता है।
आप कैशे को खाली कर सकते हैं:
sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
मैंने इसके साथ परीक्षण किया:
seq 10000000 > seq
/usr/bin/time -v bash -c 'perl -e "open(G,\">f\"); print G <>;close G; unlink \"f\";" seq'