Недавно наш школьный округ обновил несколько серверов с версии 2005 до 2016 года и с физических серверов на серверы виртуальных машин.
Наша команда по инфраструктуре представила виртуальные серверы для установки SQL Server с одним ядром.
Я пытаюсь объяснить руководителю этого отдела, что SQL Server «ненавидит» то, что находится на одном ядре, и он хочет видеть «доказательства». Ни одна из представленных мной данных не удовлетворила его потребность в доказательствах, и поэтому он попросил несколько статей о том, почему VM SQL Server не будет эффективно работать на одном ядре.
Какие статьи вы используете для этого?
Любая помощь для меня в моем случае будет принята с благодарностью!
sql-server
sql-server-2016
vmware
дебютантка
источник
источник
Ответы:
Любой не-SQL Server-процесс, который потребляет процессор, может привести к тому, что весь SQL-сервер будет полностью непригодным для использования.
Например, Центр обновления Windows остановит SQL Server во время распаковки сборок .Net.
Любой процесс Антивируса, даже если он настроен на исключение файлов данных и папок SQL Server, может привести к тому, что SQL Server перестает отвечать на запросы при сканировании файлов и распаковке обновленных файлов определений вирусов.
Если у вас установлено какое-либо программное обеспечение для управления, такое как IBM Tivoli Server Monitor, и оно решит использовать 100% одного ядра, вы, вероятно, не сможете ничего сделать, кроме холодного выключения компьютера. Не спрашивайте меня, почему я это поднимаю.
Я мог бы продолжить, но достаточно сказать, что любой сервер с одним ядром просто требует проблем с производительностью и управляемостью. Убедитесь, что любой компьютер с одним ядром сегодня считается непригодным для использования. Черт, мой телефон имеет 8 ядер.
Пока вы это делаете, убедите парня по виртуализации предоставить каждому SQL Server разумное резервирование памяти, которое гарантирует, что память SQL Server не будет выгружена из основной памяти хоста на диск.
Для серьезных SQL-серверов, размещенных на VMware, вы должны настроить VMware в соответствии с Руководством по архитектуре SQL Server на основе VMware .
Это действительно сводится к тому, что одноядерная виртуальная машина может когда-либо запускать только один поток в любой момент времени. Виртуализация не является «серебряной пулей» для такой ситуации «одно ядро на поток».
Приведенные выше пункты учитывают, что Windows NT (кодовая база 1993 года, на которой построены все современные версии Windows) использует упреждающую многозадачность. Упреждающая многозадачность позволяет операционным системам выполнять многозадачность путем принудительного переключения контекста по регулярному расписанию. Даже с вытесняющей многозадачностью сервер с одним ядром будет по-прежнему страдать от очень низкой производительности, если одна задача решит использовать как можно больше ЦП, так как O / S даст этой задаче столько процессорного времени, сколько можно сэкономить все еще позволяя запускать задачи с более высоким приоритетом, заставляя процессор работать до 100% Если SQL Server работает во время загрузки ЦП на 100%, объем ЦП SQL Server будет настолько уменьшен, что станет очень заметным. В приведенных выше сценариях я изложил, я нескажем, машина (или даже SQL Server) полностью «остановится» или «умрет»; это было бы просто неверно. Тем не менее, машина может стать настолько занятой, что для всех целей машина станет непригодной для использования. Добавление второго ядра, хотя и не является панацеей, снижает вероятность того, что машина станет полностью безразличной. Каждое дополнительное ядро означает, что другой поток может работать на 100% ЦП, не приводя к невозможности использования компьютера.
источник
Я должен был доказать то же самое раньше. Наконец, наша команда по планированию мощностей дала понять, что наши базы данных были практически непригодны для резервного копирования.
Как администратор базы данных, ваш самый большой страх должен быть потеря данных. Если вы не можете с уверенностью запускать резервные копии без сбоя или сбоя, это большая проблема. Запустите несколько тестов, чтобы убедиться, что на производительность влияет резервное копирование, а затем объясните, что с более чем одним ядром проблема должна исчезнуть.
источник
Чтобы убедительно доказать, что вашему серверу требуется более одного процессора, вам необходимо предоставить информацию о рабочей нагрузке и запросах, выполняемых на сервере. Например, если он имеет только одну базу данных размером менее 100 МБ и все запросы очень просты и эффективны, иметь больше ядер может быть практически бесполезно.
Я бы порекомендовал вам начать собирать планы запросов, которые идут параллельно, и время, необходимое для их выполнения. Это продемонстрирует, что рабочая нагрузка, выполняемая в системе, выиграет от наличия нескольких процессоров.
Если он уже работает в среде виртуальных машин, вам также необходимо получить данные о производительности использования ЦП. Если вы покажете, что максимальная загрузка ЦП составляет 100% в течение длительных периодов времени, это также послужит хорошим доказательством того, что системе требуется больше ЦП.
источник
NonParallelPlanReason="EstimatedDOPIsOne"
.Возможно, вам следует спросить их, почему они настаивают на том, что было бы неплохо назначить только одно ядро для каждой виртуальной машины SQL Server.
Затем, в зависимости от их ответа, вы можете попытаться убедить их на основе пункта 3.3.2 по этой ссылке:
SQLServer-на-VMware, передовой обычаях
Если этот элемент не является причиной для команды по инфраструктуре выделять только 1 ядро на ВМ, то, возможно, оборудование тратится впустую.
источник