Исследование возможностей Linux по выполнению задач реального времени на многоядерных CPU
На однопроцессорной сиcтеме, в каждый момент времени в режиме реального времени может выполняться только одна задача. Остальные, хоть и имеют приоритет реального времени, всё равно ожидают своей очереди к процессору. Эксперимент проведенный организацией OSADL показал 1, что несколько параллельных задач, при условии, что количество задач не превышает количество ядер процессора, могу работать в режиме реального времени, не мешая, не вытесняя и не разделяя ресурсов. Для планирования задач может использоваться, например функции sched_setaffinity().
На приведённой рядом гистограмме можно наблюдать почти линейные функции задержек на каждом ядре, что говорит о раздельной работе процессов. При использовании процессора Nehalem i7, минимальной была задержка в 17 микросекунд, максимальной 37 микросекунд. Конфигурация прерываний использовалась по умолчанию, для балансировки нагрузки использовался стандартные IRQ-balancer.
Ожидается, что в будущем прирост производительности микропроцессоров будет основан на их многоядерной топологии. И такие компьютерные платы идеально подходят для приложений реального времени, так как только они смогут обеспечить истинный параллелизм в режиме реального времени. Естественно, если операционная система такие режимы поддерживает, а поддерживает в настоящее время данную возможность только Linux.