G / Ç ve CPU'yu da kaydeden `` zaman '' gibi bir şey var mı?


18

Bir işlemin çalışma süresini oldukça hızlı bir şekilde izleyebilirim time:

x@y ~ $ time foo

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

STDOUT'a kaydedilen bir argümanın G / Ç ve CPU kullanımı için aynı verileri elde etmenin bir yolu var mı? timeÇalıştırmak istediğim şeyin argümanını ilettiğim gibi basit bir komut veya yardımcı program ideal olurdu:

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.

Yanıtlar:


25

sisteminizdeki zaman çizelgesi sayfasına bakın, bazı uygulamaların G / Ç, CPU ve Bellek istatistiklerini (-f) içerecek şekilde biçimlendirme seçenekleri vardır.

Örneğin, GNU time, -vmevcut tüm bilgileri gösterecektir (burada Linux'ta):

/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

Açık BSDs, -lbunun yerine kullanın.

Bunun gerçek /usr/bin/timeprogram olduğunu unutmayın, bazı kabukların bashçağırdığınız anahtar kelimeyi değil time pipeline.


4
zsh'ın timeanahtar kelime de (yapılandırılabilir $TIMEFMTbu bilgileri temin etmek).
Stéphane Chazelas

1
Bu tam olarak istediğim şeydi. Mükemmel! Ayrıca, birlikte çalıştırmak gerekeceğini açıkladı bu yazının editörlerine teşekkür ederim command time -v ...beri bashkaçırma edilir time.
John Feminella

4

Komut stracesadece saymak iz sınırlayabilir, yararlı olabilir -cveya sistem çağrıları bir alt kümesini

-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.

Bu cevapta , sistem çağrılarının sayısını saymak için kullanıyorum. Bir şeyin size iş hacminin özet bir dökümünü verip vermeyeceğini bilmiyorum, ancak strace awközetlemek istediği bir şey için rakamlar üretebilir .


straceişleri önemli ölçüde yavaşlatabilir, bu nedenle farklı sistem çağrılarının göreceli zamanlarını ölçmek yararlıdır, ancak genel amaçlı bir zamanlayıcı olarak kullanmam. perförnekleme frekansı seçenekleriyle oynarsanız çok daha hızlı / daha az müdahaleci olur.
Marcin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.