Contact me: hankecnc@gmail.com

“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927

推推 grbl 3年前 (2023-01-30) 225次浏览
打开
tinic 打开了这个问题 2020 年 8 月 18 日 · 17条评论
打开

注释

“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927
贡献者
  1. 在最近的基于 Debian 的发行版上安装 5.6.x rt-kernel
  2. 安装并运行 linuxcnc (git 2.9.0~pre0 HEAD) + Mesa 7i96 卡 + 基本步进器配置

这是我期望发生的事情:

没有问题

这是发生了什么:

在随机时间间隔内,我收到错误:“hm2/hm2.7i96.0:读取完成时出错。” 这指向读取超时。使用 Realtek 以太网控制器,最多可能需要 10 分钟才能超时。正如预期的那样,Linuxcnc 无法从此错误中恢复。

解决方法:在 BIOS 中将 # of CPU cores 设置为 1(单 CPU)。禁用超线程。

在此之前它工作正常:

安装并启动 4.19.x rt-kernel,即使启用所有 CPU 内核 + 超线程也没有问题。我没有尝试追踪注入点,可能在 4.19.x 和 5.6.x 内核之间的任何地方。

有关我的硬件和软件的信息:

  • 我使用 Ubuntu 18.04.5 作为基础系统。

  • 其中一个系统中的以太网控制器:

01:00.0 以太网控制器:Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express 千兆以太网控制器 (rev 06)
02:00.0 以太网控制器:Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express 千兆以太网控制器(修订版 06)

英特尔以太网控制器的表现似乎更糟,即您几乎立即超时。

  • 以下内核可用于重现(我也是从源代码构建的,没有区别):

http://ftp.debian.org/debian/pool/main/l/linux-signed-amd64/linux-image-5.6.0-0.bpo.2-rt-amd64_5.6.14-2~bpo10+1_amd64。债务

  • 工作内核

http://ftp.debian.org/debian/pool/main/l/linux-signed-amd64/linux-image-4.19.0-10-rt-amd64_4.19.132-1_amd64.deb

  • 中央处理器:

英特尔(R) 赛扬(R) CPU J1900 @ 1.99GHz

也在 i7 上重现。

  • lspci:

00:00.0 主桥:英特尔公司凌动处理器 Z36xxx/Z37xxx 系列 SoC 事务寄存器(版本 0e)
00:02.0 VGA 兼容控制器:英特尔公司凌动处理器 Z36xxx/Z37xxx 系列图形和显示器(版本 0e)
00:13.0 SATA 控制器:英特尔公司凌动处理器 E3800 系列 SATA AHCI 控制器(版本 0e)
00:14.0 USB 控制器:英特尔公司凌动处理器 Z36xxx/Z37xxx、赛扬 N2000 系列 USB xHCI(版本 0e)
00:1a.0 加密控制器:英特尔公司凌动处理器 Z36xxx/Z37xxx Series Trusted Execution Engine (rev 0e)
00:1b.0 音频设备:Intel Corporation Atom Processor Z36xxx/Z37xxx Series High Definition Audio Controller (rev 0e)
00:1c.0 PCI 桥:英特尔公司凌动处理器 E3800 系列 PCI Express 根端口 1(版本 0e)
00:1c.1 PCI 桥:英特尔公司凌动处理器 E3800 系列 PCI Express 根端口 2(版本 0e)
00:1c。 2 PCI 桥:英特尔公司凌动处理器 E3800 系列 PCI Express 根端口 3(版本 0e)
00:1c.3 PCI 桥:英特尔公司凌动处理器 E3800 系列 PCI Express 根端口 4(版本 0e)
00:1f.0 ISA 桥:英特尔公司凌动处理器 Z36xxx/Z37xxx 系列电源控制单元(版本 0e)
00:1f.3 SMBus:英特尔公司凌动处理器 E3800 系列 SMBus 控制器(版本 0e)
01:00.0 以太网控制器:瑞昱半导体有限公司 RTL8111/8168 /8411 PCI Express 千兆位以太网控制器(版本 06)
02:00.0 以太网控制器:Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
03:00.0 PCI 桥:Intel Corporation 82801 PCI Bridge (rev 41)

“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927
合作者

这可能是未来一个有趣的问题,但是当前是否有任何发行版使用 5.6 内核?
我们目前期望 LinuxCNC 可以在从 2.6.32(是的,真的)到 4.19 的内核上工作
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?MinimumSoftwareVersions

“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927
贡献者作者

根据我的记忆,同样的问题发生在 5.4.x 内核上,当我在上周最终追踪到内核之前与它进行了一段时间的斗争。5.4.x 内核是 Ubuntu 18.04.5 LTS 和 Ubuntu 20.04 LTS 中的默认内核。由于 Ubuntu 相当受欢迎,我认为很多人会遇到这种情况。至少让 bug 保持打开状态以便人们可以找到它会很好。

