LINUX.ORG.RU
ФорумAdmin

KVM большая нагрузка на процессор

 


0

1

Добрый день, господа. Гуру Linux и виртуализации себя не считаю, поэтому буду рад людбому совету и помощи.

Ситуация такова. Мощности хоста составляли 1 CPU Intel(R) Xeon(R) CPU E5-2403 0 @ 1.80GHz - 4 ядра и 32 GB ОЗУ, ОС CentOS 6.3. Мне достался данный сервер с поднятыми тремя ВМ на KVM:
1. Linux 2 CPU + 2Gb RAM
2. Linux 1 CPU + 4Gb RAM
3. WinServer 2008 4 CPU + 24 Gb RAM

При этом Виндовый сервер работает как терминальный сервер. Ввиду большой загруженности его загрузка была почти всегда 100%, было решено поставить на хост дополнительный процессор и увеличить ОЗУ до 80Gb.

Теперь вопрос первый. Имея доступ по ssh я выключил ВМ и используя команду

virsh edit <имя ВМ>
изменил количество выделенных ядер на ВМ. Такое редактирование конфигурации правильное?

Вопрос второй. После изменения конфигурации ВМ проходил пара недель и появляются жалобы на тормоза теперь уже хоста. Тут конечно есть мой косяк ибо я с дуру отдал все 8 ядер CPU на эту ВМ. При просмотре top на хосте вижу:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
45473 qemu      20   0 62.5g  60g 5624 R 581.0 76.5   1456:33 qemu-kvm
 2793 qemu      20   0 2737m 1.3g 5580 S  9.9  1.6   2849:13 qemu-kvm

Вот эти 581% CPU это нормально?! Я понял свою ошибку с выделением количества ядер и изменил конфигурацию вновь - выделив 6 из 8 ядер на ВМ. В итоге при спокойной работе ВМ - загрузка CPU на хосте не более 50%, при загрузке юзерами ВМ опять под 400-500%. При этом со слов админа Винды нагрузка самой Винды до 100% не доходит. Доступа к Винде нет.

Что я делаю не так? Как мне кажется есть прямая связь нагрузки на проц и активности сетевого трафика ВМ. Прошу помочь советом.

Вот конфиг злосчастной ВМ:

<domain type='kvm'>
  <name>E</name>
  <uuid>63898d7d-f2ca-5530-c273-360c0542e62c</uuid>
  <memory unit='KiB'>64421888</memory>
  <currentMemory unit='KiB'>64421888</currentMemory> 
 <vcpu placement='static'>6</vcpu>
  <os>
    <type arch='x86_64' machine='rhel6.5.0'>hvm</type>
    <boot dev='hd'/>
    <boot dev='cdrom'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>SandyBridge</model>
    <vendor>Intel</vendor>
    <feature policy='require' name='pbe'/>
    <feature policy='require' name='tm2'/>
    <feature policy='require' name='est'/>
    <feature policy='require' name='vmx'/>
    <feature policy='require' name='osxsave'/>
    <feature policy='require' name='smx'/>
    <feature policy='require' name='ss'/>
    <feature policy='require' name='ds'/>
    <feature policy='require' name='vme'/>
    <feature policy='require' name='dtes64'/>
    <feature policy='require' name='ht'/>
    <feature policy='require' name='dca'/>
    <feature policy='require' name='pcid'/>
    <feature policy='require' name='tm'/>
    <feature policy='require' name='pdcm'/>
    <feature policy='require' name='pdpe1gb'/>
    <feature policy='require' name='ds_cpl'/>
    <feature policy='require' name='xtpr'/>
    <feature policy='require' name='acpi'/>
    <feature policy='require' name='monitor'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/var/lib/libvirt/images/E.img'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/ru_windows_server_2008_r2.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:88:f3:d8'/>
      <source bridge='br0'/>
      <model type='e1000'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <interface type='bridge'>
      <mac address='52:54:00:04:a8:b1'/>
      <source bridge='br1'/>
      <model type='e1000'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes'/>
    <sound model='ich6'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </sound>
    <video>
      <model type='vga' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </memballoon>
  </devices>
</domain>

кстати, вопрос немного не в тему, но в чем профит использования IDE вместо православного virtio для дисковой подсистемы?

ktk ★★★★ ()
Ответ на: комментарий от ktk

Тоже обращал на это внимание... Конфигурацию настраивал подрядчик - тут я ничего сказать не могу.

Думаете в этом глюки?

Ved_mak ()
Ответ на: комментарий от Ved_mak

Нет, дело не в этом, хотя virtio — более предпочтительный вариант.

