測量Linux程式執行時間和佔用記憶體的方法
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:
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式執行時間的測量
- 程式執行時的記憶體空間分佈記憶體
- PHP 獲取程式碼執行時間和消耗的記憶體PHP記憶體
- Java如何測量方法執行時間Java
- 獲取 Laravel 執行時間和記憶體消耗Laravel記憶體
- PHP獲取程式碼段執行的毫秒時間和消耗記憶體PHP記憶體
- linux下查詢程式佔用的記憶體方法總結Linux記憶體
- 解決Apache長時間佔用記憶體大的問題,Apache 記憶體優化方法Apache記憶體優化
- Linux程式記憶體佔用數的計算Linux記憶體
- 監控 Python 記憶體使用情況和程式碼執行時間!Python記憶體
- sqlserver執行時記憶體設定方法SQLServer記憶體
- Linux上執行記憶體中的指令碼和程式Linux記憶體指令碼
- Linux檢視佔用記憶體的程式指令碼Linux記憶體指令碼
- 檢測Python程式執行效率及記憶體和CPU使用的7種方法Python記憶體
- win10開機記憶體佔用60%怎麼辦 解決開機執行記憶體佔用率過高的方法Win10記憶體
- filebeat實踐-記憶體佔用-最大記憶體佔用記憶體
- C程式執行時記憶體結構分析C程式記憶體
- win10記憶體佔用過高程式沒多少怎麼辦 win10記憶體佔用過高的方法Win10記憶體
- 測量程式的執行時間(二)
- 測量程式的執行時間(一)
- Java 執行時的記憶體劃分Java記憶體
- Win10記憶體佔用過多怎麼辦 win10清理記憶體佔用的方法Win10記憶體
- Java 執行時資料區和記憶體模型Java記憶體模型
- mysql執行緒獨佔記憶體引數MySql執行緒記憶體
- AIX程式記憶體佔用數的計算AI記憶體
- linux下獲取佔用CPU和記憶體資源最多的10個程式Linux記憶體
- 如何釋放linux cache佔用的記憶體Linux記憶體
- Linux命令執行時間測試Linux
- Java記憶體區域(執行時資料區域)和記憶體模型(JMM)Java記憶體模型
- TimesTen臨時(記憶體)空間使用和調整臨時(記憶體)空間記憶體
- LINUX 佔用較多記憶體 解釋Linux記憶體
- PHP陣列到底佔用多少記憶體空間PHP陣列記憶體
- 檢視程式cpu和記憶體佔用率記憶體
- Fedora 上的桌面環境記憶體佔用測試記憶體
- 檢視LINUX程式記憶體佔用情況Linux記憶體
- 深入理解Java的堆記憶體和執行緒記憶體Java記憶體執行緒
- 電腦記憶體佔用過高怎麼辦 電腦記憶體佔用過高解決方法記憶體
- mysql佔用記憶體高的一種解決方法MySql記憶體