Тактова частота процесора порівняно з кількістю базових процесорів - більший ГГц або більше ядер для SQL Server?


30

Ми починаємо надавати набір фізичних серверів для віртуального кластеру вузлів SQL Server 2016 у VMware. Ми будемо використовувати ліцензії Enterprise Edition.

Ми плануємо встановити 6 вузлів, але є дебати щодо того, який ідеальний спосіб забезпечити фізичні сервери щодо тактової швидкості процесора порівняно з базовим числом процесора.

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

Наприклад, чи є двоядерний 8-ядерний, фізичний сервер 3,2 ГГц (16 ядер) більш переважний для двоядерного 16-ядерного, 2,6 ГГц-сервера (32 ядра)?

Хтось натрапив на білий документ, який ще більше заглиблюється в цю тему?


Яка ваша стурбованість, ефективність роботи в рефераті чи ліцензуванні та економічна ефективність?
Еван Керролл

Відповіді:


40

Загальне правило полягає в тому, щоб число ядер було якомога нижчим, а швидкість процесора - максимально високою. Математика ліцензування для цього доводить, що ~ 7500 доларів США за ядро ​​для Дорогого Видання.

Купівля правильного обладнання може окупитися за рахунок зменшення витрат на ліцензування. Див. Вибір процесора для SQL Server від Glenn Berry. Це чудовий ресурс про те, як вибрати процесор для SQL Server.

Після того, як ви врахуєте структуру ліцензування сервера SQL Server, має сенс завжди працювати з найшвидшою доступною швидкістю процесора, незалежно від типу навантаження, будь то OLTP чи аналітики. Максимально швидка швидкість роботи сердечника ніколи не буде проблемою. Збільшити кількість основних лічильників, як потрібно, але ніколи цього не роблячи, зменшуючи швидкість ядра.

Іншими словами, не думайте, що процесори 16 x 2,2 ГГц такі ж, як 8 x 4,5 ГГц. Економія витрат на використання процесорів 2,2 ГГц над процесорами 4,5 ГГц, ймовірно, буде максимум приблизно 10 000 доларів США (для типової двох процесорних машин на базі Xeon). Стрибки з 8 ядер до 16 ядер за допомогою SQL Server Enterprise Edition, ймовірно, коштують понад 60 000 доларів США за плату за ліцензування. Іншими словами, ви можете зекономити 10 000 доларів на апаратних витратах, але втратите додаткові 50 000 доларів при ліцензуванні.

Якщо ви вирішили, що вам потрібно багато м'язів паралельної обробки, і ви вирішили, що вам потрібно 32 ядра для виконання задачі, то, якщо ви будете з найшвидшими ядрами, ви виплатите дивіденди за скорочений час обробки. Ніхто вас не винуватить у цьому.

Сказавши все це, якщо вибір є одним процесором або декількома процесорами, завжди йдіть з більш ніж одним . Запуск SQL Server (або будь-якої СУБД) на одному процесорі може спричинити всілякі проблеми, оскільки можливості для одночасних операцій значно обмежені.


11

Удерживать на удержании

Хоча аспекти продуктивності та ліцензування цікаві, вони не є єдиним аспектом навантаження.

Одне, що може вплинути на вибір процесора - це робочі потоки.

Робочі нитки?

Да приятель! Це те, що ваш SQL Server буде використовувати для запуску ваших запитів і виконувати всі фонові речі, які йому потрібно зробити, щоб підтримувати речі у формі.

Коли у вас закінчуються робочі нитки, ви натискаєте THREADPOOL чекає

РІЗНИК?

РІЗНИК. Це одне з найгучніших очікувань, які ви можете мати на своєму сервері, а також RESOURCE_SEMAPHORE та RESOURCE_SEMAPHORE_QUERY_COMPILE . Але це очікування пам'яті, і це питання процесора.

Тож повернемось до того, чому це віггітське пробудження.

Ось як SQL Server обчислює робочі потоки :

Горіхи

