Мы запускаем процесс в реальном времени на ядре не в реальном времени (CentOS 6), и это, вероятно, не изменится.
У нас есть приложение для потокового видео, которое требует около 500 МБ / с трафика PCIe от пользовательской FPGA непрерывно в течение 1,5 часов за один раз. Приложение работает довольно хорошо - большую часть времени. Однако у нас были ситуации, когда казалось, что ядро просто перестало отвечать на запросы PCIe или памяти на 500 миллисекунд за раз. Это происходит во время пакетного ввода-вывода файла из другого потока. Я обнаружил, что невозможно попытаться воспроизвести эту проблему, просто выполняя много пустых операций ввода-вывода файлов из пространства пользователя во время работы основного приложения.
Есть ли способ принудительно (симулировать) глобальное «замораживание» ядра Linux (в частности, остановка PCIe или всех обращений к памяти DDR3 или что-то в этом роде), чтобы мы могли воспроизвести эту проблему?
Мы встроили буферизацию до 10 миллисекунд прямо сейчас во внутреннюю память FPGA, но этого недостаточно. Мы можем выполнить буферизацию на FPGA DDR3 и затем выполнить дамп на хост, но нам нужен метод для тестирования этой новой функции под принуждением.
Мы не хотим, чтобы ядро постоянно зависало или зависало. Мы хотели бы возможность установить временной интервал.
Я ищу что-то вроде записи магических значений для /proc/sys/vm
временного, что делает систему практически ползающей, а затем возвращается через несколько сотен миллисекунд, но я смотрю на количество возможных способов сломать это не для новичка, как я ( https://www.kernel.org/doc/Documentation/sysctl/vm.txt ). Может быть, немного numactl
магии?