1. 程式人生 > >memtester記憶體壓力測試

memtester記憶體壓力測試

#!/bin/sh
# Memory Tester Scripts

# by Baif
# version = date
VERSION="Fri Oct 19 11:56:57 CST 2007"

# trap for irruptions
MEMTESTER=${PWD}/memtester
PPIDKILL=$$
SIDKILL=$$
trap "pkill -9 -P ${PPIDKILL};kill -9 $$" INT
trap "pkill -9 -P ${PPIDKILL};kill -9 $$" KILL


cat <<-EOF_vpps >&2

Version: ${VERSION}
PID: $$
PPIDKILL: ${PPIDKILL}
SIDKILL: ${PPIDKILL}

EOF_vpps

CORE_NUM=$(grep -i ^processor /proc/cpuinfo|wc -l)
MEMTESTERCOPY=${CORE_NUM}
MEM_TOTAL_K=$(awk '/^MemTotal/{print $2}' /proc/meminfo)
MEM_RESERVE_PERCENTAGE=$((1000*50/1024)) # 95%

MEM_RESERVED=$((MEM_TOTAL_K/1024*MEM_RESERVE_PERCENTAGE/1000))
MEM_TOTAL_TOBETESTED=$((MEM_TOTAL_K/1024-MEM_RESERVED))
MEM_PER_COPY=$((MEM_TOTAL_TOBETESTED/MEMTESTERCOPY))

RUN_DURATION_TIME=0
RUN_LOOPS=-1
RUN_DURATION_TIME_FLAG=0
RUN_LOOPS_FLAG=0
DDPERCOPY_TIME=6s

LOGDIR=/tmp/memtester-log-${$}
mkdir -p ${LOGDIR}

show_help ()
{
cat <<-EOFshow_HELP >&2

Version: ${VERSION}

Usage: $(basename ${0})
-r Directory: the root location of memtester binary file
-c NUMBER: the copies of memtester should be run
-m NUMBER: how many memory should be tested totally (in MB)
-t TIME: duration mode, how long will the tests go
-l NUMBER: loops mode,how many loops will each memtester should go

The option -t and -l are exclusive, which means tests could work 
only with 1. duration mode or 2. loops mode

RUN 4 copies memtester with in 24 hours, to test total 4000 MB memory:

$(basename ${0}) -t 24h -c 4 -m 4000

RUN 2 copies memtester with in 1 hours, to test total 4000 MB memory:

$(basename ${0}) -t 1h -c 4 -m 4000

RUN 4 copies memtester with in 2 loops, to test total 3600 MB memory:

$(basename ${0}) -l 2 -c 4 -m 3600

-V/-h/-H: show this info.

EOFshow_HELP

exit 0
}

while getopts :c:m:t:l:r:p:hHVvx OPTION
do
case ${OPTION} in
c)
#echo "-c ${OPTARG}"
MEMTESTERCOPY=${OPTARG}
;;
m)
#echo "-m ${OPTARG} MB"
MEM_TOTAL_TOBETESTED=${OPTARG}
MEM_RESERVED=$((MEM_TOTAL_K/1024-MEM_TOTAL_TOBETESTED))
;;
t)
#echo "-t ${OPTARG}"
[ 0 -ne ${RUN_LOOPS_FLAG} ] && echo "-t and -l are exclusive." && exit 222
RUN_DURATION_TIME=${OPTARG}
RUN_DURATION_TIME_FLAG=1
;;
l)
#echo "-l ${OPTARG}"
[ 0 -ne ${RUN_DURATION_TIME_FLAG} ] && echo && echo "-t and -l are exclusive." && show_help && echo && exit 223
RUN_LOOPS=${OPTARG};
RUN_LOOPS_FLAG=1
;;
d)
#echo "-r ${OPTARG}"
MEMTESTER=${OPTARG}/memtester
;;
p)
#echo "-p ${OPTARG}"
MEMTESTER=${OPTARG}
;;
V|h|H)
show_help
;;
v)
set -v
;;
x)
set -x
;;
?) echo "Error...";
echo "?Unknown args..."
exit 224
;;
*) #echo "*Unknown args..."
esac
done
#exit
[ 0 -eq ${RUN_DURATION_TIME_FLAG} ] && [ 0 -eq ${RUN_LOOPS_FLAG} ] && echo && echo "Please specified which mode should we run... -t or -l" && show_help && echo && exit 225

MEM_PER_COPY=$((MEM_TOTAL_TOBETESTED/MEMTESTERCOPY))

echo "Mem total: " $((MEM_TOTAL_K/1024)) MB
echo "Core total: "${CORE_NUM}
echo "Memtester copys: " ${MEMTESTERCOPY}
echo "Mem per copy: "${MEM_PER_COPY}
echo "Mem total to used: "${MEM_TOTAL_TOBETESTED} MB
if [ ${MEM_RESERVED} -lt 1 ];
then
echo "Mem reserved: -- No more memory reserved..."
else
echo "Mem reserved: "${MEM_RESERVED} MB
fi
#exit


