我有一些消耗大量交换内存的脚本。
如何测量脚本执行期间的最大交换负载?
有没有适合我的任务的特定 bash cli 工具?
答案1
#!/bin/bash
trapexit() {
echo -e "\nmax swap usage is $MAXUSAGE kb"
exit 0
}
trap trapexit SIGINT
while true; do
CURUSAGE=`free |awk '/Swap/{print $3}'`;
if [[ $CURUSAGE -gt $MAXUSAGE ]]; then
MAXUSAGE=$CURUSAGE;
fi
done
答案2
那么你可以使用 shell 脚本来查找所使用的内存的最大值swap
。
#! /bin/bash
max=0
echo "$max" > max_value.txt
while true
do
#sleep 1
j=$(free -m | grep Swap| awk -F ' ' '{print $3}');
if [ "$max" -lt "$j" ]; then
max="$j";
echo "$max" > max_value.txt
fi
done
最初我设置max=0
并将输出写入某个文件max_value.txt
。
j=$(free -m | grep Swap| awk -F ' ' '{print $3}');
该行将存储可用内存的值swap
。 if 条件会将此值与max
value 进行比较,如果大于,则更新该值max
并将其写入max_value.txt
文件。
现在,我不断检查可用交换内存,以便它可以消耗更多CPU
来运行此脚本。不过,我已经评论了这一行,sleep 1
您可以使用它来减少 CPU 消耗(我在我的笔记本电脑上检查过,消耗量从 10% 减少CPU
到 1%),但您可能不会得到准确的结果。如果变化used swap memory
不是突然的,那么您可以获得近似结果。