none
Распределение загрузки виртуальных процессоров на физические RRS feed

  • Вопрос

  • Скорее не проблема а вопрос. Имеем сервер (HP ProLiant DL180 G6) с установленным Hyper-V Server. Всего физических ядер 8 (два четырехъядерных процессора).

    Виртуальные машины:

    1. 1С8 - 4 вирт. проц.
    2. TR - 4 вирт. проц.
    3. SQL1 - 4 вирт. проц.
    4. SQL2 - 1 вирт. проц.

    Проблема с сервером  SQL2. На нем SQL с процессорной лицензией, и по этому ему можно выделить только 1 вирт. проц.

    Периодически он перегружен по процессору:

    При этом загрузка ядер физических процессоров незначительна:

    Собственно вопрос: как распределяется загрузка виртуальных процессоров к физическим и почему физические не загружены при загрузке виртуальных?

    11 июня 2012 г. 7:41

Ответы

  • Почему: http://blogs.msdn.com/b/virtual_pc_guy/archive/2008/02/28/hyper-v-virtual-machine-cpu-usage-and-task-manager.aspx

    Не очень понятно с чем вы собираетесь "бороться". Заставить однопроцессорный SQL Server занять 100% одного из ядер (по данным счетчика)? Попробуйте уменьшить количество виртуальных процессоров так, чтобы оно сравнялось с количеством логических.  Вы можете попробовать выставить CPU Affinity: http://blogs.technet.com/b/tonyso/archive/2009/09/22/hyper-v-how-to-set-processor-affinity-in-hyper-v.aspx

    NOTE: Для любых действий касаемо повышения производительности одного параметра (периодически он перегружен по процессору) не то чтобы недостаточно, это вообще ни о чем сказать не может. В это время SQL Server может занимать всю доступную серверу память, а если она динамическая, то может начаться большая работа с диском (файл подкачки) и обрабатывая все это CPU показывает временные пики. Это может быть временное повышение латентности дисовой подсистемы и процессор мучительно обрабатывает очереди...  Я могу придумать еще вариантов... Если вы считаете, что ваш SQL Server не справляется - проблему нужно исследовать комплексно, по одним графикам CPU можно только погадать.


    http://OpsMgr.ru/

    • Помечено в качестве ответа Yuriy Lenchenkov 25 июня 2012 г. 12:55
    19 июня 2012 г. 9:21
    Отвечающий

Все ответы

  • Measure guest operating system processor utilization здесь:http://msdn.microsoft.com/en-us/library/cc768535(v=bts.10).aspx

    http://OpsMgr.ru/

    11 июня 2012 г. 8:06
    Отвечающий
  • Спасибо за ссылку. На сколько я понял, количество вирт.проц. определяет процент использования физических ядер. Тоесть, в моем случае, нужно у других ВМ уменьшить количество вирт.проц.?

    13 июня 2012 г. 8:58
  • Вот график по счетчикам Hyper-V Hypervisor Logical Processor(_Total)\% Total Run Time и Hyper-V Hypervisor Virtual Processor(_Total)\% Total Run Time. Синим - график проблемного (с одним вирт.проц.) сервера:

    Как видно по графику, при загрузке процессора ВМ загрузка физических процессоров растет, но незначительно.

    13 июня 2012 г. 10:29
  • На сколько я понял, согласно документа Measuring Processor Performance, виртуальные процессоры могут полностью грузить физические. 

    Проблема остается. Для тестирования оставил на сервере Hyper-V только одну виртуальную машину. Нагрузил процессор ВМ:

    Красный график показывает загрузку процессора виртуальной машины на 50%. При этом загрузка физических процессоров остается в районе 10%

    Почему так происходит и можно ли с этим бороться?

    19 июня 2012 г. 8:44
  • Почему: http://blogs.msdn.com/b/virtual_pc_guy/archive/2008/02/28/hyper-v-virtual-machine-cpu-usage-and-task-manager.aspx

    Не очень понятно с чем вы собираетесь "бороться". Заставить однопроцессорный SQL Server занять 100% одного из ядер (по данным счетчика)? Попробуйте уменьшить количество виртуальных процессоров так, чтобы оно сравнялось с количеством логических.  Вы можете попробовать выставить CPU Affinity: http://blogs.technet.com/b/tonyso/archive/2009/09/22/hyper-v-how-to-set-processor-affinity-in-hyper-v.aspx

    NOTE: Для любых действий касаемо повышения производительности одного параметра (периодически он перегружен по процессору) не то чтобы недостаточно, это вообще ни о чем сказать не может. В это время SQL Server может занимать всю доступную серверу память, а если она динамическая, то может начаться большая работа с диском (файл подкачки) и обрабатывая все это CPU показывает временные пики. Это может быть временное повышение латентности дисовой подсистемы и процессор мучительно обрабатывает очереди...  Я могу придумать еще вариантов... Если вы считаете, что ваш SQL Server не справляется - проблему нужно исследовать комплексно, по одним графикам CPU можно только погадать.


    http://OpsMgr.ru/

    • Помечено в качестве ответа Yuriy Lenchenkov 25 июня 2012 г. 12:55
    19 июня 2012 г. 9:21
    Отвечающий