SMP і ядро Linux

Коли тільки з'явився Linux 2.0, підтримка SMP складалася з основної системи блокування, яке упорядковувало доступ в системі. Пізніше невеликий прогрес в підтримці SMP був, але тільки з ядром 2.6 нарешті проявилася уся сила SMP.

Ядро 2.6 представило новий 0(1) планувальник, який включав кращу підтримку для систем SMP. Ключовою була можливість балансувати навантаження на усе доступні CPU, по змозі уникаючи перемикання процесів між процесорами для ефективнішого використання кеша. Що стосується продуктивності кеша, згадаєте з Малюнка 4, що коли завдання взаємодіє з одним CPU, переміщення її на інший вимагає залучення кеша. Це збільшує час очікування доступу до пам'яті завдання, поки її дані знаходяться в кеші нового CPU.

Ядро 2.6 зберігає пару runqueue для кожного процесора (минулий і активний runqueue). Кожен runqueue підтримує 140 пріоритетів, з яких 100 використовується для завдань в реальному часі, а інші 40 для призначених для користувача завдань. Завданням даються відрізки часу для виконання, а коли вони використовують свій час, вони переміщаються з активного runqueue в минулий. Таким чином здійснюється рівноправний доступ до CPU для усіх завдань (блокування тільки окремих CPU).

З чергою завдань на кожному CPU робота може бути збалансована, даючи зважене навантаження усіх CPU в системі. Кожні 200 мілісекунд планувальник виконує балансування завантаження, щоб перерозподілити завдання і зберегти баланс в комплексі процесорів

Контрольні запитання

  1. Опишіть слабозв'язану багатопроцесорна архітектуру
  2. Опишіть сильносвязанную архітектуру багатопроцесорної обробки
  3. Опишіть зв'язок SMP і ядра Linux

Література

Електроний ресурс http://www.ibm.com/developerworks/ru/library/l-linux-smp/