为了在我的 Debian Jessie 上运行 LinuxCNC,我做了:
- 使用 apt-get/aptitude 通过 Jessie 向后移植安装内核 4.9 RT。
- 重新启动我的计算机并检查
uname -a
包含PREEMPT RT
- 通过添加存储库并使用来安装 LinuxCNC
apt-get
之后,启动 linuxCNC 向导(通过正常点击菜单)进行抖动测试。我目前的结果非常糟糕,大约140us。
我想知道有没有要启用的 PREEMPTION 配置,或者具体方法运行一个应用程序以获得更精确的实时性?
还有,我怎么能检查进程是否实时运行?
注:我的电脑是intel E6600
答案1
我想知道是否有任何 PREEMPTION 配置可以启用,或者运行应用程序以获得更精确的实时性的特定方式?
请参阅以下内容:
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?延迟测试
链接至此:
https://forum.linuxcnc.org/18-computer/25927-reducing-latency-on-multicore-pc-s-success?limitstart=0
(来自上面的页面:)
Linux相关的改变:
- 编辑 /etc/default/grub 并添加内核选项:“isolcpus=1 acpi_irq_nobalance noirqbalance”(之后调用 update-grub)
- 确保没有安装“irqbalance”软件,如果有则删除(Ubuntu 软件中心 -> 已安装的软件 -> 搜索 irqbalance -> 删除)
- 将 upstart 脚本“irq-affinity.conf”添加到 /etc/init(请参阅附件,它将把 irq 处理移至第一个核心)
- 将 sh 脚本 set-irq-affinity 和 watchirqs 添加到 /usr/local/sbin (首先允许手动设置关联掩码,第二个打开一个控制台窗口,实时显示如何将 irq 调度到不同的内核 -> 所有数字 irq但 0 应该由 cpu0 处理)
不过,您可能必须为 Système D 调整脚本......
快速测试一下:您还可以使用 提高优先级nice -n <x>
,其中<x>
是所需的优先级。
另外,我如何检查该进程是否实时运行?
看这个问题:Linux 中的实时进程调度