Я пытаюсь устранить некоторые проблемы с производительностью с помощью pthreads в Linux и думаю, что sched_getcpu() может мне врёт. Он сообщает о постоянном ЦП для каждого потока, тогда как эксперименты по профилированию, похоже, предполагают, что потоки фактически мигрируют с одного ядра на другое в течение своего жизненного цикла.
Интересно, sched_cpu()
просто сообщает о первом процессоре, на котором запущен поток, и не обращает внимания на миграцию потока? Кто-нибудь еще заметил это или видел какие-либо доказательства того, что возвращаемое значение sched_getcpu()
может измениться? Если это невозможно, существуют ли какие-либо другие методы отслеживания текущего процессора (возможно, используйте CPUID
?)?