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
    • 最新
    • 标签
主页 / user-57839

Hubro's questions

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
Hubro
Asked: 2020-03-28 13:32:30 +0800 CST

是否可以使用 TXT 记录进行 CAA(认证机构授权)

  • 8

由于某种原因,我的域名提供商不允许在其 DNS 编辑器中使用 CAA 记录。当我邮寄给他们时,他们说我可以使用 TXT 记录代替。经过一个小时的谷歌搜索,这似乎是不正确的。我找不到任何有关为此使用 TXT 记录的信息。我什至浏览了 RFC,但找不到任何关于 TXT 记录的提及。

CAA 是否通常支持 TXT 记录,还是我的域名提供商对此有误?

domain-name-system caa-record
  • 1 个回答
  • 1787 Views
Martin Hope
Hubro
Asked: 2017-08-10 09:56:59 +0800 CST

4针软盘可以转SATA电源吗?

  • 5

我刚买了一台服务器,并意识到它可以为我所有的驱动器托架供电,但不能为我为它购买的内部 SSD 供电。但是,它确实有 2 个免费的 4 针软盘电源连接器:

4 针软盘电源连接器

是否可以使用适配器将这些转换为 SATA 电源连接器?

我搜索了一段时间,我可以找到很多SATA 到 4 针软盘(错误的方式),但过了一会儿我在 ebay 上找到了这个适配器:

http://www.ebay.com/itm/4-Pin-Floppy-FDD-Male-to-15-Pin-SATA-Female-Power-Adapter-Convertor-Cable-MX714-/371294563755

4 针软盘 FDD 公转 15 针 SATA 母电源适配器转换器电缆 MX714

这是合法的吗?这可以为 SSD 供电吗?ebay 上的反馈似乎过于积极,而且闻起来很腥,所以我不相信。


我觉得在 Serverfault 问题中链接到产品很奇怪,但它非常相关。如果这违反规则,请删除链接

electrical-power
  • 1 个回答
  • 4259 Views
Martin Hope
Hubro
Asked: 2013-05-30 01:34:21 +0800 CST

为什么我的 RewriteCond 匹配,即使模式明显不匹配?

  • 0

看看我的重写日志:

(2) 使用请求的 uri /bundles/astrupsspectacle/spectacle.css 初始化重写引擎
(3) 将模式 '^(.*)$' 应用于 uri '/bundles/astrupsspectacle/spectacle.css'
(4) RewriteCond: input='${REQUEST_URI}' pattern='!^/app\.php' => 匹配
(4) RewriteCond: input='${REQUEST_URI}' pattern='!^/bundles/' => 匹配
(2) 重写'/bundles/astrupsspectacle/spectacle.css' -> '/app.php/bundles/astrupsspectacle/spectacle.css'
(2)本地路径结果:/app.php/bundles/astrupsspectacle/spectacle.css
(2) 以document_root为前缀到/srv/spectacle/web/app.php/bundles/astrupsspectacle/spectacle.css
(1) 使用 /srv/spectacle/web/app.php/bundles/astrupsspectacle/spectacle.css [确定]

它说pattern='!^/bundles/' => matched即使它显然没有。我的模式是:

RewriteCond ${REQUEST_URI} !^/bundles/

但我也尝试过:

RewriteCond ${REQUEST_URI} !^bundles/

乃至:

RewriteCond ${REQUEST_URI} !^bundles

他们都说“匹配”。我勒个去!?

apache-2.2
  • 1 个回答
  • 846 Views
Martin Hope
Hubro
Asked: 2013-05-30 00:36:34 +0800 CST

为什么我的重写规则会导致“400:错误请求”?

  • 2

我的站点配置中有这些重写规则:

RewriteEngine on
RewriteRule ^app.php - [L]
RewriteRule ^(.*)$ app.php$0 [L]

目标是所有请求都应附加到前端控制器“app.php”。规则的最后一行导致我的服务器响应“400:错误请求”,无论我尝试什么路径,即使是空路径。我启用了重写日志并尝试了两条路径:“/”和“/login”。这就是日志所说的:

(2) 使用请求的 uri / 初始化重写引擎
(3) 将模式 '^app.php' 应用到 uri '/'
(3) 将模式 '^(.*)$' 应用于 uri '/'
(2) 重写'/' -> 'app.php/'
(2)本地路径结果:app.php/
(2) 使用请求的 uri /login 初始化重写引擎
(3) 将模式 '^app.php' 应用到 uri '/login'
(3) 将模式 '^(.*)$' 应用于 uri '/login'
(2) 重写'/login' -> 'app.php/login'
(2)本地路径结果:app.php/login

根据日志,它应该会成功。如果我删除重写规则的最后一行并访问 URL“app.php/login”,那么它会按预期工作。

有谁知道为什么这不起作用?


注意:错误日志中没有错误。
注意:当删除最后一个重写规则时,生成的路径(“app.php/”、“app.php/login”)工作正常。

apache-2.2
  • 1 个回答
  • 4226 Views
Martin Hope
Hubro
Asked: 2013-02-07 13:51:04 +0800 CST

我如何配置位置块以始终在 nginx 中返回单个文件?

  • 21

