AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[hyperthreading](server)

Martin Hope
fskexp
Asked: 2020-07-22 01:09:05 +0800 CST

EC2、Windows 10、一半的虚拟处理器

  • 6

我们运行具有 2 个 vCPUt3.large的m5.large实例(如 EC2 管理控制台中所示)。我试图理解为什么 Windows 2019(我的 IT 提供的 AMI)只能看到一半的逻辑 CPU。

  • 一半的数字在任务管理器中报告,在 msinfo32 中,在 Coreinfo 中。我们还看到较大实例的数量减少了一半(xlarge:2 而不是 4)。
  • 如果我while($true){}在 PowerShell 中运行,任务管理器会报告 100% 的使用率,但 Cloudwatch 会报告 50%。
  • 在 msconfig 中,我只能选择 1 个 CPU(对于大型实例)。
  • 当我在 EC2 向导中创建我的实例时,我使用了默认数量的 vCPUS。
  • 如果我使用市场上的 Windows 2019 AMI,我会获得正确数量的逻辑处理器。在这两种情况下,它都是相同的版本/内部版本(Windows Server 2019 Datacenter)。

您是否知道 Windows 10 中可能影响检测到的逻辑处理器数量的任何配置?或者如果我可以激活任何日志来查看 CPU 是如何被检测到的(比如dmesg在 linux 中)。我的 IT 同事告诉我,他们没有改变 CPU 数量或超线程,但看起来他们的 AMI 有一些特别之处。

更新:在事件查看器中,在“Microsoft / Windows / Kernel-PnP”中,我可以看到:

设备 ACPI\GenuineIntel_- Intel64_Family_6_Model_79 -_Intel(R)_Xeon(R) CPU_E5-2686_v4 @_2.30GHz_1 已配置。

设备 ACPI\GenuineIntel_- Intel64_Family_6_Model_79 -_Intel(R)_Xeon(R) CPU_E5-2686_v4 @_2.30GHz_0 已配置。

我不知道是否有任何其他日志可以说明任何 CPU/核心/线程何时被初始化为逻辑处理器。

更新 2:我比较了有问题的机器和工作机器的内容bcdedit /enum All和内容,它们是相同的(UUID 除外)。bdcedit /v我试图明确设置bcdedit /set NUMPROC 2并重新启动,但没有结果。bcdedit /v:

Windows Boot Manager
--------------------
identifier              {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device                  partition=C:
description             Windows Boot Manager
locale                  en-US
inherit                 {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
bootshutdowndisabled    Yes
default                 {61a8a653-e7da-11e8-a960-0e221fdbf186}
resumeobject            {61a8a652-e7da-11e8-a960-0e221fdbf186}
displayorder            {61a8a653-e7da-11e8-a960-0e221fdbf186}
toolsdisplayorder       {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout                 30

Windows Boot Loader
-------------------
identifier              {61a8a653-e7da-11e8-a960-0e221fdbf186}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows Server
locale                  en-US
inherit                 {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
recoverysequence        {74e13b1d-b199-11ea-827a-0af4c9a8ea6d}
displaymessageoverride  Recovery
recoveryenabled         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \Windows
resumeobject            {61a8a652-e7da-11e8-a960-0e221fdbf186}
nx                      OptOut
bootstatuspolicy        IgnoreAllFailures
amazon-ec2 windows-server-2019 hyperthreading
  • 1 个回答
  • 935 Views
Martin Hope
S.Goswami
Asked: 2020-03-05 12:24:48 +0800 CST

为什么禁用超线程会使我的服务器变慢?

  • 14

我有一个主要运行 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 % 10000 == 0
        e = Time.now - t
        r = LOOPS.*(e)./(i).-(e).round(2)
        print "\e[2KN: #{i} | Done: #{i.*(100) / LOOPS}% | Elapsed: #{e.round(2)}s | Estimated Rem: #{r}s\r"
    end

    j += i
end

puts "\nV = #{j}\nTime: #{(Time.now).-(t).round(2)}s"
  • 使用超线程:
⮚ ruby p.rb
Counting till 100000000 and adding values to V...
N: 100000000 | Done: 99% | Elapsed: 4.55s | Estimated Rem: 0.0s
V = 5000000050000000
Time: 4.55s

⮚ ruby p.rb
Counting till 100000000 and adding values to V...
N: 100000000 | Done: 99% | Elapsed: 4.54s | Estimated Rem: 0.0s
V = 5000000050000000
Time: 4.54s

⮚ ruby p.rb
Counting till 100000000 and adding values to V...
N: 100000000 | Done: 99% | Elapsed: 4.67s | Estimated Rem: 0.0s
V = 5000000050000000
Time: 4.67s

gnome-system-monitor在测试运行时报告 Ruby 的 CPU 使用率为 25%。

  • 没有超线程:

[# echo 0 | tee /sys/devices/system/cpu/cpu{2,3}/online用于禁用超线程]

⮚ ruby p.rb
Counting till 100000000 and adding values to V...
N: 100000000 | Done: 99% | Elapsed: 4.72s | Estimated Rem: 0.0s
V = 5000000050000000
Time: 4.72s

⮚ ruby p.rb
Counting till 100000000 and adding values to V...
N: 100000000 | Done: 99% | Elapsed: 4.54s | Estimated Rem: 0.0s
V = 5000000050000000
Time: 4.54s

⮚ ruby p.rb
Counting till 100000000 and adding values to V...
N: 100000000 | Done: 99% | Elapsed: 4.56s | Estimated Rem: 0.0s
V = 5000000050000000
Time: 4.56s

gnome-system-monitor在测试运行时报告 Ruby 的 CPU 使用率为 50%。


我什至在我的笔记本电脑上运行了测试,它所花费的时间大约是我电脑上的两倍。但结果是相同的:禁用超线程并不能帮助进程做得更好。更糟糕的是,我的笔记本电脑在多任务处理时会变慢一些。

因此,在非超线程模式下,Ruby 使用的 CPU 功率是超线程模式的 2 倍。但是为什么完成同样的任务仍然需要同样的时间呢?

hyperthreading
  • 2 个回答
  • 7820 Views
Martin Hope
Tassadar
Asked: 2016-04-03 04:58:45 +0800 CST

超线程应该使用多少 CPU?

  • 24

假设我有一个 18 核的服务器 cpu,开启了超线程,这意味着我可以在 htop 中看到 36 个 cpu。

为了充分利用 CPU 并且不影响单线程性能,我是否应该将所有 36 个“核心”的目标设为 100% 运行,而 HT 核心将只做更少的工作并且仍然报告 100%,或者这意味着“完整”内核已经被其“HT 内核”上的任务打断,从而减少了单线程工作?

我知道有很多变量会影响 HT 性能,我只是想知道处理 HT 时 cpu 计量表的含义。

hyperthreading
  • 4 个回答
  • 2532 Views
Martin Hope
Samantha Maurice
Asked: 2015-01-21 14:58:50 +0800 CST

客户端 PC 上的超线程对网络性能有影响吗?

  • 0

我的网络知识非常少,我的硬件知识只是稍微好一点,所以请多多包涵。我为一家小型非营利组织工作,该组织正在获得由另一家公司建立的新计算机网络。他们将安装的服务器是运行 Windows Server 2012 R2 的 HP Proliant ML350p G8、Intel Xeon E5-2620 v2 2.1GHz、8GB RAM。

我们将计算机用于 MS Office 程序(Word、Excel 和 Access)和网页浏览。我们做的最密集的任务是搜索 Access 数据库。据我了解,超线程以及随之而来的额外费用对我们的使用没有好处,但我们新网络的公司建议在客户端计算机上使用超线程处理器。

所以我的问题是,在客户端计算机上安装超线程处理器会影响网络性能吗?

具体来说,我们正在研究 i3-4150 3.5GHz 与 AMD A6-5400K 3.6GHz 处理器,每台机器的差异约为 70-80 美元。我只是不想被骗支付不必要的钱,因为这些是捐赠的钱,我们不想在管理成本上花费不必要的钱。

hyperthreading
  • 3 个回答
  • 702 Views
Martin Hope
Emily
Asked: 2012-06-15 03:54:34 +0800 CST

超线程和 htop/系统监视器

  • 2

我正在启用超线程的四核 Xenon E5520 上运行大量模拟。我的软件自动检测 8 个(虚拟)内核并启动 8 个模拟以并行运行。然而 htop 和系统监视器只显示 8 个内核中的每一个都加载到 ~50%。

这是有意的行为吗?在某种程度上,这是有道理的,因为每个物理核心的总负载为 400% 或 100%,但我不应该得到更多吗?我的意思是这就是 HT 的目的,对吗?使用 SMT 使用其他未使用的执行单元来运行另一个线程。所以吞吐量应该更高吧?

我应该提到负载非常一致,每个核心始终为 50%。模拟由 Java 运行,在单个 JVM 中,GC 不是问题,我远低于 JVM 堆限制。模拟不受内存限制,有很多东西可以使用,没有交换。模拟正在向磁盘写入大量数据,但有大缓冲区(每个线程 128MB 写入缓冲区)并且 gkrellm 显示的磁盘活动频繁爆发 ~90MB/s 但它不是一致的负载,我可以相信这可能是一个瓶颈。

任何人都可以对此有所了解吗?

java cpu-usage hyperthreading system-monitoring
  • 1 个回答
  • 1879 Views
Martin Hope
tacos_tacos_tacos
Asked: 2012-06-14 12:30:21 +0800 CST

在处理从单核切换到双核的多个请求方面,我是否应该期待 Oracle 性能的大幅提高?

  • 2

我们有一个大约 100 GB 的 Oracle 数据库,该数据库运行在 ESX 中的 Windows Server 2k3R2 VM 之上,采用 1 个插槽,1 个核心配置。每当它必须处理一个主要查询时,它似乎会在该查询期间“固定”(50% - 75% CPU 使用率),并且在某些情况下会限制使用它的应用程序的功能。最典型的情况是,当我们运行海量报表时,在运行查询时,单独查询会显着降低应用程序性能,就好像它在排队任务一样。我的问题是:将虚拟机“升级”到 1 个插槽、2 个核心配置是否会显着改善这个“挂钩”问题?

performance oracle vmware-esx multi-core hyperthreading
  • 4 个回答
  • 1215 Views
Martin Hope
CapBBeard
Asked: 2009-07-29 20:41:53 +0800 CST

Hyper-V 和超线程:开还是关?

  • 27

有了支持超线程的新 Xeon CPU,目前在 Hyper-V 主机上使用(或不使用)它的智慧是什么?

我最初的印象是,在虚拟主机环境中打开它可能是有害的,因为“额外”的 CPU 不是真正的内核。但是,我还阅读了(未经证实的)评论,MS 做了一些艰苦的工作以使 Hyper-V 在超线程环境中运行良好。

有没有人在这方面有任何可靠的信息或经验?干杯!

hyper-v hyperthreading
  • 5 个回答
  • 32141 Views
Martin Hope
Bart Silverstrim
Asked: 2009-07-25 09:59:41 +0800 CST

VMWare ESXi 和超线程

  • 4

我有(有些人可能已经厌倦了在 SF 上看到的)一个运行 ESXi 的戴尔 2950、双 4 核 3Ghz 处理器。我在 VSphere 管理控制台上注意到服务器说它没有启用超线程(“非活动”)

显然它在 BIOS 中默认是关闭的。

我知道我可以关闭所有虚拟机并重新启动并编辑该设置,但我应该这样做吗?在这种类型的设置上启用超线程是否有真正的好处,或者性能增益是否微不足道,如果有的话?

vmware-esxi hyperthreading
  • 3 个回答
  • 19973 Views
Martin Hope
BradC
Asked: 2009-06-30 14:24:43 +0800 CST

当前对 SQL Server 和超线程的看法?

  • 7

那里有很多文章(请参阅Slava Oks 的原始 SQL 2000 文章和Kevin Kline 的 SQL 2005 更新)建议在 SQL 服务器上禁用超线程,或者至少在您的服务器上启用它之前测试您的特定工作负载。

随着真正的多核处理器取代超线程处理器,这个问题逐渐变得不那么重要,但目前在这个问题上的智慧是什么?此建议是否对 SQL 2005 64 位、SQL 2008 或 Windows Server 2008 有任何更改?

理想情况下,这应该提前在暂存环境中进行测试,但是对于已经投入生产并启用了 HT 的服务器呢?如何判断我们遇到的性能问题是否与 HT 相关?与我在提高 SQL 性能时通常追求的所有其他事情相反,是否有一些特定的 perfmon 计数器组合可能会将我指向那个方向?

编辑:这特别有吸引力,因为我的一些高 cpu 服务器有可能全面改进,但客户希望看到一些具体的东西,帮助我确定哪些服务器真正可以从禁用超线程中受益。当然,传统的性能故障排除仍在进行中,但有时任何一点点都会有所帮助。

sql-server hyperthreading
  • 3 个回答
  • 8311 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve