Я работаю над некоторыми программами реального времени, которые требуют политики планирования mlock и FIFO для быстрых путей.
Я выполняю два процесса в Ubuntu 16.04 с 12 ядрами ЦП, и я назначил быстрые пути этихпроцессы на разных ядрах.
Процесс 1 запускается нормально и привязывает свой быстрый поток к ЦП и устанавливает для этого потока политику планирования FIFO.
Когда процесс 2 запускается до того, как его быстрый поток становитсясоздан, он пытается вызвать mlock.
Затем процесс 2 застрял.
Я подключил GDB к процессу 2, и стек вызовов, похоже, находится внутри функции mlock.
Если я удаляю настройку FIFO в процессе 1, оба процесса могут работать нормально.
Я подозреваю, что mlock пытается получить доступ к некоторым ресурсам ядра, полученным быстрым потоком процесса 1.
То есть он блокируется и ставится на неопределенное время ожидания.
Кто-нибудь точно знает, чего он ждет?
Я наблюдал эту проблему на двух симах.Локальные серверы IBM с Ubuntu.
Но на машине Supermicro с Redhat Linux такой проблемы не возникало.
Спасибо за любую подсказку или решение!