Предотвращение незначительных сбоев страниц в реальном времени в Linux

Мне нужно, чтобы процесс выполнялся в режиме реального времени, насколько это возможно.

Вся связь осуществляется через разделяемую память — файлы с отображением памяти — вообще без системных вызовов — используется занятое ожидание в разделяемой памяти.

Процесс выполняется с приоритетом реального времени, и вся память блокируется с помощью mlockall(MCL_CURRENT|MCL_FUTURE), что завершается успешно, и у процесса достаточно ulimits, чтобы заблокировать всю память.

Когда я запускаю его на нем perf stat -p PID, я все еще получаю количество незначительных ошибок страниц.

Я тестировал это как с привязкой к процессу, так и без нее.

Вопрос:

Можно ли их вообще устранить - даже мелкие ошибки страниц?


person Artyom    schedule 02.12.2012    source источник


Ответы (2)


Я решил эту проблему, переключившись с файлов с отображением памяти на разделяемую память POSIX shm_open + блокировку памяти.

person Artyom    schedule 03.12.2012

Если я правильно понимаю вопрос, полностью избежать незначительных ошибок страницы невозможно. В большинстве современных ОС, включая Linux, ОС не загружает все сегменты текста и данных в память при запуске программ. Он выделяет внутренние структуры данных, и страницы, по сути, ошибаются, когда нужны текст и данные. Это приводит к тому, что физическая память становится доступной для процесса, заменяя страницу из резервного хранилища. Таким образом, можно было бы избежать незначительной ошибки страницы без доступа к резервному хранилищу, что может быть невозможно.

person Sunil Bojanapally    schedule 03.12.2012
comment
Я говорю о незначительной ошибке страницы, которая вызвана промахами TLB - person Artyom; 03.12.2012
comment
Промах TLB обрабатывается аппаратно в большинстве современных процессоров. Он должен быть невидим для ОС; только замедляет некоторые обращения к памяти и увеличивает счетчик мониторинга производительности оборудования (DTLB_LOAD_MISSES.ANY в Intel). - person osgx; 19.12.2012
comment
Как я могу уменьшить второстепенную ошибку страницы? У меня много памяти, но меня все еще преследует небольшая проблема с ошибкой страницы, из-за которой загрузка ЦП слишком велика для выполнения других задач. - person Liu Weibo; 06.12.2017