【问题标题】:echo: write error: Invalid argument while setting io_poll for NVMe SSD回声:写入错误:为 NVMe SSD 设置 io_poll 时参数无效
【发布时间】:2019-08-08 23:16:51
【问题描述】:

我以 root 用户身份使用以下命令为 NVMe SSD 设备启用 Linux 内核轮询。

# echo 1 > /sys/block/nvme2n1/queue/io_poll

我收到以下错误: bash: echo: write error: Invalid argument

操作系统详情:Ubuntu 16.04,Linux 内核 5.0.0+。

任何指针?

命令参考:https://itpeernetwork.intel.com/tuning-performance-intel-optane-ssds-linux-operating-systems/#gs.1yu3o1

https://lwn.net/Articles/663543/

【问题讨论】:

  • 这看起来像是一个使用问题而不是开发问题。您可能应该阅读文档,或者如果从开发人员的角度来看,找到并阅读产生该错误的代码,并尝试弄清楚其含义是您以错误的方式提出问题,还是您要求的东西不支持。
  • 该命令适用于使用内核 4.15 的其他机器。用法是正确的,参考文献中也提到过。
  • 这并不意味着它可以与这个特定的硬件或其驱动程序一起工作。

标签: linux linux-kernel ubuntu-16.04 sysfs nvme


【解决方案1】:

Nikhil 将"Error while enabling io_poll for NVMe SSD" 发布到 Linux 阻止邮件列表并获得了reply from Keith Busch

请务必在 nvme 驱动程序中打开轮询队列。没有了 默认。 [原文如此] 启用它们的内核参数是:

nvme.poll_queues=X

其中“X”是轮询队列的数量。我建议至少 1 个 CPU 插槽,但越多越好。

Nikhil's reply 的外观来看,在进行上述更改后,io_poll 似乎可以设置为 1。

对于上下文,您可以在5.0 kernel introduced the NVMe poll_queues option 中浏览内核源代码(这在storage section of Kernel Newbies 5.0 kernel changelog 中也有所提及)。此外,5.0 commit defaulted poll_queues in to 0(在 2019 年底撰写本文时,我们目前达到了5.5-rc2 and this is still the case)。

此外,Frank Ober(他以@FrankO 的身份发布了这个问题的答案)在"Polled io for Linux kernel 5.x" Linux 块邮件列表线程中询问了“为什么要进行更改”,并且还收到了reply from Keith

原来的轮询实现共享资源,生成 中断。这可以防止它尽可能快地运行,所以 现在使用专用的轮询队列。

【讨论】:

    【解决方案2】:

    您引用的这篇博客诞生于 4.x 内核时代,从那时起 io_uring IO 提交概念就出现在 5.x 内核时间范围内。

    请阅读有关 io_uring 的文档: https://kernel.dk/io_uring.pdf

    您应该测试 Optane 媒体驱动器: ioengine=io_uring

    如果您想使用 bio_poll,可以使用或不使用 hipri。

    以下是传递给 fio 的内容:

    [global]
    direct=1
    filename=/dev/nvme1n1
    log_avg_msec=500
    time_based
    percentile_list=1:5:10:20:30:40:50:60:70:80:90:95:99:99.5:99.9:99.95:99.99:99.999:99.9999
    
    
    [rand-read-4k-qd1]
    runtime=120
    bs=4K
    iodepth=1
    numjobs=1
    cpus_allowed=0
    ioengine=io_uring
    hipri
    rw=randread
    

    uname -a 5.4.1-1.el8.elrepo.x86_64

    CentOS 8

    玩得开心, 弗兰克·奥伯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-17
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多