Black_Shadow ★★★★★ ()
Последнее исправление: Black_Shadow (всего исправлений: 1)
Ответ на: комментарий от Ved_mak

При установке Windows в виртуальную машину в virt-manager, по дефолту, стоит ide для накопителей, потому что в этом случае венда знает, как работать с ide, и всё ставится без установки дополнительных дров. В случае выбора virtio, интсалер венды не увидит дисков, пока не подсунешь ему дрова от virtio. Те люди, которые тебе настраивали виртуалки, видимо, не хотели совершать лишних телодвижений. А может, даже не задумывались об этом.

Black_Shadow ★★★★★ ()
Последнее исправление: Black_Shadow (всего исправлений: 1)

Я бы на твоём месте посмотрел реальную нагрузку внутри виртуалки. Может, она действительно высокая.

Black_Shadow ★★★★★ ()
Ответ на: комментарий от Black_Shadow

и желательно не только на CPU, но и на IO тоже.

ktk ★★★★ ()
Ответ на: комментарий от Black_Shadow

Ок. Видимо действительно придется смотреть нагрузку самому.

Но: если даже винда загружена на 100%, то остается еще 2 ядра хоста свободными - почему же так тяжело процу на хосте? (две ВМ на Линухе почти не грузят хост)

Что еще можно посмотреть или куда смотреть чтобы понять причину?

Ved_mak ()
Ответ на: комментарий от Black_Shadow

При установке Windows в виртуальную машину в virt-manager, по дефолту, стоит ide для накопителей,

в конфиге

   <type arch='x86_64' machine='rhel6.5.0'>hvm</type> 
так что ставилось изначально не как венда :)

ktk ★★★★ ()
Ответ на: комментарий от ktk

Подскажите: такая нагрузка на данную конфигурацию норм?

iostat -p 100
Linux 2.6.32-431.17.1.sp6.x86_64 (*.int)        05/03/2017     _x86_64_ (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          16.06    0.00   11.04    0.08    0.00   72.83

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              16.90       412.72       786.18  560073420 1066871287
sda1              0.00         0.02         0.00      23904          6
sda2              0.00         0.00         0.00       2960          0
sda3             16.90       412.70       786.18  560045292 1066871281
dm-0              0.01         0.10         0.05     134234      73200
sdb               0.00         0.00         0.00       4994          0
sdb1              0.00         0.00         0.00       4298          0
dm-1              0.05         0.00         0.40       2306     542984
dm-2             17.30       411.91       785.63  558970938 1066126809
dm-3              0.00         0.00         0.00       1690         24
dm-4              0.03         0.69         0.08     933138     112240
dm-5              0.00         0.00         0.01       2154      16024
Ved_mak ()
Ответ на: комментарий от Ved_mak

Что еще можно посмотреть или куда смотреть чтобы понять причину?

Можно ещё попробовать запустить yum update. Я, вроде, как-то давно натыкался на похожие проблемы, которые решались апдейтом.

Black_Shadow ★★★★★ ()
Ответ на: комментарий от Black_Shadow

Хм... В общем вектор понятен - видимо корень всех проблем в том что изначально конфиг не под винду.

Black_Shadow, ktk - Благодарю за помощь!

Ved_mak ()

суть в том - что если система в виртуализации использует чтото внешнее - то она это использует через основную систему - нагружая ее
если бы твоя винда просто считала про себя что то - она бы использовала почти столько процессора сколько ей и дали
а если она интенсивно общается с миром (да еще может если не через оптимизированные интерфейсы) то нагрузка на корневую будет сильно больше

ae1234 ★★ ()
Ответ на: комментарий от int13h

Весь день мониторю зависимость загрузки CPU и io - прямая зависимость...

Ved_mak ()
Ответ на: комментарий от int13h

высокая

в тестах по ссылкам написано что virtio показывает лучше производительность(что вполне логично да), так почему же тогда с твоих слов следует что у IDE лучше производительность?

ktk ★★★★ ()

диск IDE, сетевые - e1000, сначала все перетащить на virtio, а потом уже проверять нагрузку.

dyasny ★★★★★ ()
Ответ на: комментарий от int13h

virtio быстрее.

естественно, а на мой вопрос что заставляет людей выбирать IDE, ты ответил высокая скорость.

не надо так.

PS. для ssd лучше virtio-scsi использовать, тогда даже discard будет работать.

ktk ★★★★ ()
Ответ на: комментарий от ktk

значит мимо ответил. явно virtio.

Для чего можно использовать: Можно использовать ide для инсталляция, к примеру win, а потом уже менять тип диска на virtio.

int13h ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.