记忆压力测试不起作用

时间:2017-03-28 02:38:38

标签: linux bash shell

我想做内存压力测试。但它不能正常工作。它已经返回结果但是它有一些关于其他东西的信息。当我使用bash shell来监视我测试的内存使用情况时,内存使用情况信息没有快速上升,它几乎没有变化。即使在ubuntu中使用top命令。我在运行名为mallocBomb01.sh的压力测试bash shell时使用监视bash shell或top命令.bash shell脚本在这里。

#!/bin/bash 
i=1;
while [ $i -le 200 ]
do
    ./mallocBomb -i
done

bash shell脚本的结果就在这里。

...

./ malloc01.sh:line 7:105832分段错误(核心转储)./ mallocBomb -i

...

mallocBomb的c代码在这里。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <limits.h>
int main(int argc,char **argv[])
{
        int count = 0;
        if(argc == 1)
                printf("Usage : ./mallocBomb <[infinite] -i>  or ./mallocBomb <itterations>");
        else
        {
                int i=0,k=0;
                if(strcmp((const char *)argv[1],"-i") == 0)
                {
                        while(1)
                        {
                            if(strcmp((const char *)argv[2],"-v") == 0)
                            {
                                    printf("Itteration count : %d\n",count++);
                            }
                            if(calloc(1,1024) != NULL)
                            {
                                    if(errno == EAGAIN)
                                    {
                                            printf("WARNING EAGAIN: Limit on the total number of processes has been reached\n");
                                    }
                                    else if(errno == ENOMEM)
                                    {
                                            printf("WARNING ENOMEM: There is not enough swamp space\n");
                                    }
                            }
                        }
                }
                else
                {
                        k =atoi((const char *)argv[1]);
                        for(i=0; i < k; i++)
                        {
                            if(strcmp((const char *)argv[2],"-v") == 0)
                            {
                                    printf("Itteration count : %d\n",i+1);
                            }
                            if(calloc(1,1024) != NULL)
                            {
                                    if(errno == EAGAIN)
                                    {
                                            printf("WARNING EAGAIN: Limit on the total number of processes has been reached\n");
                                    }
                                    else if(errno == ENOMEM)
                                    {

                                              printf("WARNING ENOMEM: There is not enough swamp space\n");
                                    }
                            }
                        }
                }
        }
        return 0;
}

结果显示它有一个分段错误(核心转储)。这是一个错误吗?如果没有,为什么内存使用不会上升?

0 个答案:

没有答案