SYM's Tech Knowledge Index & Creation Records

「INPUT:OUTPUT=1:1以上」を掲げ構築する Tech Knowledge Stack and Index. by SYM@設計者足るため孤軍奮闘する IT Engineer.

一定量メモリを消費させるshell

定量メモリを消費させるshell

stress コマンドが使えるならば、お手軽にできるかもしれない。

使えない環境のため、以下で実施した。その記録

  • 理由が分かっていないが、指定したバイトの2倍取られた
  • 一度に大きい量を一気に消費はできないのでループ
  • 消費させるメモリ量が増えれば、その分時間がとてもかかるようになる(1GBで数分レベル)

ご利用は計画的に、もっといい方法がありそう。

#! /bin/bash

INIT_ALLOC_MEM=209715200  # 200MB * 2 消費
LOOP_NUM=2  # INIT_ALLOC_MEM * N
REPEAT_ALLOC_MEM=10485760  # 10MB * 2 消費

echo PID=$$
echo "# start: init memory allocate."
for i in `seq ${LOOP_NUM}`
do
  eval a$i'=$(head --bytes ${INIT_ALLOC_MEM} /dev/zero |cat -v)'
  echo -n " $i"
done
echo
echo "# end."

echo -n "[ Enter : add 20 MB ] , [ Ctrl+d : stop ]"
c=0
while read byte; do
   eval b$c'=$(head --bytes ${REPEAT_ALLOC_MEM} /dev/zero |cat -v)'
   c=$(($c+1))
   echo -n ">"
done
echo

以下、メモリ量確認用shell (freeコマンドの結果から抽出)

mem_free=`free -m | awk '/Mem:/ {print $4}'`
swap_free=`free -m | awk '/Swap:/ {print $4}'`
buff_cache=`free -m | awk '/Mem:/ {print $6}'`
total_virtual_mem=`expr ${mem_free} \+ ${swap_free} \+ ${buff_cache}`

echo "Mem Free:   ${mem_free} MB"
echo "Swap Free:  ${mem_free} MB"
echo "Buff/Cache: ${mem_free} MB"
echo "Total:      ${total_virtual_mem} MB"

ref: Linuxで手軽にCPU/メモリの負荷をかける方法