我们正在非实时内核(CentOS 6)上运行实时进程,并且这种情况可能不会改变。
我们有一个流媒体视频应用程序,它需要一个定制的FPGA每次连续1.5小时连续提供约500 MB / s的PCIe流量。该应用程序运行良好-大多数时候。但是,在某些情况下,内核似乎一次最多只能停止响应对PCIe或内存请求的服务,最长可达500毫秒。这似乎是在来自另一个线程的突发文件IO期间发生的。我发现无法通过在主应用程序运行时仅从用户空间进行大量虚拟文件IO来尝试复制此问题。
有没有一种方法可以强制(模拟)Linux内核的全局“冻结”(特别是停止PCIe或所有DDR3内存访问等操作),以便我们可以重现此问题?
目前,我们已将最多10毫秒的缓冲实现到内部FPGA存储器中,但这还不够。我们可以缓冲到FPGA DDR3,然后转储到主机,但是我们需要一种在胁迫下测试此新功能的方法。
我们不希望内核永久冻结或锁定。我们希望能够设置时间间隔。
我正在寻找一些方法来/proc/sys/vm
临时编写魔术值,这些临时值会使系统虚拟爬网,然后在几百毫秒后恢复原状,但是寻找打破它的可能方法的数量并不适合像我这样的新手(https://www.kernel.org/doc/Documentation/sysctl/vm.txt)。也许有些numactl
魔术?