“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927

我正在运行带有内核 5.6.x-rt 的 Linux Mint 19.3,我遇到了类似的问题。对我来说问题是“IRQ 合并”。

1.) 安装“ethtool”
cnc@LinuxCNC:~$ sudo apt-get install ethtool

2.) 验证合并设置(应该全部读作“0”/rx-usecs 通常不是“0”)
cnc@LinuxCNC:~$ ip a

cnc@LinuxCNC:~$ ethtool -c enp3s0f0 enp3s0f0
的合并参数:
自适应 RX:关闭 TX:关闭
stats-block-usecs:0
采样间隔:0
pkt-rate-low:0
pkt-rate-high:0

rx-usecs: 0
rx-frames: 0
rx-usecs-irq: 0
rx-frames-irq: 0

tx-usecs:0
tx-frames:0
tx-usecs-irq:0
tx-frames-irq:0

rx-usecs-low: 0
rx-frame-low: 0
tx-usecs-low: 0
tx-frame-low: 0

rx-usecs-high: 0
rx-frame-high: 0
tx-usecs-high: 0
tx-frame-high: 0

3.) 将设置更改为“0”
cnc@LinuxCNC:~$ sudo ethtool -C enp3s0f0 rx-usecs 0

4.) 再次测试

“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927
贡献者作者

谢谢 thomam04!不幸的是,你的建议对我没有影响,因为 rx-usecs-irq 已经是 0。看来 r8169 驱动程序一开始就不支持这个。此外,设置任何参数都会产生默认值,例如,我不能将 rx-frames 更改为 0,这不会发生。我的输出:

turo@lathev2:~$ ethtool -c enp1s0 enp1s0
的合并参数:
自适应 RX:关闭 TX:关闭
stats-block-usecs:0
采样间隔:0
pkt-rate-low:0
pkt-rate-high:0

rx-usecs: 0
rx-frames: 1
rx-usecs-irq: 0
rx-frames-irq: 0

tx-usecs:0
tx-frames:1
tx-usecs-irq:0
tx-frames-irq:0

rx-usecs-low: 0
rx-frame-low: 0
tx-usecs-low: 0
tx-frame-low: 0

rx-usecs-high: 0
rx-frame-high: 0
tx-usecs-high: 0
tx-frame-high: 0

我还尝试过禁用 irqbalance 并尝试设置 irq 亲和力以在一个 CPU 上独占该以太网端口,但无济于事。

“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927 tinic 更改了标题 仅在 5.6.x rt-kernels 上出现“hm2/hm2.7i96.0:完成读取时出错” “hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) 2020 年 8 月 20 日
“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927
贡献者作者

延迟测试的结果是否重要:

“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927

“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927
合作者

我的总体印象是较新的内核会在相当长的时间内遭受延迟问题。我不希望 5.6 至少可以使用一年。
我在 5.4 上遇到了类似的问题(以太网延迟突发超过超时
阈值导致读取超时),但最新的 5.4 (5.4.54-rt33) 似乎还不错,
至少我已经让它运行 7I96 并将其用作我的普通桌面大约一个
星期没有问题。请注意,在默认设置下,连续 5 个超时错误将
导致“错误完成读取”错误,并且默认超时为伺服周期的 80%。
可以通过将 io_error 参数设置为 false 从该错误中恢复
(您可能还必须重置看门狗并重新启动任何串行端口)

8条相似评论
“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927
合作者

我在几台运行 2.9 的 PC 上遇到过同样的问题。当前的这个有 5.18-3-rt-amd64 内核。

john@cave:~$ uname -a
Linux cave 5.18.0-3-rt-amd64 #1 SMP PREEMPT_RT Debian 5.18.14-1 (2022-07-23) x86_64 GNU/Linux

执行过程 lscpu
架构:x86_64
CPU 操作模式:32 位、64 位
地址大小:物理 48 位,虚拟 48 位
字节顺序:Little Endian
CPU:12
在线 CPU 列表:0-11
供应商 ID:AuthenticAMD
型号名称:AMD Ryzen 5 5600X 6 核处理器
CPU 系列:25
型号:33
每个内核线程:
每个插槽 2 个内核:6 个
插槽:1 个
步进: 2个
频率提升:启用
CPU 缩放 MHz:95%
CPU 最大 MHz:4650.2920
CPU 最小 MHz:2200.0000
BogoMIPS:7400.43
“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927

“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927
合作者

如果 PC 有 Intel MAC,你是否禁用了 IRQ 合并?

通常 5.x 内核的网络延迟比 4.x 或更早的内核要差得多
(至少在某些系统上是这样)

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

5人参加
“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927“hm2/hm2.7i96.0:错误完成读取”仅在 5.6.x rt-kernels 上(更新:和 5.4.x 内核) #927

喜欢 (0)