关于多核cpu的一个测试

通过CPU_SET可以为进程选择指定的cpu,详细见:http://www.oratea.net/?p=706

对于多核的cpu,同一个物理cpu内的core一般都是公用l3 cache,那么同一个物理cpu内的core的信息交换就是通过ls cache.

对于不同的物理cpu,那么信息交换就没那么容易了,要通过内存.

下面的测试是在一台有两个四核的cpu上运行的.

代码如下:

#include#include#include#include#include#define __USE_GNU#include#include#includeint main(int argc,char **argv) {??? int num=atoi(argv[1]);??? int cpu1=atoi(argv[2]);??? int cpu2=atoi(argv[3]);??? int i=0;??? int n=0;??? cpu_set_t mask;?????? for(i=0;i

在程序运行的过程中,会在两个核中不停的转换.

测试1,在同一个核上执行

real??? 0m0.633suser??? 0m0.292ssys???? 0m0.340s

测试2,在同一个物理cpu上的不同核上运行

real??? 0m14.751suser??? 0m0.293ssys???? 0m0.981s

测试3,在不同的物理cpu上运行

real??? 0m17.440suser??? 0m0.454ssys???? 0m1.854s

从上面的sys时间,可以很容易的比较出性能的差距.

关于多核cpu的一个测试

相关文章:

你感兴趣的文章:

标签云: