我有一个在远程设施上运行金融交易应用程序的系统。我无权访问 ILO/DRAC,但需要禁用超线程。该系统运行 Intel Westmere 3.33GHz X5680 六核 CPU。我可以重新启动,但要确保系统由于性能问题而未启用超线程。有没有一种干净的方法可以从 Linux 中做到这一点?
编辑:noht添加到内核引导命令行的指令不起作用。RHEL 也一样。
最近,我们将 Windows 2008 R2 数据库服务器从X5470 升级到X5560。理论上,两个 CPU 的性能非常相似,如果有的话,X5560 稍微快一点。
但是,SQL Server 2008 R2 的性能在过去一天左右的时间里一直很糟糕,CPU 使用率也很高。
页面的预期寿命很长,页面的缓存命中率几乎达到 100%,因此内存不是问题。
当我跑:
SELECT * FROM sys.dm_os_wait_stats
order by signal_wait_time_ms desc
Run Code Online (Sandbox Code Playgroud)
我有:
wait_type waiting_tasks_count wait_time_ms max_wait_time_ms signal_wait_time_ms -------------------------------------------------- —————————————————————————— -------------------- -------------------- XE_TIMER_EVENT 115166 2799125790 30165 2799125065 REQUEST_FOR_DEADLOCK_SEARCH 559393 2799053973 5180 2799053973 SOS_SCHEDULER_YIELD 152289883 189948844 960 189756877 CXPACKET 234638389 2383701040 141334 118796827 睡眠任务 170743505 1525669557 1406 76485386 LATCH_EX 97301008 810738519 1107 55093884 LOGMGR_QUEUE 16525384 2798527632 20751319 4083713 写日志 …
随着新的 Xeon CPU 支持超线程,目前在 Hyper-V 主机上使用(或不使用)它的智慧是什么?
我最初的印象是在虚拟主机环境中打开它可能是有害的,因为“额外”的 CPU 不是真正的核心。但是,我还阅读了(未经证实的)关于 MS 所做的一些努力以使 Hyper-V 在超线程环境中运行良好的评论。
有没有人在这方面有任何可靠的信息或经验?干杯!
假设我有一个 18 核的服务器 CPU,开启了超线程,这意味着我可以在 htop 中看到 36 个 CPU。
为了充分利用 CPU 并且不影响单线程性能,我是否应该将所有 36 个“核心”都以 100% 运行为目标,而 HT 核心只会做更少的工作并仍然报告 100%,或者这意味着“完整”内核已经被其“HT 内核”上的任务中断,从而减少了单线程工作?
我知道有很多变量会影响 HT 性能,我只想知道处理 HT 时 cpu 表的含义。
我已经看过这个线程:Hyper-V 和超线程:开还是关?,但唯一的答案是 Windows 特定的....
我正在构建一个 VM 服务器(如果有区别,则使用 Proxmox VE)并且想知道超线程如何影响虚拟机......
具体来说,如果我最大化虚拟机的数量,超线程会有所帮助还是会损害性能?
此外,最大的虚拟机将是具有约 30 个客户端(4 核/8 GB RAM)的终端服务器,以及一个文件服务器(如果有帮助)。
更新:服务器是 Dell R410,配备 1TB RAID 10、32 GB RAM 和双 Intel Xeon E5530(我不确定确切型号,但它是具有 2+ Ghz 的 E55xx)
更新:大多数虚拟机将在 KVM 上。
我有一个主要运行 Ruby 脚本的服务器。因为 Ruby (2.7) 有一个 GIL,所以它是单线程的。
我的计算机(服务器)有一个 Intel i3 双核处理器,但由于超线程,我看到 4 个内核。Ruby 在高负载下仅使用 25% 的 CPU。我想看看禁用超线程是否有益于在单线程上运行的编程语言。
此外,我的服务器正在运行一个非常小的桌面环境,它使用的 CPU 不超过 2%。所以我想让 Ruby 可以使用大部分资源。我做了一个基准测试,看看我是否真的通过禁用超线程获得了任何性能提升。
我编写了一个简单的 Ruby 脚本,它运行一个 while 循环并将循环计数器的值与另一个变量相加。这个程序应该使用 100% 的 CPU 内核:
#!/usr/bin/env ruby
$-v = true
LOOPS = ENV['N'].to_i.then { |x| x < 1 ? 100_000_000 : x } + 1
i, j, t = 0, 0, Time.now
puts "Counting till #{LOOPS - 1} and adding values to V..."
while (i += 1) < LOOPS
if i % …Run Code Online (Sandbox Code Playgroud) 很多文章(请参阅Slava Oks 的原始 SQL 2000 文章和Kevin Kline 的 SQL 2005 更新)建议在 SQL 服务器上禁用超线程,或者至少在服务器上启用超线程之前测试您的特定工作负载。
随着真正的多核处理器取代超线程处理器,这个问题逐渐变得不那么重要,但目前在这个问题上的智慧是什么?这个建议是否对 SQL 2005 64 位、SQL 2008 或 Windows Server 2008 有任何改变?
理想情况下,这应该在登台环境中提前进行测试,但是对于已经启用 HT 的服务器呢?如何判断我们遇到的性能问题是否与 HT 相关?与我在提高 SQL 性能时通常追求的所有其他事情相反,是否有一些特定的 perfmon 计数器组合可能会指向这个方向?
编辑:这特别有吸引力,因为我的一些高 cpu 服务器有可能得到全面改进,但客户端将希望看到一些具体的东西,以帮助我确定哪些服务器真正可以从禁用超线程中受益。当然,传统的性能故障排除正在进行中,但有时任何一点点帮助。
我有启用超线程的四核 CPU。所以我有 8 个逻辑核心。我想将我的应用程序限制为仅使用 4 个内核,并且我希望这 4 个内核是不同的物理内核。我应该使用哪些任务集选项(核心编号)?:
谢谢你。
linux unix central-processing-unit multi-threading hyperthreading
很多时候,当阅读有关 nginx 的推荐 worker_processes 时,会说这应该设置为托管 nginx 的服务器的核心数。
我们想知道我们是否也应该为此计算 HT 内核的数量?
还是我们只计算真正的物理内核的数量?
谢谢!
我已经查看了everyware并阅读了一堆关于此的文档,但还没有找到直接的答案,所以这里是:
vCenter 的“资源”选项卡中有一个设置,可让您配置超线程核心共享。我将此设置为“ANY”。
我的问题是关于调度亲和性。如果我将要分配特定内核的文本字段留空,会发生什么情况?
VMWare 是处理所有逻辑核心的超线程还是禁用超线程?
注意:Scheduling Affinity Group Box 说
超线程状态:活动
可用 CPU:##(逻辑 CPU)
hyperthreading ×10
sql-server ×2
affinity ×1
hp-proliant ×1
hyper-v ×1
linux ×1
multi-core ×1
nginx ×1
threads ×1
unix ×1