क्या `टाइम` जैसा कुछ है जो I / O और CPU भी रिकॉर्ड करता है?


18

मैं बहुत जल्दी से एक प्रक्रिया के चलने के समय की निगरानी कर सकता हूं time:

x@y ~ $ time foo

real        0m14.299s
user        0m4.770s
sys         0m0.440s

क्या कोई तरीका है जिससे मैं तर्क के लिए रिकॉर्ड किए गए I / O और CPU उपयोग के लिए समान डेटा प्राप्त कर सकता हूं? एक साधारण कमांड या उपयोगिता timeआदर्श होगी, जहां मैं सिर्फ उस चीज के तर्क को पास करता हूं जिसे मैं चलाना चाहता हूं:

x@y ~ $ stats foo

wallclock runtime     0m14.299s
I/O reads             290,420 KB
I/O writes            239,429 KB
peak CPU usage        18.62%
mean CPU usage        1.44%
# etc.

जवाबों:


25

अपने सिस्टम पर टाइम मैन पेज देखें, कुछ कार्यान्वयन में I / O, CPU और मेमोरी आँकड़े (-f) शामिल करने के लिए प्रारूप विकल्प हैं।

उदाहरण के लिए, GNU time, -vसभी उपलब्ध जानकारी दिखाएगा (यहां लिनक्स पर):

/usr/bin/time -v ls

Command being timed: "ls"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 3664
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 273
Voluntary context switches: 2
Involuntary context switches: 2
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0

पर BSDs, -lइसके बजाय का उपयोग करें ।

ध्यान दें कि यह वास्तविक /usr/bin/timeप्रोग्राम है, न कि कीवर्ड जो कुछ शेल bashप्रदान करता है जो आप के साथ इनवॉइस करते हैं time pipeline


4
zshके timeकीवर्ड भी (के साथ विन्यस्त किया जा सकता $TIMEFMT) है कि जानकारी के साथ उपलब्ध कराने के लिए।
स्टीफन चेजलस

1
जैसा मुझे चाहिए था यह बिल्कुल वैसा ही है। उत्तम! इसके अलावा, इस पोस्ट के संपादकों को धन्यवाद जिन्होंने स्पष्ट किया कि आपको अपहरण के command time -v ...बाद से इसे चलाने की आवश्यकता होगी । bashtime
जॉन फेमिनाला

4

कमांड straceउपयोगी हो सकती है, आप ट्रेस को केवल गिनती -cया सिस्टम कॉल के सबसेट तक सीमित कर सकते हैं,

-e trace=set
      Trace  only  the  specified set of system calls.  The -c option is
      useful for determining which  system  calls  might  be  useful  to
      trace.   For  example,  trace=open,close,read,write  means to only
      trace those four system calls.  Be careful when making  inferences
      about  the  user/kernel  boundary if only a subset of system calls
      are being monitored.  The default is trace=all.

इस जवाब में , मैं इसका उपयोग सिस्टम कॉल की संख्या की गणना करने के लिए करता हूं। मुझे नहीं पता कि कुछ भी आपको थ्रूपुट का संक्षिप्त रूप देगा, हालांकि स्ट्रेस awkसंक्षेप में प्रस्तुत करने जैसी किसी चीज़ के लिए आंकड़े तैयार कर सकता है ।


straceचीजों को काफी धीमा कर सकता है, इसलिए यह अलग-अलग syscalls के सापेक्ष समय को मापने के लिए उपयोगी है, लेकिन मैं इसे सामान्य उद्देश्य टाइमर के रूप में उपयोग नहीं करूंगा। perfयदि आप सैंपल फ्रीक्वेंसी विकल्पों के साथ खेलते हैं, तो यह कहीं अधिक तेज़ / कम घुसपैठ है।
मार्सिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.