为什么一个4个线程程序运行在1个核心VM快于4个核心相同的虚拟机?

问题描述 投票:-1回答:2
  • 我使用i7处理器与4芯(8个逻辑核心),一个Debian Linux的
  • 虚拟机使用的是Debian Linux的太
  • 程序编译时没有特殊优化GCC(默认编译设置)
  • 我循环1000次的程序。它需要超过2倍长,当VM具有4个核心。为什么?

注:我运行的程序是一个C程序,并产生4个线程(并行线程)和计算的一点点后加入他们。它的并行性(不是并发)。

c multithreading time parallel-processing pthreads
2个回答
0
投票

在I7,所有核心共享L3缓存。有可能通过增加内核如果执行的额外行导致在L3高速缓存更高速缓存未命中松动速度。


0
投票

一些问题是尴尬的并行;有些“尴尬序列”。你可能已经击中了后者,但不推你的代码,我们只能猜测。

BigLock解决方案,例如树木,只能​​通过锁定整个结构进行更新列表,没有从多CPU中受益。更糟的是,多个CPU可能导致一堆抖动的周围将一无所获的锁。

© www.soinside.com 2019 - 2024. All rights reserved.