Package: bench
Monitor Process Resources UsageBench aims to be a handy tool with these functions:- Monitor CPU time (user time, system time, real time)- Monitor memory usage (virtual memory usage, resident memory usage)- Output to TSV(tab-delimited files)- Output benchmark metrics- Visualize performance metrics (memory consumptions) over timeExamplesWe showed several examples below.Please note that all output are
tabularized for demonstration purpose.Example 1: simple command.This will start the processsleepfor 2 seconds. The tabular output
below was from the actual command:monitor.py sleep 22>&1|column-t-s$'\t'.If you simply runmonitor.py sleep 2, you will get tab-deliminated
outputs in standard error (stderr).$> monitor.py sleep 2
pid     ppid    utime  stime  rtime         rss     vms      maxRss  maxVms   avgRss    avgVms     cwd                                cmd
133692  133675  0.0    0.0    1.9368159771  774144  6066176  774144  6066176  774144.0  6066176.0  /home/zhanxw/mycode/bench/scripts  sleep 2Example 2: complex shell commands with sampling interval equaling to
0.1 secondThis example will use shell to start 3 processes:sleep 2,sleep 4andseq 1000000. You can see bench can monitor all 4
processes all together.$> monitor.py sh -c 'sleep 2 & sleep 4 & seq 1000000 >/dev/null & wait'
pid     ppid    utime  stime  rtime            rss     vms      maxRss  maxVms   avgRss    avgVms     cwd                                cmd
135004  134985  0.0    0.0    3.9532430172     798720  4558848  798720  4558848  798720.0  4558848.0  /home/zhanxw/mycode/bench/scripts  sh -c sleep 2 & sleep 4 & seq 10000000 >/dev/null & wait
135006  135004  0.0    0.0    3.95348381996    655360  6066176  655360  6066176  655360.0  6066176.0  /home/zhanxw/mycode/bench/scripts  sleep 4
135005  135004  0.0    0.0    1.83160495758    774144  6066176  774144  6066176  774144.0  6066176.0  /home/zhanxw/mycode/bench/scripts  sleep 2
135007  135004  0.05   0.0    0.0599648952484  720896  6090752  720896  6090752  720896.0  6090752.0  /home/zhanxw/mycode/bench/scripts  seq 10000000Example 3: generate performance metrics to external fileHere we used a small program, burnCpu. It will keep CPU running for
several seconds. Its source code is under src/.The option-twill enable outputting traces. That means at several
time stops, performance metrics of each processes will be outputted to
the standard error as well as a separate comma-separated file,$prefix.trace.csv.The option-gwill generate a graph which contains several
sub-figures, including timings for each processes, memory consumption
for each processes, and memory consumption over the processing running
time.The option-owill specify the output prefix. The default value will
bebench, meaning, you will getbench.csv. You can overwrite
this value by using-ooption.$> monitor.py -t -g -o burnCpu ./burnCpu
pid     ppid    utime  stime  rtime            rss      vms       cwd                                cmd
135471  135454  0.04   0.0    0.0441780090332  1449984  12984320  /home/zhanxw/mycode/bench/scripts  ../src/burnCpu
135471  135454  0.2    0.0    0.205282926559   1449984  12984320  /home/zhanxw/mycode/bench/scripts  ../src/burnCpu
135471  135454  0.38   0.0    0.381079912186   1449984  12984320  /home/zhanxw/mycode/bench/scripts  ../src/burnCpu
...Additional result are stored inburnCpu.csv,burnCpu.trace.csvin
the Comma-separated format (CSV).burnCpu.csvfile contentpid,ppid,utime,stime,rtime,rss,vms,maxRss,maxVms,avgRss,avgVms,cwd,cmd
144433,144416,5.4,0.0,5.40555810928,1404928,12984320,1404928,12984320,1404928.0,12984320.0,/home/zhanxw/mycode/bench/scripts,../src/burnCpuburnCpu.trace.csvfile contentpid,ppid,utime,stime,rtime,rss,vms,cwd,cmd
144433,144416,0.03,0.0,0.0423669815063,1404928,12984320,/home/zhanxw/mycode/bench/scripts,../src/burnCpu
144433,144416,0.19,0.0,0.20046210289,1404928,12984320,/home/zhanxw/mycode/bench/scripts,../src/burnCpu
144433,144416,0.36,0.0,0.373480081558,1404928,12984320,/home/zhanxw/mycode/bench/scripts,../src/burnCpu
...When-goptioned is specified, bench will generate several
performance metrics in the fileburnCpu.trace.csv:NotesTo benchmark a complex command or combinations of commands, you can
use shell (sh or bash) . For example, you can use “sh -c ‘command arg1
arg2 … ‘” (see Example 2).Bench requirespsutilto
collect basic performance metrics, andrequiresnumpyandpandasfor statistical calculations.In this release, we used psutil 3.1.1, numpy 1.8.2, pandas 0.16.2 and
matplotlib 1.4.3.ContactFor questions or commend, please visit bench github repo:repoor email to:Xiaowei Zhan