Коли краще використовувати дані, пов’язані з процесорами

Використання даних, повязаних з процесорами, дозволяє отримати ряд переваг По-перше, це ослаблення вимог щодо використання блокувань Залежно від семантики доступу до даних, які повязані з процесорами, може виявитися, що блокування взагалі не потрібні Слід памятати, що правило Тільки один процесор може звертатися до цих даних є всього лише рекомендацією для програміста Необхідно спеціально гарантувати, що кожен процесор працює тільки зі своїми даними Ніщо не може перешкодити порушенню цього правила

По-друге, дані, повязані з процесорами, дозволяють істотно змен-

шити недостовірність даних, що зберігаються в кеші Це відбувається тому, що процесори підтримують свої кеші в синхронізованому стані Якщо один процесор починає працювати з даними, які знаходяться в кеші іншого процесора, то перший процесор повинен оновити вміст свого кеша Постійне анулювання знаходяться в кеші даних, іменоване перевантаженням кеша (cash thrashing), істотно знижує продуктивність системи Використання даних, повязаних з процесорами, дозволяє наблизити ефективність роботи з кешем до максимально можливої, тому що в ідеалі кожен процесор працює тільки зі своїми даними

Отже, використання даних, які повязані з процесорами, часто позбавляє від необхідності використання блокувань (або знижує вимоги, повязані з блокуваннями) Єдина вимога, предявляється до цих даних для безпечної роботи, – це заборона витіснення коду, який працює в режимі ядра Заборона витіснення – значно ефективніша операція в порівнянні з використанням блокувань, а існуючі інтерфейси виконують заборона і дозвіл витіснення автоматично Дані, повязані з процесорами, можна легко використовувати як у контексті переривання, так і в контексті процесу Проте слід звернути увагу, що при використанні даних, які повязані з поточним процесором, не можна переходити в стан очікування {інакше виконання може бути продовжено на іншому процесорі)

Зараз немає суворої необхідності де-небудь використовувати новий інтерфейс роботи з даними, які повязані з процесорами Цілком можна організувати таку роботу вручну (на підставі масиву, як було розказано раніше), якщо при цьому забороняється витіснення коду в режимі ядра Проте новий інтерфейс більш простий у використанні і, можливо, дозволить в майбутньому виконувати додаткові оптимізації Якщо ви збираєтеся використовувати в своєму коді дані, повязані з процесорами, то краще використовувати новий інтерфейс Єдиний недолік нового інтерфейсу – він не сумісний з більш ранніми версіями ядер

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*