Windows 7 на багатоядерних процесорах
В одній зі своїх попередніх статей я писав, що в міру вдосконалення багатоядерних процесорів і збільшення кількості ядер Windows 7 в кінцевому рахунку перевищить Windows XP з точки зору валової швидкості обробки додатків за рахунок високої масштабованості ядра. Однак я припускав, що це станеться лише у віддаленому майбутньому - добре, якщо не до епохи масового поширення 16- і 32-ядерних процесорів. Але тепер виявляється, що я помилився рази в три-чотири: момент, коли вдосконалене ядро Windows 7 в поєднанні з багатоядерними процесорами здобуде перемогу над простим, грубим підходом, який реалізований в ядрі Windows XP, вже досягнуто.
Простіше кажучи, Windows 7 функціонує набагато швидше, ніж Windows XP, при обробці ресурсоємних багатозадачних навантажень на сучасному багатоядерному обладнанні. З урахуванням нинішніх тенденцій проектування комп'ютерів і найближчих планів по розробці багатоядерних процесорів, цієї переваги має бути достатньо, щоб спонукати навіть найбільших дурнів перейти нарешті на Windows 7.
Відразу кілька факторів дають Windows 7 перевага на багатоядерних процесорах. Зокрема, поява мультипроцесорних систем на базі технології нерівномірного доступу до пам'яті (Non-Uniform Memory Access, NUMA) - наприклад, HP Z800 - дозволяє реалізувати високий обчислювальний потенціал в малому формфакторі. Поєднання багатоядерних процесорів і декількох процесорних сокетів дає можливість створювати персональні комп'ютери з високою масштабованість, яка раніше була доступна тільки для серверів вищого рівня. При цьому вартість подібних систем виявляється куди менше, ніж при використанні традиційних дискретних процесорів для досягнення такої ж обчислювальної потужності.
Інший фактор - відмова від звичайної системної шини (Front Side Bus), яка протягом багатьох років була ключовим компонентом архітектури всіх персональних комп'ютерів і робочих станцій на базі процесорів Intel. Замість неї тепер використовується шина Quick Path Interconnect (QPI) - відповідь Intel на AMD HyperTransport - яка передбачає розміщення контролера пам'яті на одному кристалі з центральним процесором, що забезпечує останньому безпосередній доступ до фізичної пам'яті. В результаті значно прискорюється доступ до локальної пам'яті для кожного ядра процесора, а в поєднанні з кешем третього рівня це сприяє підвищенню продуктивності при перерозподілі навантаження між декількома процесорами.
NUMA і QPI значно вдосконалили архітектуру Intel, але всі ці нововведення були б марні при відсутності відповідної підтримки з боку операційної системи. Саме тому всебічна оптимізація ядра Windows 7 для роботи з багатоядерними процесорами має таке величезне значення: без цього користувачі просто не змогли б отримати доступ до підвищеної продуктивності, яка забезпечується останніми розробками Intel і AMD. Іншими словами, щоб витягти максимум користі з вдосконалених процесорів, потрібна вдосконалена операційна система.
Windows XP - чудова операційна система. Вона заслужила свою репутацію майже десятиріччям безперебійної роботи. Однак на тлі складної системи підтримки багатоядерних процесорів, реалізованої в Windows 7, Windows XP виглядає досить блідо. Ядро Windows XP використовує концепцію симетричною багатопроцесорної обробки (Symmetric Multiprocessing, SMP), яка була розроблена ще за часів Windows NT, і це обмежує можливості системи при роботі на сучасному обладнанні з архітектурою NUMA. Це як в старому анекдоті про майстра, у якого з інструментів - тільки молоток: Windows XP сприймає будь-які багатопроцесорні завдання як цвяхи, які треба забити.
Windows 7, з іншого боку, уважна до нюансів. Наприклад, операційна система розуміє різницю між кількома дискретними процесорами і множинними ядрами в рамках одного процесора. Крім того, Windows 7 враховує основоположні принципи архітектури NUMA - зокрема, те, що група ядер одного процесора виступає в якості функціонального вузла, і те, що спорідненість процесорів може безпосередньо впливати на швидкодію додатків в багатопроцесорної середовищі. У сукупності це дозволяє ядру Windows 7 більш ефективно управляти апаратним забезпеченням, з огляду на логічну і фізичну структуру процесів при розподілі процесів і виділення пам'яті.
Зрозуміло, практика важливіше теорії. І хоча Microsoft з самого початку обіцяв, що Windows 7 буде використовувати можливості сучасних багатоядерних систем куди ефективніше, ніж Windows XP, підтвердити цю заяву виявилося не так легко. Проблема в тому, що лише далеко не всі сучасні ПК мають тим поєднанням ядер і міжпроцесорних з'єднань по типу NUMA, яке необхідно Windows 7 для успішної роботи на багатоядерних системах. За результатами замірів, які я робив для своєї попередньої статті, виявилося, що Windows 7 сильно відстає від XP на будь-якому обладнанні - від настільного комп'ютера з двоядерним процесором до робочої станції з чотирьохядерним ЦП. Саме тому я і вирішив, що потенціал нової операційної системи вдасться повною мірою реалізувати тільки на 16- або навіть 32-ядерних машинах.
На щастя, тепер я розумію, що це не так. Windows 7 здатна ефективно працювати не тільки на комп'ютерах майбутнього покоління, а й на сучасних масових (хоча і дорогих) системах. Нові виміри, зроблені на згаданій вище робочої станції HP Z800 (8 ядер, 16 потоків), продемонстрували, що Windows 7 має нищівної перевага в порівнянні з Windows XP при обробці змішаних багатопоточних навантажень, включаючи обслуговування бази даних SQL (на 47% швидше), виконання процесів MAPI (на 178% швидше) і відтворення мультимедіа.
Що стосується масштабованості, то перехід від одного чотириядерного процесора до восьми ядер, розподіленим між двома процесорами, забезпечує в Windows 7 куди більш істотний процентний приріст продуктивності, ніж в Windows XP. Швидкодія бази даних SQL підвищилося в Windows XP на 72%, а в Windows 7 - на цілих 200%. Обробка MAPI прискорилася в Windows XP лише на 4%, якими можна знехтувати, зате в Windows 7 - майже на 360%.
В цілому, для Windows 7 це велика перемога, яку я приписую поліпшеній підтримці багатоядерних процесорів, одночасної багатопоточності (Simultaneous Multithreading, SMT, або Hyper-Threading) і NUMA. Те, що Windows 7 вдалося досягти таких високих результатів на восьмиядерний рівні - не просто обігнати Windows XP, а залишити її далеко позаду - виявилося для мене приємним сюрпризом і змусило мене ще більше поважати команду розробників ядра Windows. Хлопці дійсно розуміють, як вичавити максимум з апаратної платформи.
Зрозуміло, просунуті користувачі багатопроцесорних робочих станцій можуть вже зараз отримати величезні переваги при переході на Windows 7, проте список тих, кому знадобляться нові можливості операційної системи, цим не обмежується. Персональні комп'ютери і ноутбуки на базі процесорів Intel Core i7 нинішнього покоління теж здатні отримати значний приріст продуктивності завдяки поліпшеному перерозподілу навантаження між кодом і кешем, а також цілої низки інших багатоядерних удосконалень, реалізованих в Windows 7. І хоча розширені можливості масштабування Windows 7 поки не дають їй переваги над Windows XP на дво- і чотириядерних ПК середньої потужності, вони, тим не менш, дозволяють компенсувати підвищене навантаження на обладнання, яку створює але а операційна система.
Справа в тому, що всі спокусливі переваги Windows 7 - підвищена безпека, керованість, зручність - стають можливі за рахунок збільшення навантаження на процесор з боку фонових служб, що відповідають за реалізацію цих нових функцій. Тому максимально ефективне використання пропускної здатності процесора набуває величезне значення в міру того, як збільшується кількість програмних прошарків, що відокремлюють обладнання від оператора.
Але як би там не було, в кінцевому підсумку безсумнівно одне: Windows 7 - або, принаймні, що лежить в її основі архітектура ядра - це майбутнє персональних комп'ютерів на базі Intel. І це залишиться фактом, навіть якщо Microsoft вирішить випатрати Windows і викинути всі верстви понад NT Executive (свого роду екстремальна версія MinWin). Редмондская гігантові вдалося створити в Windows 7 надійну, масштабовану основу для операційної системи з підтримкою багатоядерних процесорів, і вона ще стане в нагоді компанії при розробці майбутніх версій свого флагманського продукту.