測量Linux程式執行時間和佔用記憶體的方法

season0891發表於2010-05-31
1.執行時間

time ./ns xxx.tcl

下面是在我機器上ls的測量結果:

fang@ns-serv2:~/ns-allinone-2.31$ time ls
bin     include        lib       ns-2.31    README     tclcl       xgraph-12.1
cweb    install        man       otcl       sgb        tclcl-1.19 zlib-1.2.3
gt-itm INSTALL.WIN32 nam-1.13 otcl-1.13 tcl8.4.14 tk8.4.14

real    0m0.003s
user    0m0.002s
sys     0m0.001s

2.佔用記憶體

基本方法是檢查/proc/$PROCESS_PID/status裡的內容,在網上找 了找,修改了別人的程式碼:

#!/bin/sh

USAGE="Usage: $0 processName"

if [ $# -ne 1 ]; then
   echo $USAGE
   exit 1
fi

# In case the monitored process has not yet started
# keep searching until its PID is found
PROCESS_PID=""
while :
do
   PROCESS_PID=`pidof $1`

   if [ "$PROCESS_PID.X" != ".X" ]; then
      break
   fi
done

LOG_FILE="memusage.log"

echo "ElapsedTime,VmSize,VmRSS" > $LOG_FILE

ELAPSED_TIME=`date +%H:%M:%S:%N`
PERIOD=1        # 檢查間隔,單位為秒

while :
do
if [ -d /proc/$PROCESS_PID ] ; then
   VM_SIZE=`awk '/VmSize/ {print $2}' < /proc/$PROCESS_PID/status`
   if [ "$VM_SIZE.X" = ".X" ]; then
      continue
   fi
   VM_RSS=`awk '/VmRSS/ {print $2}' < /proc/$PROCESS_PID/status`
   if [ "$VM_RSS.X" = ".X" ]; then
      continue
   fi

   echo "$ELAPSED_TIME,$VM_SIZE,$VM_RSS" >> $LOG_FILE
   sleep $PERIOD
   VM_SIZE=""
   VM_RSS=""
   ELAPSED_TIME=`date +%H:%M:%S:%N`
else
echo "$1 is no longer a running process"
exit 0
fi
done


儲存為memcheck, 然後chmod 755 memcheck改變其可執行屬性。

首先執行./memcheck ns
接著啟動某個模擬程式 ./ns xxx.tcl
執行完了ns會自動退出,memcheck也會退出,只要檢視memusage.log內容即可。

給出 我執行的例子:



putty視窗1:fang@ns-serv2:~$ ./memcheck ns
等待...


putty 視窗2:fang@ns-serv2:~/ns-allinone-2.31/ns-2.31$ ./ns tcl/ex/simple-wireless.tcl
num_nodes is set 2
warning: Please use -channel as shown in tcl/ex/wireless-mitf.tcl
INITIALIZE THE LIST xListHead
Starting Simulation...
channel.cc:sendUp - Calc highestAntennaZ_ and distCST_
highestAntennaZ_ = 1.5, distCST_ = 550.0
SORTING LISTS ...DONE!
NS EXITING...

putty視窗 1:fang@ns-serv2:~$ ./memcheck ns
ns is no longer a running process


putty 視窗1:fang@ns-serv2:~$ cat memusage.log
ElapsedTime,VmSize,VmRSS
00:25:47:094364000,11468,6232

單 位為kB

按照:

任務虛擬地址空間的大小 VmSize
應用程式正在使用的實體記憶體的大小 VmRSS

come from:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-664120/,如需轉載,請註明出處,否則將追究法律責任。

相關文章