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

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

时间:2014-09-27 23:11:00      阅读:205      评论:0      收藏:0      [点我收藏+]

标签: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

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