На виділеному сервері баз даних, скільки пам'яті зарезервувати для ОС?


38

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

Я усвідомлюю, що це, ймовірно, дещо відрізнятиметься в залежності від конкретної ОС, конкретного програмного забезпечення бази даних тощо. Але, оскільки пам'ять настільки важлива для продуктивності бази даних, я хочу, щоб база даних мала максимально розумний рівень пам'яті без голодування хост-операційної системи.

Так

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

Ви коли-небудь переробляли ці налаштування? Що вам сказало ваше профілювання?
jcolebrand

@jcole наразі нічого додати; ми, як правило, резервуємо 4 - 6 ГБ для ОС, яка є набагато консервативнішою, ніж я хотів би
Джефф Етвуд

Відповіді:


30

Якщо передбачити Windows та SQL Server ...

Є дві школи думки.

  1. Залиште 2-4 гіги для Windows (залежно від того, що встановлено крім SQL Server).
  2. Залиште 10% наявної пам’яті вільною. Коли ви отримуєте понад 64 Gigs, це стає божевільно великою кількістю пам'яті, яка залишається для ОС, яка, ймовірно, не знадобиться.

Особисто я в першій групі. Зазвичай Windows просто потребує 2-4 концерти, іноді до 6.


2
Одночасне використання 2 ОГ оперативної пам’яті для ОС.
jcolebrand

Я також згоден. Зазвичай я залишаю 2 Гб для ОС, а також забезпечую суміжний простір файлів сторінок. Звичайно, ваш пробіг може відрізнятися, і найкраще робити налаштування, контролювати продуктивність і в міру необхідності вносити обережні зміни.
Мт М

2
@matt правильно, але що конкретно найкраще контролювати, дивлячись на те, "чи голодую ОС у пам'яті?"
Джефф Етвуд

1
@Jeff Мій коментар був не таким точним, як мав би бути. Для пам'яті я, як правило, переглядаю такі лічильники продуктивності: Пам'ять: Сторінки / сек і Пам'ять: Доступні байти. Перевірте ці сторінки за додатковою інформацією: sql-server-performance.com/articles/audit / ... і technet.microsoft.com/en-us/library/cc966540.aspx ( в Зокрема , розділ пам'яті Вузькі)
Matt M

6
@Jeff Denny відповідь правильна, і для лічильників Perfmon дивіться пам'ять: Available Bytes. Якщо вона опуститься нижче, скажімо, 512 Мб, ви загрожуєте голодувати ОС. Однак також пам’ятайте про кеш файлів у 64-бітних системах, який все ще з’являється як доступний, навіть коли його немає: blogs.msdn.com/b/ntdebugging/archive/2007/11/27/…
Brent Ozar

16

Якщо припустити Linux, якщо ви вимкнете своп і ядро ​​продовжує вбивати ваш процес БД, оскільки він не має пам’яті, це хороший показник, що ви голодуєте ОС для пам’яті. Відступайте, поки це не припиниться. Пару сотень мегів зазвичай багато.


+1 для профілю профілю профілю ~ але, оскільки це Jeff askin, я припускаю, що це SQLServer і Windows точно;)
jcolebrand

1
@jcolebrand, проте, знаючи, що це @jeff, ви визнаєте, що він не сказав, тобто він навмисно залишив це відкритим для всіх платформ і баз даних.
ксенотеррацид

2
І, все ще знаючи, що це @jeff ... чому він не зможе навчитися переставати хвилюватися і любити Linux? ;-)
Юрген А. Ерхард

8

Тут ви можете використовувати досвід Amazon, що працює на тисячах серверів баз даних клієнтів: На сервісі баз даних Amazon Relational Database Service вони встановлюють пул буферного введення MySQL в 3/4 пам'яті системи, незалежно від обсягу пам’яті. Додайте до декількох мег за з'єднання для різних буферів запитів, і вони, ймовірно, залишають 10-20% пам'яті в ОС.


5

Ви повинні прочитати пам'ять Брента Озара . У нього є досить стандартні відповіді на те, чому вам слід шукати пам’ять і чому більше пам’яті дорівнює кращій продуктивності. Взагалі 4 Гб або 10% зарезервовано для ОС.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.