У меня есть критический поток, который обрабатывает данные в тесном цикле. Он привязан к аффинности и предназначен для высокопроизводительной обработки. Это не делает динамические распределения.
У меня есть другой поток, который работает на другом ядре, который не выполняет никакой критически важной работы, но, тем не менее, выполняет динамическое распределение. Это также связано с близостью.
Повлияет ли присутствие этого другого потока, выполняющего динамическое распределение, на мой критический поток?
Определенно да.
Не только для косвенного эффекта макета памяти и L3, но также немедленного эффекта время от времени.
когда таНос вызывается, он пытается повторно использовать то, что уже было выделено и освобождено, но иногда приходится расширять пространство памяти процесса, и делает это, вызывая ММАП, или же битый.
Я не уверен на 100% битый, но ММАП определенно лишает законной силы TLB, поэтому следует ожидать более медленной обработки ошибок страницы сразу после этих вызовов.
Если вы работаете в Linux или * BSD, вы можете попробовать поиграться с кодом ядра, чтобы не делать недействительными во всех случаях, но не ожидайте, что это будет просто.