Мы используем Ubuntu 12.04 со следующими параметрами:
- Dell R910
- Ядро 3.2.0-25-generic # 40-Ubuntu SMP x86_64 x86_64 x86_64 GNU / Linux
- kvm 1: 84 + dfsg-0ubuntu16 + 1.0 + нормы + 0ubuntu13
- qemu-kvm 1.0 + noroms-0ubuntu13
- qemu-common 1.0 + noroms-0ubuntu13
- qemu-kvm 1.0 + noroms-0ubuntu13
- 4 x процессора Intel (R) Xeon (R) E7- 4870 с частотой 2,40 ГГц (каждое с 10 физическими ядрами, с поддержкой HT и Intel VT)
- Гости Windows в настоящее время не имеют VirtIO, но это скоро изменится
На этом компьютере у нас работает несколько гостей Windows, один из которых - Windows 2003 32-разрядная, другая - Windows 2008 (64-разрядная). В настоящее время мы боремся с проблемами производительности и играем с моделями процессоров.
Мы обычно используем "qemu-system-x86_64 для нашего 32-битного гостя Windows, например:
/usr/bin/qemu-system-x86_64 -S -M pc-1.0 -cpu qemu32 -enable-kvm -m 4096 -smp 4,sockets=4,cores=1,threads=1 [...]
Производительность этого гостя оказалась немного низкой. Мы еще не запускали никаких тестов, но допустим, что копирование большого количества данных (файлов) внутри ВМ из одного каталога в другой происходит намного быстрее, когда мы переключаем модель ЦП с -cpu qemu32 на -cpu Nehalem ». Файлы, для копирования которых потребовалось около 2: 40ч, теперь копируйте в течение 40 минут. Конечно, это не качественный тест, и есть много возможностей для более профессиональных попыток. Но это четкий показатель того, что выбор правильной модели процессора может сильно повлиять на производительность гостя.
Теперь мне стало любопытно и побежал:
qemu-x86_64 -cpu ?
x86 [n270]
x86 [athlon]
x86 [pentium3]
x86 [pentium2]
x86 [pentium]
x86 [486]
x86 [coreduo]
x86 [kvm32]
x86 [qemu32]
x86 [kvm64]
x86 [core2duo]
x86 [phenom]
x86 [qemu64]
А также:
kvm -cpu ?model
x86 Opteron_G3 AMD Opteron 23xx (Gen 3 Class Opteron)
x86 Opteron_G2 AMD Opteron 22xx (Gen 2 Class Opteron)
x86 Opteron_G1 AMD Opteron 240 (Gen 1 Class Opteron)
x86 Nehalem Intel Core i7 9xx (Nehalem Class Core i7)
x86 Penryn Intel Core 2 Duo P9xxx (Penryn Class Core 2)
x86 Conroe Intel Celeron_4x0 (Conroe/Merom Class Core 2)
x86 [n270] Intel(R) Atom(TM) CPU N270 @ 1.60GHz
x86 [athlon] QEMU Virtual CPU version 1.0
x86 [pentium3]
x86 [pentium2]
x86 [pentium]
x86 [486]
x86 [coreduo] Genuine Intel(R) CPU T2600 @ 2.16GHz
x86 [kvm32] Common 32-bit KVM processor
x86 [qemu32] QEMU Virtual CPU version 1.0
x86 [kvm64] Common KVM processor
x86 [core2duo] Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
x86 [phenom] AMD Phenom(tm) 9550 Quad-Core Processor
x86 [qemu64] QEMU Virtual CPU version 1.0
Со всеми этими разными версиями сложно догадаться. "Nehalem", кажется, самый эффективный в этом списке. Теперь интересно, как определить, какая модель процессора лучше подходит для моего гостя? Просматривая интернет, я нашел следующие ресурсы:
- http://rwmj.wordpress.com/2010/10/08/32-or-64-bit-virtual-cpu-in-kvm/
- http://www.linux-kvm.org/page/Tuning_KVM
Когда я правильно читаю эти сайты, они утверждают, что «-cpu host» может принести наилучшую производительность. У меня пока нет проблем с миграцией, так как оба KVM-хоста оснащены одинаково (абсолютно одинаковое оборудование).
Итак, что рекомендуют опытные администраторы KVM? Есть ли золотое правило или даже матрица, типа «эта модель является лучшей для этой гостевой ОС»?
Приношу свои извинения, если я смог найти эту информацию самостоятельно - я провел различные поиски в Google и просмотрел множество веб-сайтов. Я не смог найти то, что отвечает на мой вопрос.
Ответы:
Это довольно просто на самом деле. Для однородных кластеров и настроек одного хоста используйте
host
опцию. Для смешанных кластеров используйте наименьшую доступную версию процессора, поэтому, если один хост - Penryn, а другой Nehalem - используйте Penryn на обоих.Если вы используете RHEV или oVirt, это уже встроено. У VMWare это называется «EVC» и позиционирует его как огромную функцию.
Возвращаясь к производительности, вам определенно понадобится virtio везде, где вы можете его поставить. И если вы по-прежнему сталкиваетесь с узкими местами в производительности, их обычно можно устранить в каждом конкретном случае, в зависимости от того, где они возникают.
[offtop] На ваш выбор дистрибутива я уже прокомментировал в другой теме [/ offtop]
источник
Не теряйте больше времени с настройкой чего-либо.
Установите драйверы VirtIO и возвращайтесь. Разница настолько велика, что любое улучшение, которое вы можете найти сейчас, не будет иметь никакого значения для virtIO.
Просто пример с одним из наших серверов:
- без virtIO W2k3 может обрабатывать около 10 пользователей Terminal Server
- с помощью virtIO та же машина с той же ОС в настоящее время обрабатывает от 120 до 125 пользователей с небольшим замедлением. И мы добавили еще одну виртуальную машину для запуска SQL Server на одном физическом компьютере
источник
Qemu работает не так, как многие другие гипервизоры. Для начала он может обеспечить полную эмуляцию. Это означает, что вы можете запустить код x86 на процессоре ARM, например. Когда в режиме KVM вы используете его, он на самом деле этого не делает ... процессор не зависимо от того, что, но то, что сообщается ОС, будет изменено
-cpu
флагом.Если вам нужны более высокие скорости, это отправная точка, чтобы попытаться максимально согласовать возможности виртуального процессора с вашим реальным процессором. Это сократит количество случаев, когда неоптимальные коды операций вызываются для выполнения задач, а также сократит количество кодов операций, которые на вашем оборудовании невозможно перевести в другое место. Поскольку ваша модель процессора Xeon была выпущена в начале 2011 года, она, вероятно, в основном поддерживает линейку Core i7. Для этого я бы сказал, что архитектура Nehalem - ваша лучшая эмуляция.
Цитирование по одной из ваших ссылок ( Tuning KVM ):
Таким образом, если вы чувствуете, что в конечном итоге вы можете что-то изменить, чтобы создать проблему, вы можете найти все поддерживаемые наборы инструкций, которые, как вы думаете, поддерживает любой ваш процессор в настоящее время или может иметь в будущем, и перечислить их.
Тем не менее, большую часть времени вы хотите придерживаться
-cpu host
. Указание ЦП с менее доступными флагами означает, что приложения будут избегать использования функций, которые могут сделать их быстрее.источник
Вы путаете опцию '-cpu host'. Эта опция НЕ включает только все функции ЦП, специфичные для вашей хост-системы, она включает ВСЕ функции, которые поддерживает ваш ЦП, и все, что можно эмулировать, даже если ЦП их не поддерживает.
-cpu host
- хороший вариант, но не самый эффективный, потому что он может включать опции, которые можно эмулировать, которые не поддерживает ваш процессор, гостевая система может быть немного замедлена всякий раз, когда она пытается использовать одну из этих функций, которую нужно эмулировать ,
Источник: http://wiki.qemu.org/Features/CPUModels
источник
CentOS 6.7 дает мне правильную производительность KVM + Spice на Dell R910. Я думаю, что, как только вы сделаете это, вы не вернетесь ни к чему другому (серьезно)!
источник