超线程与 SQL Server 和 PostgreSQL

Iam*_*mIC 3 postgresql performance hyperthreading cpu-architecture sql-server

我已经读到超线程是数据库的“性能杀手”。但是,我阅读的内容没有说明哪些CPU。此外,它主要表明 I/O 被“削减到 < 10% 的性能”。

这在逻辑上没有意义,因为 I/O 主要是控制器和磁盘的功能,而不是 CPU。但后来没有人说错误是有道理的。

我读到的内容还指出,SQL Server可以将两个并行查询操作放在 1 个逻辑核心(2 个线程)上,从而降低性能。我很难相信 SQL Server 的架构师会做出如此明显的错误计算。

有没有人有关于当前一代 CPU 上的超线程如何影响我提到的任一 RDBMS 的数据?

Tom*_*Tom 5

我读到的内容还指出,SQL Server 可以将两个并行查询操作放在 1 个逻辑核心(2 个线程)上,从而降低性能。我很难相信 SQL Server 的架构师会做出如此明显的错误计算。

这不是 SQL Server 问题。超线程虚拟内核看起来与操作系统的真实内核完全相同 - 哎呀,甚至是 bios。您可以将进程固定到处理器上,但调度程序根本不知道处理器的哪些内核是真实的,哪些是超线程的……尤其是因为两者在技术上都是真实的,只需共享某些资源即可。超线程是由英特尔开发的,通过在两个内核之间共享某些资产,允许“比真正的双核处理器更便宜”,但代价是该程序根本不知道这一点。

较新的英特尔 CPU 在硬件方面更好,因此 Hypewr-Threading 不再被认为是当前 SQL Server 的瓶颈 - 在当前的英特尔芯片上运行。这是因为英特尔主要使超线程更好。

http://www.microsoft.com/whdc/system/sysperf/Perf_tun_srv-R2.mspx是当前的 2008 R2 调整指南。

http://ozamora.com/2010/09/sql-server-2008-r2-and-nehalem-processors/有一些 Nehalem 和 SQL Server 的东西。

  • @TomTom:实际上,操作系统确切地知道哪些是 HT,哪些是真正的线程,并且应用程序也可以使用这些信息:http://msdn.microsoft.com/en-us/library/ms683194。某些操作系统调度程序(甚至就 XP 而言)实际上更喜欢真正的硬件线程,并且仅在真实线程为 100% 时才开始调度 HT 线程。见 http://blogs.msdn.com/b/oldnewthing/archive/2004/09/13/228780.aspx (3认同)