Как узнать, работает ли моя ОС в виртуализированной или не виртуализированной среде?

У меня есть доступ к машине, к которой я могу SSH. Как определить, работает ли моя ОС в полностью виртуализированной (где VMM выполняет бинарную трансляцию), паравиртуализированной или не виртуализированной среде? У меня есть представление о том, как это сделать (некоторые операции, такие как доступ к странице / диску памяти, в виртуализированной среде займет больше времени), но я не знаю, как это сделать.

1 ответ

Решение

Это зависит от того, над чем вы работаете. Если это Xen или Microsoft VM, я считаю, CPUID с EAX значение 0x40000000 даст вам ненулевое значение в EAX, Не уверен, что это работает на VMWare, VirtualBox или KVM. Я ожидаю, что это будет работать там тоже...

Измерение времени доступа вряд ли ВСЕГДА покажет вам правду, поскольку в не-VM системах они также могут сильно различаться, и нет РЕАЛЬНОЙ причины, по которой вы бы увидели огромную разницу в эффективной реализации. И, конечно, вы не знаете, работает ли ваша виртуальная машина с контроллером жесткого диска REAL, пропущенным через PCI, или подключенные к NFS диски подключены через сетевую карту REAL, переданную к виртуальной машине, или доступ через виртуальную сетевую карту.

Хороший VMM не должен показывать вам большой разницы, пока приложение ведет себя само.

Другие вопросы по тегам