码迷,mamicode.com
首页 > 其他好文 > 详细

自己编写高负荷测试的工具

时间:2014-06-16 22:52:02      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:class   blog   code   2014   set   linux   

       最近一个项目,客户要求进行高负荷测试;所谓高负荷测试时看系统在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;
}


 

 

   

自己编写高负荷测试的工具,布布扣,bubuko.com

自己编写高负荷测试的工具

标签:class   blog   code   2014   set   linux   

原文地址:http://blog.csdn.net/lzyzuixin/article/details/31349285

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!