# GOGOGO
if [ 0 -ne ${RUN_DURATION_TIME_FLAG} ]; then
echo "Run within a duration: ${RUN_DURATION_TIME}"
elif [ 0 -ne ${RUN_LOOPS_FLAG} ];
then
echo "Run within a loop: ${RUN_LOOPS}"
fi
echo "Working directory: " $PWD
echo "Memtester: " ${MEMTESTER}
echo "LOGs directory: " $LOGDIR
echo
echo -n "Jobs started at date: "
date #+%Y/%m/%d\ %H:%M
echo
#exit

########################
# Run testing within a duration time.
if [ 0 -ne ${RUN_DURATION_TIME_FLAG} ]
then
# prepareing the sleeping killers
sleep ${RUN_DURATION_TIME} 
echo -n "End of testing(TIMEOUT)... "
echo "KILL CHILD" && kill -9 $(pgrep -P ${PPIDKILL} memtester) && echo "Childen processes - KILLED."
# attention to how the memtesters are forked...
echo "KILL PARENT" && kill $$ && echo "KILLED." &
echo "Finished the memtester"
echo -n "Jobs finished at date: " 
date #+%Y/%m/%d\ %H:%M 

fi &

echo -n "Waiting (PID: $$) for ${MEMTESTERCOPY} memtesters(${MEM_PER_COPY}MB for each). "
if [ 0 -ne ${RUN_DURATION_TIME_FLAG} ];
then
echo -n "For time: ${RUN_DURATION_TIME} "
fi
if [ 0 -ne ${RUN_LOOPS_FLAG} ];
then
echo -n "For loops: ${RUN_LOOPS} " 
fi
echo "..."


while true
do
MEMTESTER_NUM=0

echo -n "{"
while [ ${MEMTESTER_NUM} -lt ${MEMTESTERCOPY} ]
do
echo -n " ${MEMTESTER_NUM} "

if [ 0 -ne ${RUN_DURATION_TIME_FLAG} ]
then
RUN_LOOPS=0
fi

${MEMTESTER} ${MEM_PER_COPY} ${RUN_LOOPS} 2>&1 >> ${LOGDIR}/${MEMTESTER_NUM}.log &
# set loops = 0 to make memtester run loop infinitely...
# .pogo version will run only one loop by default

sleep ${DDPERCOPY_TIME}
MEMTESTER_NUM=$(expr $MEMTESTER_NUM + 1)
done
echo -n "}"
wait

[ 0 -ne ${RUN_LOOPS_FLAG} ] && break
# memtesters' loops...
done

########################

echo
echo -n "End of testing(Excution ended)... "
pkill -9 -P ${PPIDKILL}
kill $$
echo "Finished the memtester"
echo -n "Jobs finished at date: " 
date #+%Y/%m/%d\ %H:%M

相關推薦

memtester記憶體壓力測試

#!/bin/sh # Memory Tester Scripts # by Baif # version = date VERSION="Fri Oct 19 11:56:57 CST 2007" # trap for irruptions MEMTESTER=${PWD}/memtester PPIDK

android用memtester記憶體壓力測試

硬體搭建起來能進入系統,首要就是測試記憶體的穩定性,需要一款記憶體測試工具。 一般都是選擇memtester這款Linux軟體,下載地址如下:http://pyropus.ca/software/memtester/ 把memtester解壓到Android/external/下(此文預設讀者已有Andro

Linux記憶體壓力測試-memtester工具

最近要測試一臺機器的整體效能情況,就在google搜尋一番,發現這個一個小工具,說是可以進行記憶體的壓力測試,Memtester主要是捕獲記憶體錯誤和一直處於很高或者很低的壞位, 其測試的主要專案有隨機值,異或比較,減法,乘法,除法,與或運算等等. 通過給定測試記憶體的大小

Linux記憶體壓力測試-memtester工具簡析

進行記憶體的壓力測試,Memtester主要是捕獲記憶體錯誤和一直處於很高或者很低的壞位, 其測試的主要專案有隨機值,異或比較,減法,乘法,除法,與或運算等等. 通過給定測試記憶體的大小和次數, 可以對系統現有的記憶體進行上面專案的測試。      1  下載 1

簡述效能優化tomcat配置(從記憶體、併發、快取方面)優化及壓力測試

Tomcat有很多方面,我綜合網上文章和自己的優化過程簡單概括。 一.Tomcat記憶體優化   Tomcat記憶體優化主要是對 tomcat 啟動引數優化,我們可以在 tomcat 的啟動指令碼 catalina.sh 中設定 java_OPTS 引數。   JAVA_OPTS引

