A-A+

linux内存测试 内存占用脚本 可指定占用内存大小

2021年10月15日 11:14 汪洋大海 暂无评论 共1808字 (阅读2,109 views次)
/*usage: cc mem.c -o mem.out 后 使用./mem.out 100 & 消耗对应数字MB单位的内存,释放时杀掉对应进程即可*/
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
 
#define UNIT (1024*1024)
 
int main(int argc, char *argv[])
{
        long long i = 0;
        int size = 0;
 
        if (argc != 2) {
                printf(" === argc must 2\n");
                return 1;
        }
        size = strtoull(argv[1], NULL, 10);
        if (size == 0) {
                printf(" argv[1]=%s not good\n", argv[1]);
                return 1;
        }
 
        char *buff = (char *) malloc(size * UNIT);
        if (buff)
                printf(" we malloced %d Mb\n", size);
        buff[0] = 1;
 
        for (i = 1; i < (size * UNIT); i++) {
                if (i%1024 == 0)
                        buff[i] = buff[i-1]/8;
                else
                        buff[i] = i/2;
        }
        pause();
}

上面是C写的内存占用测试的脚本, 首先你需要把上面的脚本保存为mem.c文件,然后编译它,linux系统内必须要安装gcc,然后执行cc mem.c -o mem.out编译后生成mem.out文件, 然后执行命令./mem.out 100 &消耗对应数字MB单位的内存,释放时杀掉对应进程即可

示例:首先查看本机内存free -h

images

如上图,总内存7.6G(其实是8G), 已经使用为1.0G ,空闲内存2.8G,可以使用的6.2G

这里我执行了命令是./mem.out 6100 &执行了3次后,然后如下图

images

可用内存仅剩246MB,已经几乎快占满了,如果再运行一次 估计就直接占满了。


---------------------------------------------------------------

下面再来一个sh直接可以再Linux运行的脚本。


#!/bin/bash
################################################################
#       mem used script
#       eg. ./mem.sh 60G & to start testing
#       eg. ./mem.sh stop  to stop testing and clear env
#       update: 2019-1-22  pansaky
################################################################
num=$1
user=`whoami`
 
start()
{
if [ -d /tmp/memory ];then
        echo "the dir "/tmp/memory" is already exist!, use it." >> mem.log
else
        sudo mkdir /tmp/memory
        mount -t tmpfs -o size=$num tmpfs /tmp/memory
fi
dd if=/dev/zero of=/tmp/memory/block >> mem.log 2>&1
}
 
stop()
{
 
rm -rf /tmp/memory/block
umount /tmp/memory
rmdir /tmp/memory
if [ -d /tmp/memory ];then
        echo "Do not remove the dir \"/tmp/memory\", please check "
else
        echo "clear env is done!"
fi
}
main()
{
if [ $num == 'stop' ];then
        stop
elif [ $user != "root" ];then
        echo "please use the \"root\" excute script!"
        exit 1
else
        start
fi
}
 
if [ $# = 2 -o $# = 1 ];then
        main
else
        echo 'Usage: <./mem.sh 60G &> to start  or <./mem.sh stop>  to clear env'
fi

直接把此代码保存为sh文件,赋予运行权限,然后直接看上面运行的命令就可以了。

文章来源:https://blog.csdn.net/pansaky/article/details/86599280

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言