最近一个项目,客户要求进行高负荷测试;所谓高负荷测试时看系统在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; }
原文:http://blog.csdn.net/lzyzuixin/article/details/31349285