ТОП 10:

Продуктивність окремих застосувань



Розглянемо, яким чином впливає наявність кількох процесорів на час виконання програмного коду.

Багатопроцесорність дає змогу поліпшити характеристики програми тільки тоді, коли в ній наявний паралелізм (як було зазначено в розділі 3.2, за умов бага­топроцесорності може бути реалізовано справжній паралелізм, коли окремі части­ни програми виконуються одночасно кількома процесорами). При цьому для того щоб ОС мала можливість організувати такий паралелізм, код програми має бути багатопотоковим. Якщо програма не використовує багатопотоковість, її виконан­ня у багатопроцесорній системі може спричинити зниження продуктивності че­рез очікування на додаткових блокуваннях і міграцію між процесорами.

Крім того, навіть якщо програма є багатопотоковою, максимальне поліпшен­ня її продуктивності обмежене відповідно до закону Амдала

 

де S - виграш у швидкості виконання; T- загальний обсяг коду, Tпосл - обсяг ко­ду, що не може бути виконаний паралельно, n- кількість процесорів.

 

Планування у багатопроцесорних системах

Головною особливістю планування у багатопроцесорних системах є його двови-мірність. Крім прийняття рішення про те, який потік потрібно поставити на вико­нання наступним, необхідно визначити, на якому процесорі він має виконуватися. Крім того, важливо виділяти взаємозалежні потоки, що їх доцільно виконувати паралельно на кількох процесорах, аби їм було простіше взаємодіяти один із од­ним. У цьому розділі розглянемо деякі підходи до організації планування, які враховують ці фактори, а у наступному - важливе поняття спорідненості проце­сора, що впливає на організацію планування у багатопроцесорних системах.

 

Планування з розподілом часу

Найпростішим способом організації багатопроцесорного планування незалежних потоків є використання структури даних для готових потоків, спільної для всіх процесорів. Прикладом такої структури може бути багаторівнева черга, яка вико­ристовується під час планування із пріоритетами.

Коли потік на одному з процесорів завершує роботу або призупиняється, цей процесор починає виконувати код планувальника ОС. Планувальник при цьому блокує чергу готових потоків, ставить на виконання потік із найвищим пріорите­том і вилучає його керуючий блок із черги. Наступний за пріоритетом потік поч­не виконуватися на наступному звільненому процесорі і т. д. Такий підхід назива­ють плануванням із розподілом часу, оскільки, як і у традиційних системах із розподілом часу, щоразу приймають рішення щодо використання одного проце­сора і виконання одного потоку.

Головним недоліком цього підходу є високий ступінь паралелізму доступу до черги готових потоків, що може стати «вузьким місцем» системи. Є ймовірність того, що більшу частину часу потоки проводитимуть в очікуванні на м'ютексі, який захищає чергу. Крім того, немає можливості уникнути перемикання контек­сту в разі призупинення потоку і подальшої його міграції на інший процесор.

 

Планування з розподілом простору

Планування з розподілом часу не пристосоване до організації виконання потоків, пов'язаних між собою, оскільки кожен потік розглядають окремо. Для організації виконання пов'язаних потоків необхідно одночасно розглядати кілька процесорів і розподіляти по них набір потоків. Цей підхід називають плануванням із розподі­лом простору.

Найефективнішим алгоритмом планування із розподілом простору є бригадне планування (gang scheduling). Цей алгоритм працює так.

1. Пов'язані потоки (наприклад, потоки одного процесу) одночасно запускають на виконання на максимально можливій кількості процесорів. Такі потоки становлять бригаду (gang).

2. Усі потоки бригади виконуються впродовж однакового для всіх кванта часу.

3. Після вичерпання кванта часу відбувається повне перепланування для всіх процесорів. Виконання починають потоки іншої бригади.

Якщо кількість потоків бригади менша, ніж кількість процесорів, виконання мо­жуть почати потоки кількох бригад, якщо більша - виконується частина потоків бригади, а інші будуть заплановані до виконання упродовж наступного кванта часу.

Робота цього алгоритму показана на рис. 20.1. По вертикалі відкладено мо­менти часу, по горизонталі — процесори. Буквами позначено процеси (бригади), цифрами індексу - номери потоків.

 

 

  CPU1 CPU2 CPU3 CPU4 CPU5
Ті А, А2 А3 А4 As
12 в, В2 Вз с, С2
ТЗ в. °2 D3 °< Еі
Т4 Е2 Е3 Е4   Е6
Т5 А, А2 А3 А4 As

Рис.20.1. Бригадне планування

Спорідненість процесора

Під спорідненістю процесора (CPU affinity) розуміють імовірність того, що потік буде запланований для виконання на процесорі, що виконував код цього потоку минулого разу [31, 79]. Висока спорідненість означає малу ймовірність міграції потоку між процесорами під час його виконання.

 







Последнее изменение этой страницы: 2017-02-06; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.29.190 (0.007 с.)