标签:blog io ar sp div 2014 art 问题 on
近期一个项目,客户要求进行高负荷測试;所谓高负荷測试时看系统在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;
}
标签:blog io ar sp div 2014 art 问题 on
原文地址:http://www.cnblogs.com/gcczhongduan/p/3997172.html