我已经对 linux 调度程序进行了一些测量。linux 是“Linux 版本 2.6.18-194.el5 (mockbuild@x86-005.build.bos.redhat.com)”,机器配备 8 个 CPU。测量是该机器上的唯一工作负载。
测量是两组。在第一组中,设置了 8 个线程,每个线程的计算成本相同。第二组是将一个线程一分为二,总共有 9 个线程(其中 2 个是其他 7 个线程成本的一半)。
当我运行这两个测量集时,我希望吞吐量是相同的,因为总计算成本是相同的,并且 linux 调度程序应该(虽然我不确定)将这两个较小的线程安排在一个内核中。结果证明吞吐量从 8 个线程显着减少到 9 个线程。任何人都有想法可能是什么原因。
编辑:@Waldheinz。这些线程是按顺序设置的(比如 0、1 ... 7),并且(无休止的)元组流从线程 0、1 到线程 7。每个元组在每个线程上花费一些时间,进行一些计算。所有 8 个线程的计算成本与第一组测量中的相同。
更新:如果线程数改为 16,意味着每个核心有两个线程,吞吐量提高到 8 个线程的情况...