Pull to refresh

Comments 9

Меня смущает в KVM невозможность запуска нескольких хостов, допустим qemu и virtualbox. Ведь по большей части они не должны друг другу мешать, т.к. запуск двух экземпляров одного хоста происходит без проблем.
Похоже это болячка Virtualbox.
Ему как-то плохо с другими гипервизорами работается, на винде с Hyper-V подконфликтовывает (если выставить bcdedit /set hypervisorlaunchtype off, будет довольно хорошо)

Это Hyper-V под себя всю виртуализацию подминает. Можно даже глянуть в CPU-z — с запущенным Hyper-V у процессора не будет значится поддержки VT-x

Да, в курсе.
Но Vmware Player хоть как-то справляется

Интересно, а как происходит эмуляция устройств, допустим, в qemu? Не проброс, а именно программная реализация тех устройств, которых нет. Qemu ведь обычный процесс. Как он перехватывает обращение по PCI к какому-нибудь Ethernet адаптеру?

Через интерфейс KVM собственно, для этого он и нужен.

Если поверхностно, то аналогично приведённому примеру с io. При обращении к регистрам pci устройства, kvm возвращает vmexit с необходимой и достаточной информацией для понимания, что и куда гость хотел записать или считать. Соответсвенно, Qemu вызывает функции которые имплементируют эмулируемое устройство. Прерывания же, наоборот можно инжектировать, например по приходу пакета в /dev/tapN. Если вам интересно узнать более подробно эту тему, то поищите в гугле: ‘hypervisor from scratch’. Там в топе выдачи вполне годные статьи с отсылками в интеловские мануалы и т.д.

case KVM_EXIT_IO:
printf("IO port: %x, data: %x\n", run->io.port, *(int *)((char *)(run) + run->io.data_offset));
break;

В переводе и оригинале искусственной задержки нет.


Однако она есть в py- коде и github'е:


case KVM_EXIT_IO:
      printf("IO port: %x, data: %x\n", run->io.port,
         *(int *)((char *)(run) + run->io.data_offset));
      sleep(1);
      break;

Без нее совсем тяжко? Полная загрузка одного ядра?

kITerE Алексей, здравствуйте!

Действительно вставили задержку в py-код. Решили, что так будет нагляднее, иначе слишком много вывода и он очень быстро идет.

И на второй Ваш вопрос: да, съедается всё ядро.
Sign up to leave a comment.