Does a hugepage in virtual machine require the corresponding underlying machine page to be a huge page? - virtual-machine

If a virtual machine is using huge TLB pages, (for example ubuntu runs in qemu + kvm on a intel processor platform), is the machine page also a huge page? Modern processors use extended page table(EPT) to accelerate paging.
If it's not required, is it determined by the virtual machine monitor(e.g. qemu)? Or by the KVM?
Thanks!

Related

How to enable VT-x inside a Virtual Machine inside a Virtual Machine

I have a windows 10 host operating system that supports virtualization. Next, I have an Ubuntu 16.04 virtual machine I created using virtualbox. For development purposes, I need to create a virtual machine inside my guest Ubuntu virtual machine. Unfortunately, I can't enable VT-x option in my guest Ubuntu machine to create a create a virtual machine inside my Ubuntu guest. Any information on how enable VT-x option on my virtual box inside my virtual Ubuntu machine would be appreciated.
Edit: I had that this may be accomplished through PCI Passthrough for VirtualBox. If so please detail how.
Lastly, my problem is similar to this guy's but with exception I can't seem to create an UBuntu32bit box.
Any information on how enable VT-x option on my virtual box inside my virtual Ubuntu machine would be appreciated.
You simply CAN'T.
VT-x is a hardware capability:
In 2006, both Intel (VT-x) and AMD (AMD-V) introduced limited hardware virtualization support that allowed simpler virtualization software but offered very few speed benefits. Greater hardware support, which allowed substantial speed improvements, came with later processor models.
Since VT-x requires hardware capabilities to work, there's no way for the "outer" virtual machine in your nested VMs to provide that capability to the "inner" VM. The "outer" VM doesn't have any actual hardware.
If you have to run a VM inside your VM that requires some of the capabilities that VT-x provides - such as the ability to run a 64-bit OS - you can try QEMU for the "inner" virtual machines. It'll be slower since it's an emulator and not true virtualization, though.

Can libvirt be used for managing virtual devices which are not PCs?

I work in developing and creating virtual printers, with QEMU as the hypervisor (no KVM-only Qemu). Can libvirt library be used to manage virtual printers? Currently, I am investigating on how to convert the qemu command line parameters into dom.xml and try bringing up the virtual printer using virsh. I see that libvirt adds it's own parameters apart from the one provided (like for example vga), which are more suitable for a PC and not necessary for virtual devices like a printer.
Has livirt been successfully used to virtualize other devices or is it specifically aimed only for a PC environment?
Libvirt will only automatically add an <video> element for VGA, if you have asked for a <graphics> element. So you can just leave out the latter to avoid this extra VGA device being added. What you're trying todo is pretty uncommon, so there may be other edge cases you hit like this.

Difference between virtual machine process and host os process?

Suppose in my pc I have Ubuntu as Host OS. Now I installed a Virtual Machine say VirtualBox (hypervisor) and then deployed a centos and a redhat os inside that as guest OS.
Suppose CentOS and redhat has 2 processes running and Ubuntu is running 3 processes. So following are my questions:
There are how many processes that Ubuntu is having?
Is there any difference between GuestOS and HostOS processes?
If all guestos runs as a process then they will get less time as compared to other process running on host os.
Please clear my doubts here.
Thank you.
Well let me clear your doubts,
First of all there aren't any specific number of process for an OS, its called as cores or threads, technically you can define how many cores or threads you want to use on your virtual machine and it depends on the system configuration you use.
Secondly Guest OS is what you have created in the virtual machine and host is what your laptop or pc actually run. Host OS uses the actual hardware for the working whereas the Guest OS uses the virtual hardware like number of cores and type and size of hard drive defined by the user while adding a virtual machine.
Third, as I mentioned earlier Guest and Host OS works on the configurations used by you, if you user higher amount of cores/ threads in setting your virtual machine the Guest OS will get higher speed.
Ideally the virtual machines are used to test and create some functionality of the Operating Systems without affecting the internal OS, so you can think of it as a your parents house where you can live and grow but at the end you cannot go away from the fact that their contribution is more and so you cannot go beyond their features without leaving it and making your own home.
Linux operating systems are multi-threaded operating system. The host OS would consider virtual box as a thread. You can define number of cores and virtual hard disk size for guest OS by using virtual box.
Since virtual box runs in separate thread and other operations of host OS runs in separate threads, there would be less effect on speed of processing. But I've observed big variances in processing speed in systems which have low memory. Each and every thread needs specific allocation of memory for its smooth operation. So systems having more than 2 GB RAM managed virtual box very well.

SystemC running inside a virtual machine, timing issues or corrupt results?

Is it ok to run a SystemC based simulation on a guest OS inside a virtual machine? Can simulation time be affected by this? I know that SystemC time is simulated and not actually tied to hardware timers.
And will running dozens of instances of SystemC simulations in the virtual machine configured with 4 cores (physical machine has 8) affect the results?
There are no problems running SystemC on a virtual machine. I do it regularly with VirtualBox. I run SystemC on Linux and Windows virtual machines, both 32-bit and 64-bit.
Unless there is a bug in the virtual machine software, a software application should behave identically when run on a physical or virtual machine.
Running multiple SystemC simulations concurrently on a virtual machine is also fine. The limit to how many simulations you can run concurrently, will be based on how much RAM you have available.

Difference between "process virtual machine" with "system virtual machine"

What's the difference between process virtual machine with system virtual machine?
My guess is that process VM is not providing a kind of an operating system for the whole application for that OS, rather providing an environment for some specific application.
And system VM is providing an environment for an OS to be installed just like VirtualBox.
Am I getting it correct?
Another question is the difference between the two different implementation of system VM: hosted vs. stand-alone.
I'm a beginner studying OS, so easy and understandable answer would be greatly appreciated :)
A Process virtual machine, sometimes called an application virtual machine, runs as a normal application inside a host OS and supports a single process. It is created when that process is started and destroyed when it exits. Its purpose is to provide a platform-independent programming environment that abstracts away details of the underlying hardware or operating system, and allows a program to execute in the same way on any platform.
A System virtual machine provides a complete system platform which supports the execution of a complete operating system (OS),Just like you said VirtualBox is one example.
A Host virtual machine is the server component of a virtual machine , which provides computing resources in the underlying hardware to support guest virtual machine (guest VM).
The following is from http://airccse.org/journal/jcsit/5113ijcsit11.pdf :
System Virtual Machines
A System Virtual Machine gives a complete virtual hardware platform with support for execution
of a complete operating system (OS).
The advantage of using System VM are:
Multiple Operating System environments can run in parallel on the same piece of
hardware in strong isolation from each other.
The VM can provide an instruction set architecture (ISA) that is slightly different from
that of the real machine
The main draw backs are:
Since the VM indirectly accesses the same hardware the efficiency is compromised.
Multiply VMs running in parallel on the same physical machine may result in varied
performance depending on the workload imposed on the system. Implementing proper
isolation techniques may address this drawback.