我正在使用新的Intel I7四核处理器构建一台PC。启用超线程后,它将在任务管理器中报告8个核心。
我的一些同事说,超线程会使系统不可靠,并建议将其关闭。
你们中的任何一位好人都可以启发我和其余的库存溢出用户。
接下来:我一直在使用超线程,而且它一直在使用。没有任何不稳定性。我正在使用:
答案 0 :(得分:9)
稳定性不太可能受到影响,因为抽象级别非常低,操作系统只是将其视为另一个提供工作的CPU。然而,表现是另一回事。
老实说,我不能说是否仍然如此,但至少在启用HT的CPU出现时,至少有一些应用程序存在已知问题。例如,MySQL和我支持日常工作的Java应用程序等多线程应用程序在启用HT时会降低性能。我们总是建议删除它,至少对于我们服务器端企业应用程序的特定用例。
这可能不再是一个问题,在桌面环境中,这对大多数用例来说不太可能成为问题。在CPU被大量使用时,分离CPU工作的能力通常会导致响应更快的应用程序。但是,当应用程序已经过度线程化和CPU密集时(例如数据库服务器),上下文切换和开销可能会减少。
答案 1 :(得分:4)
在我的头脑中,我可以想到你的同事可能会说出的一些理由。
有关超线程下SQL性能遭遇的几篇文章。我相信它会做太多的上下文切换或缓存颠簸。记不起来。
早期从单一过程到多过程,或者更可能是大多数人的超线程过程,带来了许多线程问题。他们从未见过的种族条件,僵局等。即使它的代码问题,有些人也会责怪这些过程。
他们是否对多核/多程序或者超线程做出了同样的主张?
至于我,我已经在超线程盒子上开发了4年了,唯一的问题是我自己制造的UI死锁问题。
答案 2 :(得分:3)
超线程主要在调度线程到同一个CPU而不是不同的CPU时,会对调度程序的行为/性能产生影响......
它将显示在一个编码错误的应用程序中,它不处理线程之间的竞争条件......
所以通常是糟糕的设计/代码....突然发现失败模式条件
答案 3 :(得分:2)
不可靠?我对此表示怀疑。我能想到的超线程的唯一缺点是如果操作系统不知道它,它可能会在其他物理处理器空闲时在一个物理处理器上安排两个线程,这会降低性能。
答案 4 :(得分:2)
SQL服务器和某些查询的超线程存在问题,因为SQL服务器有自己的调度程序,maxdop 1会解决这个问题
答案 5 :(得分:2)
无论Windows处于何种程度不稳定状态,超线程都极不可能做出显着贡献(或者它现在已经成为重大新闻。)
答案 6 :(得分:1)
我已经有一台超线程PC几年了。没有那么多核心,但它对我来说很好。
希望我有测试数据来证明你的同事是错的,但听起来这只是我对他们的看法。 ;)
答案 7 :(得分:1)
超线程CPU中的线程共享相同的缓存,因此不会遇到多CPU架构可能存在的缓存一致性问题。但是,如果一个软件的开发人员考虑到多个cpus编程,他们将(或应该)使用读语义编写(iirc,这就是术语)。即所有写入都会立即从缓存中刷新。
答案 8 :(得分:1)
据我所知,从操作系统的角度来看,它并没有看到超线程与实际的多核不同。从操作系统的角度来看,没有区别 - 它是孤立的。
因此,除了超线程的“额外内核”不是“真正的”(在严格的技术意义上)并且没有“真正的”CPU内核的完整性能这一事实,我看不出它不那么可靠。在某些罕见的情况下,或许可能更慢,但可靠性更低。
当然,这取决于你正在运行的东西 - 我认为一些应用程序可能会因CPU而变得“肮脏”,而超线程可能会让他们感到困惑,但这可能非常罕见。
我自己已经运行了一台具有超线程功能的PC已有好几年了,而且我没有看到任何稳定性问题。
抱歉,我没有更具体的数据!
答案 9 :(得分:1)
我拥有一个i7系统,我没有任何问题。
如果它适用于多核,则可以使用超线程。
答案 10 :(得分:0)
答案简短:是的。
与几乎所有问题一样,答案很长,“它取决于”。取决于操作系统,软件,CPU版本等。我个人不得不两次禁用超线程以使软件正常工作(一个使用Synergy应用程序,两个使用Windows NT 4.0安装程序),但是里程可能会有所不同。
只要你安装Windows从一开始就检测到多个HT核心(它加载一些相关的驱动程序等),你可以随时禁用(并重新启用)HT“。如果你无法解决特定软件的奇怪稳定性问题,那么禁用HT以确定它是否有任何影响并不困难。
我不会禁用它,因为坦白说,它可能会在99.99%的日常使用中正常工作。但请注意,是的,它偶尔会导致奇怪的行为,所以如果您碰巧在路上发生了非常奇怪的事情,请不要排除它。
答案 11 :(得分:0)
就个人而言,我发现超线程虽然没有引起任何问题,但实际上并没有那么多帮助。这可能就像拥有一个额外的.1处理器。在我的HT机器上工作时,我很少看到我的CPU超过50%。我不知道HT对于像i7这样的新处理器是否有任何改善,但我并不乐观。
答案 12 :(得分:0)
除了听到一些关于SQL Server的报告之外,我所能报告的都是正面的。在使用HT的重型多线程应用程序上,我的性能提高了约25%。从来没有遇到过它的问题,我正在使用第一代HT处理器......
答案 13 :(得分:0)
晚会,但未来参考;
我目前在SQLServer上遇到此问题。基本上,我的理解是同一处理器上的超线程共享相同的L1&二级缓存,这可能会导致二者之间的问题。 Citrix似乎也出现了我正在阅读的问题。
Slava Ok在上面写了good blog post。
答案 14 :(得分:0)
我现在非常,但是通过Google找到了这个页面。我可能发现了一个非常微妙的问题。我有运行2003 Server的i7 950,它很棒。最初我在BIOS中留下了超线程,但在一些测试和推动事情的过程中,我运行了一个名为“crashme”的程序,由Carrette执行。该程序试图通过生成一个进程并将其提供垃圾来尝试运行来崩溃操作系统。我的双Opteron设置永远运行它没有问题,但950在一小时内崩溃。除非我做了一些愚蠢的事,否则它不会因为其他任何事情而崩溃,所以这是非常令人惊讶的。一时兴起,我关闭了HT并再次运行程序。它整夜运行,甚至是多个实例。一个轶事并不意味着什么,但试试看看会发生什么。此外,如果HT关闭,似乎处理器在任何给定负载下稍微冷一点。因人而异。