Debian 什么优先于SCHED_截止日期?
在对高速线程进行调度的实验中,我注意到有时会出现线程未调度的大周期(多毫秒)。我想知道在我使用的配置中,什么可以对调度程序执行此操作Debian 什么优先于SCHED_截止日期?,debian,real-time,porting,preempt-rt,sched-deadline,Debian,Real Time,Porting,Preempt Rt,Sched Deadline,在对高速线程进行调度的实验中,我注意到有时会出现线程未调度的大周期(多毫秒)。我想知道在我使用的配置中,什么可以对调度程序执行此操作 使用RT(i686)的最新Debian拉伸(稳定) 双核英特尔(2237MHz) PS2键盘和鼠标 CPU 1保留(通过grub) 用于将我的测试过程放入core 1的任务集 SMI禁用、速度步进禁用等(典型RT BIOS设置) USB端口未禁用,但未插入任何内容 禁用IRQ平衡 我确认CPU1上只有工人、定时器等。其他一切都在CPU0上 我的线程是SCHED
- 使用RT(i686)的最新Debian拉伸(稳定)
- 双核英特尔(2237MHz)
- PS2键盘和鼠标
- CPU 1保留(通过grub)
- 用于将我的测试过程放入core 1的任务集
- SMI禁用、速度步进禁用等(典型RT BIOS设置)
- USB端口未禁用,但未插入任何内容
- 禁用IRQ平衡
谢谢
SCHED_DEADLINE
任务的优先级高于具有不同优先级的所有其他用户级任务(即SCHED_RR
,SCHED_FIFO
,SCHED_other
)
请注意,自内核4.16以来,可以通过使用SCHED_FLAG\u DL_overflow
和SIGXCPU
信号上的用户级处理程序来检查溢出(请参阅)
如果您需要检查CPU在做什么,这可能是最好的方法。您使用的是什么图形驱动程序(假设它有图形芯片组)?请与lsmod联系。通常情况下,图形驱动程序可以执行操作(我认为它们与DMA相关),在硬件级别将事情锁定数毫秒。我看到的文档表明,英特尔的驱动程序也是如此,而Nvidia的专有驱动程序和nouveau也是如此。根据我的经验,VESA驱动程序没有这个问题。您是否有一些简单的io,例如gpio或带有调制解调器控制的串行端口;基本上你可以把示波器连接起来?检测内核,以便ipi处理程序在其开始时断言一些信号,并在其结束时反断言它。如果您有一些这样的信号可用,那么还有其他一些点值得放置类似的括号。找到导致问题的路径(ipi为5美元)后,用相同的方法细分路径。最终你会将它减少到一个旋转锁,可能是在alloc/free上。我会检查图形驱动程序并禁用它。我变得懒惰,安装了带有默认选项的操作系统。我一直在使用并行端口观看线程的激活和睡眠。还有许多其他基于pci和isa的gpio可供选择(pc/104+)。听起来我今天有事情要做!谢谢你的建议。禁用了i915,情况只略有改善。直到我将noacpi添加到内核参数中,事情才开始稳定下来。我不确定这会产生什么影响,但经过一些调整后,我发现即使在磁盘io和网络io负载相当的情况下,我也可以获得稳定的3333hz。谢谢你的ipi线索!这让我在没有noacpi的情况下,检查CPU的频率是否在变化。禁用SpeedStep可能不会禁用ACPI P状态(我不记得它们现在是否相同)。P状态转换可能需要时间