需要不断使用高内存但低CPU的bash脚本?

时间:2015-12-09 00:01:15

标签: bash shell sh

我正在进行一些实验,以查看不同内存和CPU负载下系统行为的变化。我想知道是否有一个持续使用高内存但CPU不足的bash脚本?

2 个答案:

答案 0 :(得分:2)

为了模拟CPU /内存/ IO负载,大多数* NIX系统(包括Linux)提供了一个名为stress的便捷工具。

该工具因操作系统而异。 On Linux,以低CPU负载占用512MB RAM:

stress --vm 1 --vm-bytes 512M --vm-hang 100

(调用意味着:启动一个内存线程(--vm 1),在每个线程中分配/释放512MB内存,在释放内存100秒之前休眠。)

答案 1 :(得分:1)

这很愚蠢,并且不能合理地期望提供在任何实际场景中都有用的数据。但是,要生成至少与给定的两个字节的幂相关的内存消耗量:

build_string() {
  local pow=$1
  local dest=$2
  s=' '
  for (( i=0; i<pow; i++ )); do
    s+="$s"
  done
  printf -v "$dest" %s "$s"
}

build_string 10 kilobyte    # build a string of length 1024
echo "Kilobyte string consumes ${#kilobyte} bytes"

build_string 20 megabyte    # build a string of length 1048576
echo "Megabyte string consumes ${#megabyte} bytes"

请注意,在施工期间,至少需要2倍的所需空间(对于当地);没有这种行为的版本将使用namevars(取决于bash 4.3)或eval(取决于作者愿意做恶)。