计算机具有多少处理能力

时间:2015-03-10 23:14:11

标签: c linux process terminal cpu-usage

我有以下代码,我在终端中运行。 在另一个终端我有顶级'打开,我可以看到我创建的新进程的%CPU。我运行这个过程的数量(N); 2,4,8,16。 每个i报告的平均%CPU是.. 2 - 100% 4 - 97% 8 - 50% 16 - 25%

如何通过这些结果确定计算机的处理能力?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define N 2 /* define the total number of processes we want */

/* Set global variable */
float total=0;

/* compute function just does something. */
int compute()
{
    int i;
    float oldtotal=0, result=0;

 /* for a large number of times just square root and square
 the arbitrary number 1000 */
    for(i=0;i<2000000000;i++)
    {
        result=sqrt(1000.0)*sqrt(1000.0);
    }
 /* Print the result – should be no surprise */
printf("Result is %f\n",result);

 /* We want to keep a running total in the global variable total */
    oldtotal = total;
    total = oldtotal + result;

 /* Print running total so far. */
    printf("Total is %f\n",total);
 return(0);
}

int main()
{
    int pid[N], i, j;
    float result=0;
    printf("\n"); /* bit of whitespace */

 /* We want to loop to create the required number of processes
 Note carefully how only the child process is left to run */
    for(i=0;i<N;i++)
    {
 /* Do the fork and catch it if it/one fails */
        if((pid[i]=fork())==-1)
    {
        exit(1);
    }

 /* now with child we want to do our computation */
    else if(pid[i] > 0)
    {
 /* give a message about the proc ID */
        printf("Process Id for process %d is %d\n",i,getpid());
 /* call the function to do some computation. If we used sleep
 The process would simply sleep. We do not want that */
            compute();
 /* After we have done our computation we must quit the for
 loop otherwise we get a fork bomb! */
            break;
        }
    }
  /* nothing else to do so end main function (and program) */
 return 0;
}

3 个答案:

答案 0 :(得分:1)

这取决于您对处理能力的定义。经典方法是每秒指令数(MIPS)或每秒浮点运算数(FLOP)。

查找MIPS非常繁琐,因为在C代码中,您不知道每行代码表示的指令数。

你可以做一个大翻牌计算。在C中循环执行随机数的float * float运算。看看进行大量计算需要多长时间(例如10 9 )然后计算你在一秒钟内做了多少计算。

然后乘以你拥有的处理器数量。

答案 1 :(得分:0)

您的结果显示,2个进程和4个进程的CPU使用率差异非常小,因此几乎可以肯定是四核处理器。除此之外,关于处理器的速度只有百分比的说法并不多。您还使用了printf语句,这使得计算处理速度变得更加困难,因为它们偶尔会刷新缓冲区。

答案 2 :(得分:0)

&#34;处理能力&#34;是一个具有启发性但又令人讨厌的含糊不清的术语。在大多数情况下,我们并不关心MIP或FIP - 仅针对纯数字运算,我们是否愿意。即便如此,对于比较计算机而言,将汽车与其最大值RPMs进行比较也是无用的。请参阅BogoMips

即使使用MIP和FIP,通常也会测量峰值性能。许多人并不试图确定平均值。

CPU功率的另一个有用参数是每秒分支 - 没有人测量(但它们应该)。 BPS因CPU架构的复杂性,缓存,分页,可能的上下文切换以及分支的性质而有很大差异。

在任何有用的程序中,输入和输出都是计算能力的一部分。因此,存储器,I / O设备,文件系统以及连接设备,网络等的带宽是计算机的计算能力的一部分&#34;。

如果您指其中的一部分,请澄清您的问题。