| Spis treści | Poprzedni | Następny | Nowy algorytm szeregowania ULE

FreeBSD

Aktualnie w systemie FreeBSD wprowadzany jest nowy algorytm ULE. W wydaniu 5.1 użytkownik może ustawić czy ma być używany stary algorytm czy algorytm ULE w trakcie bootowania systemu.

Stary algorytm 4BSD bazuje na tradycyjnym UNIX-owym algorytmie z 4.3BSD. Dodano do niego obsługę dwóch nowych klas procesów - czasu rzeczywistego i idle oraz wsparcie dla wieloprocesorowości (SMP).

Pomysły stojące za algorytmem ULE są takie same jak w nowym algorytmie linuksa. Oto kilka jego cech:

  1. Kolejki procesów
    Każdy procesor ma strukturę kseq w której trzymane są informacje o procesach związanych z procesorem. Struktura kseq zawiera trzy listy. Dwie - ksq_curr i ksq_next - odpowiadają linuksowym activce i expired. Trzecia przeznaczona jest dla procesów idle.
    struct kseq {
      struct runq     ksq_idle;                 /* Queue of IDLE threads. */
      struct runq     ksq_timeshare[2];         /* Run queues for !IDLE. */
      struct runq     *ksq_next;                /* Next timeshare queue. */
      struct runq     *ksq_curr;                /* Current queue. */
      int             ksq_loads[KSEQ_NCLASS];   /* Load for each class */
      int             ksq_load;                 /* Aggregate load. */
      short           ksq_nice[PRIO_TOTAL + 1]; /* KSEs in each nice bin. */
      short           ksq_nicemin;              /* Least nice. */
    #ifdef SMP
      unsigned int    ksq_rslices;    /* Slices on run queue */
    #endif
    };
    

    Dla porównania struct runqueue z linux-a.

  2. Określanie interaktywności procesu

    Oparte na spostrzeżeniu że procesy interaktywne dużo czasu spędzają śpiąc i szybko się wykonują. Dwa liczniki - w jednym pamiętamy ile proces śpi, a w drugim ile czasu się wykonuje. Jeśli wartość sumy liczników przekroczy określoną wartość obydwa są zmniejszane. Interaktywność procesu określana jest na podstawie wzajemnej relacji tych liczników.

  3. Priorytet dynamiczny procesu

    Określany na podstawie wartości nice i wskaźników interaktywności procesu.