मापने डिस्क I / O एक कार्यक्रम का उपयोग


12

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'

जवाबों:


9

आपने निर्दिष्ट नहीं किया कि आप किस ऑपरेटिंग सिस्टम का उपयोग करते हैं।

लिनक्स

उपयोग करने के बजाय time fooजो (आमतौर पर) एक शेल निर्मित है, आप बाहरी कमांड की कोशिश कर सकते हैं /usr/bin/time foo। यह कुछ अतिरिक्त जानकारी देता है जैसे कि फ़ाइल सिस्टम इनपुट और आउटपुट की संख्या (लेकिन कैश हिट या बाइट मात्रा के बारे में कोई जानकारी नहीं)। देखें man timeऔर man getrusageआगे के निर्देश के लिए।

ध्यान दें कि इस सुविधा के लिए लिनक्स कर्नेल संस्करण 2.6.22 या नए की आवश्यकता है।

FreeBSD

का उपयोग करें /usr/bin/time -l foo। यह इनपुट और आउटपुट की संख्या देता है। देखें man timeऔर man getrusageआगे के निर्देश के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.