在我的应用程序中,我希望位置“/”返回静态 index.html 文件,我希望“/static”从文件夹提供静态文件,我希望所有其他请求返回 404 NOT FOUND。稍后我会将所有其他请求重定向到 WSGI 服务器。

这是目前我的配置:

# Dev server.
server {
    listen 1337;
    charset UTF-8;

    location / {
        rewrite ^ static/index_debug.html break;
    }

    location /static {
        alias /home/tomas/projects/streamcore/static;
    }
}

静态文件夹工作正常,但“/”返回 404 NOT FOUND。我也试过:

alias /home/tomas/projects/streamcore/static/index_debug.html;

在 location 块中,但返回 500 INTERNAL SERVER ERROR。似乎alias不喜欢单个文件。另外我试过:

try_files static/index_debug.html;

但这会阻止服务器以错误“try_files 指令中的参数数量无效”开始。显然try_files实际上需要您尝试多个文件,这不是我要寻找的行为。

所以我的问题是:如何将位置块配置为始终返回静态文件?


编辑:我从其他答案中看到alias确实应该接受单个文件作为参数,所以我尝试了:

location = / {
    alias /home/tomas/projects/streamcore/static/index_debug.html;
}

但我仍然只得到 500 内部服务器错误。“/”请求的错误日志显示:

[警报] 28112#0:*7“/home/tomas/projects/streamcore/static/index_debug.htmlindex.html”不是目录

为什么要尝试打开“index_debug.htmlindex.html”?我没有在index任何地方使用该指令。

nginx
  • 3 个回答
  • 39742 Views
Martin Hope
Hubro
Asked: 2013-02-04 10:43:48 +0800 CST

如何让一台服务器上的多个位置指令在 nginx 中工作?

  • 0

我正在制作一个 JavaScript Web 应用程序,它在开发过程中将驻留在目录“js”中。它将被连接成一个文件并放置在“static”文件夹中以供分发,但在我开发时我希望目录“/js”指向不在“static”文件夹中的 JavaScript 源代码。

这是我的 nginx 配置文件,据我所知,它应该可以工作:

# Dev server.
server {
    listen 1337;
    charset UTF-8;

    location /js {
        root /home/tomas/projects/streamcore/js;
    }

    location / {
        root /home/tomas/projects/streamcore/static;
        index index.html;
    }
}

我可以访问“index.html”,但对“/js”下文件的任何请求都以 404 NOT FOUND 告终。根据文档,请求应该匹配具有最具体模式的位置块,在本例中为“/js”,所以我不明白为什么这不起作用。

如果需要,请索取更多信息。谢谢你的帮助。

nginx
  • 1 个回答
  • 107 Views
Martin Hope
Hubro
Asked: 2012-07-18 07:51:33 +0800 CST

从 PHP 连接到 MySQL 非常慢

  • 23

我刚刚全新安装了 XAMPP。第一次打开 PHPMyAdmin 时,我注意到它非常慢。在 localhost 上打开每个页面需要将近 5 秒,这是没有意义的。我做了一个小测试用例来转移 PHPMyAdmin 的责任:

$con = new PDO("mysql:host=localhost;dbname=mysql", "root", "");
$statement = $con->query('SELECT host,user,password FROM user;');
$users = $statement->fetchAll(PDO::FETCH_ASSOC);

上面的脚本运行只需要大约 3 秒(尽管我第一次运行它时加载时间接近 8 秒。)

然后检查它是否是我尝试使用的 PDO 的错误mysql_connect:

$con = mysql_connect("localhost", "root", "");
mysql_select_db("mysql", $con);
$result = mysql_query('SELECT host,user,password FROM user;');

需要同样长的时间才能完成。

一开始我以为是 PHP 的错,但 PHP 代码和静态文件的服务速度比我单击刷新时更快。我通过运行这个小脚本来测试 PHP:

header("Content-Type: text/plain");

for($i = 0; $i < 5000; $i++)
{
    echo sha1(rand()) . "\n";
}

5000 次sha1计算,页面显示速度仍然快于我刷新窗口的速度。

然后我认为这是MySQL的错。但同样,没有进行太多测试就发现 MySQL 的工作速度比我需要的要快。使用 MySQL CLI 客户端,用户选择查询甚至不需要花费可测量的时间——它在我按下返回键之前就已经完成了。

问题一定是 PHP 与 MySQL 的连接——据我所知。我可以找到很多关于 PHP 速度慢或 MySQL 速度慢的东西,但没有关于 PHP+MySQL 非常慢的东西。

感谢任何能帮我解决这个问题的人!


我正在为 win32 使用 XAMPP 1.8.0(下载链接)
PHP 版本:5.4.4
MySQL 版本:14.14


编辑:计时后,事实证明是连接功能花费了这么长时间:

$time = microtime(true);

$con = mysql_connect("localhost", "root", "");
mysql_select_db("mysql", $con);

$con_time = microtime(true);

$result = mysql_query('SELECT host,user,password FROM user;');

$sel_time = microtime(true);

printf("Connect time: %f\nQuery time: %f\n",
       $con_time-$time,
       $sel_time-$con_time);

输出:

连接时间:1.006148
查询时间:0.000247

什么会导致 PHP 花费大量时间连接到数据库?CLI 客户端、HeidiSQL 和 MySQL 工作台即时连接

windows mysql php xampp
  • 6 个回答
  • 88310 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