Archive for February 23rd, 2008

linux 2.6.24 и CFS

Saturday, February 23rd, 2008

Никак не доберусь попробовать CFS - новый планировщик задач из 2.6.23/2.6.24 ядер. Читал не раз, что теоретически и практически он напорядок лучше. Нормальное описание механизма работы CFS нашёл здесь.
 
Из статьи выделю следующее:

Настройки реального времени

Для настройки планировщика в реальном времени введен ряд параметров sysctls (имена, заканчивающиеся на ns, являются единицами измерения в наносекундах), в том числе:

  • sched_latency_ns: целевая задержка вытеснения для задач, связанных с процессором;
  • sched_batch_wakeup_granularity_ns: степень детальности активизации для SCHED_BATCH;
  • sched_wakeup_granularity_ns: степень детальности активизации для SCHED_OTHER;
  • sched_compat_yield: производительность приложений, сильно зависящих от поведения sched_yield(), может варьировать из-за того, что CFS меняет этот параметр, поэтому рекомендуется включить опцию sysctls;
  • sched_child_runs_first: дочерний элемент назначается следующим после fork; это поведение по умолчанию. Если установлено значение 0, то эстафета передаётся родителю;
  • sched_min_granularity_ns: минимальная степень детальности вытеснения для задач, связанных с процессором;
  • sched_features: содержит информацию о различных отладочных параметрах;
  • sched_stat_granularity_ns: степень детальности сбора статистики планировщика;
  •  
    Ниже приведены некоторые типовые значения параметров реального времени системы:

    [root@dodge ~]# sysctl -A|grep "sched" | grep -v "domain"
    kernel.sched_min_granularity_ns = 4000000
    kernel.sched_latency_ns = 40000000
    kernel.sched_wakeup_granularity_ns = 2000000
    kernel.sched_batch_wakeup_granularity_ns = 25000000
    kernel.sched_stat_granularity_ns = 0
    kernel.sched_runtime_limit_ns = 40000000
    kernel.sched_child_runs_first = 1
    kernel.sched_features = 29
    kernel.sched_compat_yield = 0
    [root@dodge ~]#