Данное PDF руководство написано в прошлом году и уже упоминалось в качестве ссылки к одной из новостей (http://www.opennet.me/opennews/art.shtml?num=3502), но в связи с приближением FreeBSD 5.3, явно заслуживает отдельного анонса.
Материал представляет собой доходчивое описание метода работы ULE планировщика задач (scheduler) доступного для FreeBSD 5.x. Кроме описания функционирования, затрагивается вопрос измерения производительности и сравнения с планировщиками 4BSD, Linux O(1) и Solaris. Итоги обобщаются в виде графиков.
O(1) (затраты на планирование распределения квантов времени, не зависят от текущего числа задач в системе) планировщик задач ULE призван обеспечить более оптимальное использование SMP на высоконагруженных системах (например, привязка процесса к одному и тому же CPU, предотвращение миграции на другой ("CPU affinity")), поддерживает SMT/NUMA (http://www.opennet.me/opennews/art.shtml?num=3586) архитектуры, для интерактивных приложений гарантируется наименьшее время реакции.URL: http://www.chesapeake.net/~jroberson/ULE.pdf
Новость: http://www.opennet.me/opennews/art.shtml?num=3886
Теоретически новый планировщик должен улучшить работу на SMP системах. Он даже делает это... иногда. Увы, для UP (однопроцессорных) систем старый 4BSD планировщик пока (справедиво для 5.2.1) ведет себя шустрее.Статья, конечно, нахваливает дизайн ULE, но в конце замечает, что оптимизация его будет производиться позже. Чтож, подождем 5.3. Я думаю в сентябре он появится :)
ставил SCHED_ULE и на несколько однопроцессорных и на
двухпроцовую тачку. Не заметил чтобы 4BSD справлялась
лучше со своими обязанностями на однопроцессорные (хотя
по ману сказано что и там будет прирост), но не заметил
улучшенной прыти и на двухпроцессорной. На ней стоит Apache2, Postfix, SQL, Squid, ISC-BIND и прочий
мелкий хлам.
ставил SCHED_ULE из 5.2.1 на однопроцессорную машину. Заметил неприятную вещь. Когда запускаешь нескольно длительных задач, например несколько make в разных портах, то тот make, который был запущен первым отбирает у остальных львиную долю процессорного времени. Пришлось от него отказаться в пользу 4BSD.
> Когда запускаешь нескольно длительных задач, например, несколько make
> в разных портах, то тот make, который был запущен первым,
> отбирает у остальных львиную долю процессорного времени.
И это правильно, ибо увеличивает производительность системы за счёт лучшего использования кэша (а постоянное переключение туда-сюда снижает процент попаданий в кэш).