우리는 비 실시간 커널 (CentOS 6)에서 실시간 프로세스를 실행하고 있으며 아마도 변경되지 않을 것입니다.
우리는 한 번에 1.5 시간 동안 커스텀 FPGA로부터 약 500MB / s의 PCIe 트래픽을 지속적으로 요구하는 스트리밍 비디오 어플리케이션을 가지고 있습니다. 이 응용 프로그램은 대부분 잘 작동합니다. 그러나 커널이 한 번에 최대 500 밀리 초 동안 PCIe 또는 메모리 요청 서비스에 응답하지 않는 상황이 발생했습니다. 다른 스레드에서 파열 된 파일 IO 동안 발생하는 것으로 보입니다. 주 응용 프로그램이 실행되는 동안 사용자 공간에서 많은 더미 파일 IO를 수행 하여이 문제를 복제하는 것이 불가능하다는 것을 알았습니다.
이 문제를 재현 할 수 있도록 Linux 커널의 글로벌 "고정"(특히 PCIe 또는 모든 DDR3 메모리 액세스 중지 등)을 강제 (시뮬레이션)하는 방법이 있습니까?
현재 내부 FPGA 메모리에 최대 10 밀리 초의 버퍼링을 구현했지만 충분하지 않습니다. FPGA DDR3로 버퍼링 한 다음 호스트로 덤프 할 수 있지만이 새로운 기능을 협박하는 방법을 테스트해야합니다.
우리는 커널이 멈추거나 영구적으로 멈추는 것을 원하지 않습니다. 시간 간격을 설정하는 기능을 원합니다.
나는 마법의 가치를 /proc/sys/vm
일시적으로 작성 하여 시스템을 사실상 크롤링하고 몇 백 밀리 초 후에 되돌릴 수 있는 줄을 따라 무언가를 찾고 있지만, 그것을 깨뜨릴 수있는 가능한 방법을 찾는 것은 나와 같은 초보자가 아닙니다 ( https://www.kernel.org/doc/Documentation/sysctl/vm.txt ). 아마 numactl
마술일까요?