我正在进行一些实验,以查看不同内存和CPU负载下系统行为的变化。我想知道是否有一个持续使用高内存但CPU不足的bash脚本?
答案 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(取决于作者愿意做恶)。