首页 > 解决方案 > 为什么在多核 CPU 上增加计算过程需要更长的时间

问题描述

我用 docker 运行简单的算术计算测试

操作系统:ubuntu 20.4

中央处理器:i5-8250U @ 1.60GHz - Kaby Lake - Goldmount - 4 core

在单个 docker 容器上运行测试需要 1.5(显然在主机上)

在双容器上,每个容器也需要1.5几秒钟

1.7每个三个

2.0每个有四个

和 5 他们似乎开始工作而不是并行

所以我可以理解为什么我们失去了 5 个容器的并行性,因为只有 4 个内核。但是为什么 <= 4 我们会看到计算时间的增长?

Docker 文件:containres 运行docker run -v <path>:<path> <imagename> /app/a.out <test_name> & docker run ... <test_name_2> & docker run ...

FROM ubuntu:20.04
 
WORKDIR /app

测试代码: testFloat运行 10 次并从中获取 avg 编译g++ -O0 -static

double testFloat(Timer tmr) {
    float total = 0.0;
    tmr.reset();
    for (unsigned long long int i = 0; i < 100000000; i++)
    {
        float r1 = randf();
        float r2 = randf();
        total = r1/r2;
    }
    double elapsed = tmr.elapsed();
    return elapsed;
}

我不知道还有什么有用的,所以请问您是否需要更多信息

标签: multithreadingdockerubuntuconcurrencyparallel-processing

解决方案


您的处理器是这​​个:https ://ark.intel.com/content/www/us/en/ark/products/124967/intel-core-i5-8250u-processor-6m-cache-up-to-3- 40-ghz.html

它的基本频率为 1.6 GHz,最大涡轮频率为 3.4 GHz。这意味着它可以以大约 2 倍的速度运行,但并非一直如此。具体来说,并非所有 4 个内核都能以 3.4 GHz 运行。这可能就是您在同时运行 3 个或 4 个进程时观察到每个内核速度变慢的原因——它迫使所有内核减慢速度以避免过热。


推荐阅读