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