最近一个项目,客户要求进行高负荷测试;所谓高负荷测试时看系统在CPU占用或MEM占用率极高情况下的表现。
在第一轮测试时,我们通过在LINUX操作系统上,用压缩和解压缩的方法去占用CPU,这样的方法有个弊端,就是比较耗时而且不可控。
在这样的测试情况下,客户非常不满意。提出了很多的问题。
还要客户给了第二轮测试的机会,然后我就通过百度或谷歌,寻找高负荷测试的工具。结果一无所获。我后来想做为一个程序员,是否可以自己动手写一个这样的程序呢?
通过分析原理,占用CPU,就是让CPU可劲的进行运算;占用MEM,就是申请内存BUFFER。 分析出这个原理后,接下来的事情,就简单了。
我设计的占用CPU的程序具体如下:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc,char ** argv)
{
int looptimes;
float a,b,c;
int i;
a = 1000000.0;
b = 8765.0;
i = 1;
looptimes = atoi(argv[1]);
while(1)
{
c = a / b;
i ++;
if((i % looptimes) == 0)
{
usleep(100);
}
}
//printf("argc=%d\n",argc);
//printf("argv=%s\n",*argv++);
//printf("argv=%s\n",*argv);
//argc=2
//argv=./occu
//argv=100
return 0;
}
我设计的占用MEM的代码具体如下:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc,char ** argv)
{
unsigned int initbytenum;
void * buf;
initbytenum = atoi(argv[1]);
initbytenum = 1024 * 1024 * initbytenum;
printf("initbytenum=%ld\n",initbytenum);
buf = malloc(initbytenum);
memset(buf,0, initbytenum);
int a;
a=0;
int t;
t =1;
while(a!=9)
{
if(t % 100 == 0)
{
scanf("%d",&a);
t =1;
}
t++;
buf = malloc(initbytenum);
memset(buf,0, initbytenum);
}
//printf("argc=%d\n",argc);
//printf("argv=%s\n",*argv++);
//printf("argv=%s\n",*argv);
//argc=2
//argv=./occu
//argv=100
return 0;
}
标签:include,int,argv,高负荷,initbytenum,测试,printf,编写,argc From: https://blog.51cto.com/u_15942605/6019945