java程序在經過壓力測試後,系統記憶體佔用比居高不下

JVM記憶體診斷問題:後臺omc系統,經過壓力測試之後,程序佔用的作業系統記憶體比例一直居高不下。懷疑係統可能存在記憶體洩漏。排查思路:確定問題範圍收集問題相關情報根據具體情況,猜測原因猜測原因,並驗證得出結論 問題解決步驟:使用top命令檢視問題程序top - 17

壓力測試時CPU、記憶體—初步理解

主要涉及資料庫、應用伺服器的效能分析 一、 測試資料 1、併發請求50個,兩個Url,相當100併發數 應用伺服器一直保持CPU佔用率為20%-40% 資料庫程序連線數提升20個,增加20左右會話數 2、併發請求10個,兩個Url,相當200

Android 測試資料監控程式-壓力測試-檢視CPU和記憶體等指標使用情況

Android 測試資料監控程式 功能說明 Android 下 top 資料監控 Android 下 memin

使用 JMeter 完成常用的壓力測試 [轉]

結構 三種 發生 測試結果 send 配置步驟 負責 說明 最簡   講到測試,人們腦海中首先浮現的就是針對軟件正確性的測試,即常說的功能測試。但是軟件僅僅只是功能正確是不夠的。在實際開發中,還有其它的非功能因素也起著決定性的因素,例如軟件的響應速度。影響軟件響應速度的因素

學習總結——JMeter做http接口壓力測試

方便 請求 jmeter 場景 學習總結 結果 log 添加 如果 JMeter做http接口壓力測試 測前準備 用JMeter做接口的壓測非常方便,在壓測之前我們需要考慮這幾個方面: 場景設定 場景分單場景和混合場景。針對一個接口做壓力測試就是單場景,針對一個流程做壓

ubuntu 14.04 LTS 安裝webbentch壓力測試工具

計算 gin 步驟 webbench tar.gz ntc cells 有效 simple 近期在做 壓力測試工具,除了apache的ab測試工具外,發現webbentch工具也不錯,這裏簡介下這兩個工具。 一、webbentch安裝: wget ht

網站壓力測試工具 Webbench簡單介紹

cgi 靜態頁面 服務 動態頁面 不同 傳輸數據 一個 php bench Webbech能測試處在相同硬件上,不同服務的性能以及不同硬件上同一個服務的運行狀況。Webbench的標準測試可以向我們展示服務器的兩項內容:每秒鐘相應請求數和每秒鐘傳輸數據量。Web

轉:Android命令Monkey壓力測試,詳解

語句 shel gre href 輸入 white option blacklist 文件 停止Monkey命令: 1. ps命令 查找uiautomator的進程 打開cmd命令行窗口 輸入: adb shell ps | grep monkey 返回來的第一個數字,即

壓力測試

ron 狀態 負載 spa span test line target 模擬 按照Ron Patton在其《Software Testing》一書中的定義,壓力測試是一種破壞性測試, 它故意讓軟件在比較少的資源環境下運行,如低內存、小硬盤、慢CPU上運行,考驗程序直至程序無

MQTT壓力測試工具之JMeter插件教程

all 多個 通訊協議 第三方 壓力 聯網 根據 降低成本 money 摘要: MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)主要用於移動Push,移動IM,物聯網M2M,物聯網采集等,這些應用場景的特點是客戶端的連接設

mysql之 mysql數據庫壓力測試工具(mysqlslap)

root .cn this 用戶 cas bench 測試 逗號 complete mysqlslap是從MySQL的5.1.4版開始就開始官方提供的壓力測試工具。通過模擬多個並發客戶端並發訪問MySQL來執行壓力測試,同時提供了較詳細的SQL執行數據性能報告,並且能很好的

LoadRunner壓力測試之Unique Number參數類型、Random Number參數類型淺析

tin borde cin iter dom 固定 date runner 模式 前幾天工作需要用LoadRunner進行壓力測試,期間對手機號進行參數化設置。 當時選用了<Value>137{Random_quhao}{Unique_weiyi}</

網站性能ab命令壓力測試

ab apache 壓力測試 計算機 網站 PS:網站性能壓力測試是性能調優過程中必不可少的一環。只有讓服務器處在高壓情況下才能真正體現出各種設置所暴露的問題。Apache中有個自帶的,名為ab的程序,可以對Apache或其它類型的服務器進行網站訪問壓力測試。ApacheBench命令原理

webbench 壓力測試

壓力測試 測試結果 1.簡介 webbench最多可以模擬3萬個並發連接2.安裝webbenchwget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gztar zxvf webbench-1.5.tar.gzcd webben

模擬ab壓力測試

login lose exceptio 模擬 響應時間 min sta run pytho #!/usr/bin/env python# -*- coding:utf-8 -*-# 說明:"""api接口壓力測試url = "http://gd.wangfanwifi.co