小编S.G*_*ami的帖子

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

我有一个主要运行 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)

hyperthreading

14
推荐指数
1
解决办法
7095
查看次数

标签 统计

hyperthreading ×1