#!/usr/bin/env bash set -eu -o pipefail PAGE_SIZE=$(getconf PAGE_SIZE) BLOAT_ITERATION_TARGET=$(( 100 << 20 )) # 100 MB BLOAT_HOLDER=() PID="$$" function bloat { local set_size=$(cat "/proc/$PID/statm" | cut -d " " -f2) local mem_usage=$(( "$set_size" * "$PAGE_SIZE" )) local target_mem_size=$(( "$mem_usage" + "$1" )) BLOAT_HOLDER=() while [[ "$mem_usage" -lt "$target_mem_size" ]]; do echo "target $target_mem_size" echo "mem usage $mem_usage" BLOAT_HOLDER+=( $(printf "%0.sg" {1..1000000}) ) set_size=$(cat "/proc/$PID/statm" | cut -d " " -f2) mem_usage=$(( "$set_size" * "$PAGE_SIZE" )) done } function run { local arr=() while [[ true ]]; do bloat "$BLOAT_ITERATION_TARGET" arr+=( "$BLOAT_HOLDER" ) sleep 1 done } run