Зверніть увагу, як подвоєне число ядер не подвоюється Макс робочих ниток, і ви отримуєте те саме число з 1 ядром, як у 4 ядер? Рівняння:512 + ((logical CPUs - 4) * 16)

Це прикро, тому що, коли число ядер збільшується, тактова частота, як правило, носить покоління чи два назад.

Горіхи

Огляд будь-якої недавньої лінійки мікросхем Intel покаже подібну тенденцію.

Як дізнатися, скільки ниток мені потрібно?

Від цього багато що залежатиме:

  • Кількість користувачів
  • Кількість паралельних запитів
  • Кількість послідовних запитів
  • Кількість баз даних та синхронізації даних (Mirroring, AG, резервні копії для доставки журналу)
  • Якщо ви залишите MAXDOP та CTFP за замовчуванням

Якщо сьогодні у вас не вичерпається, ви, мабуть, добре.

Але як дізнатися, чи є ти?

Є хороші запитання, і є великі запитання, і лемме вам щось скаже, це ВЕЛИКИЙ ПИТАННЯ .

THREADPOOL може проявлятись як проблеми з підключенням , і ви можете побачити повідомлення в журналі помилок про неможливість нерестування потоку .

Ви також можете переглянути статистику очікування вашого сервера, використовуючи безкоштовний інструмент, наприклад sp_Blitz або sp_BlitzFirst (повне розкриття інформації, я сприяю цьому проекту).

EXEC sp_Blitz

Горіхи

EXEC sp_BlitzFirst @SinceStartup = 1

Горіхи

Не можу я просто збільшити Макс робочих ниток?

Збільшення МВТ може призвести до збільшення SOS_SCHEDULER_YIELDочікування.

Це ще не кінець світу, але думайте про це, як додати бунчу, що кричить дітям, до класу вчителя.

Раптом кожному малюкові буде важче привернути увагу.

Коли процес вичерпує свій квант 4 мс , потенційно перед ним буде більше потоків, які чекають, щоб увійти в процесор.

Виступ може відчувати приблизно те саме.

Як я можу використовувати менше робочих ниток?

Ви жорстокий [іменник] [іменник], це робітники з сім’ями для підтримки! Іпотечні! Мрії!

Але добре, треба дотримуватися нижнього рядка. Ти начальник.

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

Якщо у вас є питання, як їх встановити, перейдіть сюди:

Після цього ваша робота стає набагато жорсткішою. Ви повинні зрозуміти, що використовує всі ці теми. Іноді це можна зробити, переглянувши статистику очікування.

Більш конкретно, якщо у вас велика чека на паралелізм ( CXPACKET) І велике очікування на блокування ( LCK_), ви, можливо, зіткнетеся з довгими блокуючими ланцюжками, що включають паралельні запити.

Ви знаєте, що смердить? Хоча всі ці паралельні запити чекають, щоб отримати свої блокування, вони не повертають виділені нитки назад.

Ви майже можете почути, що чотири основні VM, які ваш адміністратор запевнив, вам більше ніж достатньо для будь-якого робочого навантаження, задихаючись повітря, так?

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

Сподіваюся, це допомагає!


2

Відповідь вікі спільноти :

Довге і коротке це: Більшість навантажень для SQL Server - це OLTP, який виграє від більшої тактової швидкості, оскільки це послідовна операція.

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


-3

Відповідь зводиться до цього: це залежить від вашого випадку використання.

  • Чи обробляєте ви декілька малих запитів одночасно чи кілька великих запитів?
  • Чи оптимізована програма, яку ви запускаєте, для багатоядерних?

Наприклад, у мене чотириядерний комп'ютер, але компілятор ESP8266 використовує лише 25% мого процесора, оскільки він розроблений лише для використання одного ядра. Якби у мене було 1 швидке ядро, то це було б більш оптимально.


6
Привіт і ласкаво просимо на dba.stackexchange.com ! Ваша відповідь справедлива для дуже загального випадку, але вона не фокусується на випадках SQL або бази даних, про які запитує ОП. Спробуйте покращити її, заглибившись у цю справу! :)
xDaizu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.