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 / 问题

问题[smp](server)

Martin Hope
Hubro
Asked: 2021-02-05 15:13:58 +0800 CST

如何覆盖 NVME 设备的 IRQ 关联

  • 4

我正在尝试将所有中断移至核心 0-3,以保持其余核心空闲,以实现高速、低延迟的虚拟化。

我写了一个快速脚本来将 IRQ 亲和性设置为 0-3:

#!/bin/bash

while IFS= read -r LINE; do
    echo "0-3 -> \"$LINE\""
    sudo bash -c "echo 0-3 > \"$LINE\""
done <<< "$(find /proc/irq/ -name smp_affinity_list)"

这似乎适用于 USB 设备和网络设备,但不适用于 NVME 设备。他们都产生这个错误:

bash: line 1: echo: write error: Input/output error

他们顽固地继续在我几乎所有的核心上均匀地产生中断。

如果我检查这些设备的当前亲和力:

$ cat /proc/irq/81/smp_affinity_list 
0-1,16-17
$ cat /proc/irq/82/smp_affinity_list
2-3,18-19
$ cat /proc/irq/83/smp_affinity_list
4-5,20-21
$ cat /proc/irq/84/smp_affinity_list
6-7,22-23
...

似乎“某事”正在完全控制跨核心传播 IRQ,而不是让我改变它。

将这些移到其他内核是完全关键的,因为我在这些内核上的虚拟机中执行大量 IO,并且 NVME 驱动器正在产生大量的中断负载。这不是 Windows,我应该能够决定我的机器做什么。

什么是控制这些设备的 IRQ 亲和性以及如何覆盖它?


我在 Gigabyte Auros X570 Master 主板上使用 Ryzen 3950X CPU,3 个 NVME 驱动器连接到主板上的 M.2 端口。

(更新:我现在使用的是 5950X,仍然有完全相同的问题)

内核:5.12.2-arch1-1

lspci -v与 NVME 相关的输出:

01:00.0 Non-Volatile memory controller: Phison Electronics Corporation E12 NVMe Controller (rev 01) (prog-if 02 [NVM Express])
    Subsystem: Phison Electronics Corporation E12 NVMe Controller
    Flags: bus master, fast devsel, latency 0, IRQ 45, NUMA node 0, IOMMU group 14
    Memory at fc100000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: [80] Express Endpoint, MSI 00
    Capabilities: [d0] MSI-X: Enable+ Count=9 Masked-
    Capabilities: [e0] MSI: Enable- Count=1/8 Maskable- 64bit+
    Capabilities: [f8] Power Management version 3
    Capabilities: [100] Latency Tolerance Reporting
    Capabilities: [110] L1 PM Substates
    Capabilities: [128] Alternative Routing-ID Interpretation (ARI)
    Capabilities: [200] Advanced Error Reporting
    Capabilities: [300] Secondary PCI Express
    Kernel driver in use: nvme

04:00.0 Non-Volatile memory controller: Phison Electronics Corporation E12 NVMe Controller (rev 01) (prog-if 02 [NVM Express])
    Subsystem: Phison Electronics Corporation E12 NVMe Controller
    Flags: bus master, fast devsel, latency 0, IRQ 24, NUMA node 0, IOMMU group 25
    Memory at fbd00000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: [80] Express Endpoint, MSI 00
    Capabilities: [d0] MSI-X: Enable+ Count=9 Masked-
    Capabilities: [e0] MSI: Enable- Count=1/8 Maskable- 64bit+
    Capabilities: [f8] Power Management version 3
    Capabilities: [100] Latency Tolerance Reporting
    Capabilities: [110] L1 PM Substates
    Capabilities: [128] Alternative Routing-ID Interpretation (ARI)
    Capabilities: [200] Advanced Error Reporting
    Capabilities: [300] Secondary PCI Express
    Kernel driver in use: nvme

05:00.0 Non-Volatile memory controller: Phison Electronics Corporation E12 NVMe Controller (rev 01) (prog-if 02 [NVM Express])
    Subsystem: Phison Electronics Corporation E12 NVMe Controller
    Flags: bus master, fast devsel, latency 0, IRQ 40, NUMA node 0, IOMMU group 26
    Memory at fbc00000 (64-bit, non-prefetchable) [size=16K]
    Capabilities: [80] Express Endpoint, MSI 00
    Capabilities: [d0] MSI-X: Enable+ Count=9 Masked-
    Capabilities: [e0] MSI: Enable- Count=1/8 Maskable- 64bit+
    Capabilities: [f8] Power Management version 3
    Capabilities: [100] Latency Tolerance Reporting
    Capabilities: [110] L1 PM Substates
    Capabilities: [128] Alternative Routing-ID Interpretation (ARI)
    Capabilities: [200] Advanced Error Reporting
    Capabilities: [300] Secondary PCI Express
    Kernel driver in use: nvme
$ dmesg | grep -i nvme
[    2.042888] nvme nvme0: pci function 0000:01:00.0
[    2.042912] nvme nvme1: pci function 0000:04:00.0
[    2.042941] nvme nvme2: pci function 0000:05:00.0
[    2.048103] nvme nvme0: missing or invalid SUBNQN field.
[    2.048109] nvme nvme2: missing or invalid SUBNQN field.
[    2.048109] nvme nvme1: missing or invalid SUBNQN field.
[    2.048112] nvme nvme0: Shutdown timeout set to 10 seconds
[    2.048120] nvme nvme1: Shutdown timeout set to 10 seconds
[    2.048127] nvme nvme2: Shutdown timeout set to 10 seconds
[    2.049578] nvme nvme0: 8/0/0 default/read/poll queues
[    2.049668] nvme nvme1: 8/0/0 default/read/poll queues
[    2.049716] nvme nvme2: 8/0/0 default/read/poll queues
[    2.051211]  nvme1n1: p1
[    2.051260]  nvme2n1: p1
[    2.051577]  nvme0n1: p1 p2
linux linux-kernel smp nvme irq
  • 3 个回答
  • 2512 Views
Martin Hope
Mehmet Tuncal
Asked: 2010-04-03 10:53:12 +0800 CST

如何知道内核最后一次编译的时间?

  • 0

我已经安装了一个 linux 发行版,我“认为”它容易受到内核漏洞的攻击。我必须更新内核,但我需要知道它是否真的是在 2003 年编译的?我如何知道是否对内核进行了其他更新?

Linux gandalf 2.4.21-4.ELsmp #1 SMP Fri Oct 3 17:52:56 EDT 2003 i686 i686 i386 GNU/Linux

“smp”是否也意味着它可以免受最新威胁之类的威胁?谢谢你。

linux kernel smp
  • 4 个回答
  • 285 Views
Martin Hope
Jeff Atwood
Asked: 2009-07-03 05:42:24 +0800 CST

为什么我们的 8-cpu SQL Server 机器上的 CPU 使用如此不对称?

  • 7

我注意到运行 SQL Server 2008 的 8 CPU 数据库服务器上的 CPU 使用率根本不平衡。

以下是前一段时间随机一天的 1 天平均值,这是典型的且始终不对称:

9、15、10、21、18、21、14、9

(这里只有缩略图,因为图像真的很高,但点击查看完整尺寸的图像)

与我们的 4-CPU 网络服务器相比,这些服务器几乎一直都是完全平衡的,这让我觉得很奇怪。

现在,这是一个专用服务器,所以唯一在其上运行的是 SQL Server 2008(以及我们大量使用的内置全文索引),所以我不确定为什么 CPU 使用率会如此不对称. 想法?

central-processing-unit sql-server-2008 smp
  • 5 个回答
  • 3148 Views
Martin Hope
Allan Anderson
Asked: 2009-06-13 07:56:57 +0800 CST

并行制造的最佳硬件/软件解决方案?

  • 2

我们有一个基于 Linux 的构建系统,其中一个构建包含许多不同的嵌入式目标(启用了相应的不同驱动程序和功能集),每个目标都使用另一个单一的主源代码树构建。

与其尝试将我们的基于 make 的系统转换为对多进程更友好的系统,我们只想找到同时为所有这些目标启动构建的最佳方法。我不确定如何获得最佳性能。

我考虑了以下可能的解决方案:

  • 许多单独的构建机器。缺点:共享代码的大量副本,或从(慢)共享驱动器工作。更多系统需要维护。
  • 较少数量的多处理器机器(可能是双四核),具有快速条带化 RAID 本地存储。缺点:我不确定它将如何扩展。似乎体积会成为瓶颈,但我不知道这些天 Linux 处理 SMP 的能力如何。
  • 类似的 SMP 机器,但带有运行 VMware 的管理程序或 Solaris 10。这是愚蠢的,还是会提供一些调度好处?缺点:没有解决存储瓶颈问题。

我打算坐下来尝试这些可能性,但我想检查一下我是否遗漏了什么。谢谢!

smp make
  • 3 个回答
  • 126 Views
Martin Hope
Steve Schnepp
Asked: 2009-05-19 00:08:36 +0800 CST

如何模拟比物理可用更多的虚拟 CPU?

  • 2

在 VMWare 中,您可以使用多个 CPU,但只能使用主机上的 CPU。有没有办法使用比物理可用更多的 CPU?

这将是:

  • 测试软件设计用于在昂贵的 16 路盒上运行在商品 2 路盒上。
  • 在 1-way 主机上使用为 2-way 设计的图像
  • 以非 2路的方式测试软件(想想 3)(尽管这最终可以在 4 路的盒子上完成)

在 VMWare 中,您可以使用多个 CPU,但只能使用主机上的 CPU。有没有办法使用比物理可用更多的 CPU?

这将是:

  • 测试软件设计用于在昂贵的 16 路盒上运行在商品 2 路盒上。
  • 在 1-way 主机上使用为 2-way 设计的图像
  • 以非 2路的方式测试软件(想想 3)(尽管这最终可以在 4 路的盒子上完成)

更新:

我特别希望能够在 2 路硬件上运行 16 路配置的操作系统,而不是当前可用的几乎所有虚拟化软件都有效处理的基本超额订阅(如 4 路硬件上的 16 路 2 路)。

如果我不需要,我也不想投资一个非常具体的解决方案,因为我的想法是限制所需的投资。

而且我不能仅仅增加线程的数量,因为它已被巧妙地建议:

  • 在一个应用程序中,我希望能够测试进程号的自我调节。
  • 我还希望能够看到拥有少量大型 SMP(16 路以上)主机对大量小型主机(1 或 2 路)的影响。

更新(之二):

我终于发现QEMU正是这样做的。

virtualization emulation smp
  • 5 个回答
  • 3668 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