Virtual memory isn't even necessarily memory. For example, if a process memory-maps a large file, the file is actually stored on disk, but it still takes up "address space" in the process.
Address space (ie. virtual memory in the process list) doesn't cost anything; it's not real. What's real is the RSS (RES) column, which is resident memory. That's how much of your actual memory a process is occupying.
But even that isn't the whole answer. If a process calls fork(), it splits into two parts, and both of them initially share all their RSS. So even if RSS was initially 1 GB, the result after forking would be two processes, each with an RSS of 1 GB, but you'd still only be using 1 GB of memory.
Confused yet? Here's what you really need to know: use the free
command and check the results before and after starting your program (on the +/- buffers/cache
line). That difference is how much new memory your newly-started program used.
What is Virtualization
In short, Virtulization is the creation of something Virtual (rather than physical or actual) such as an Operating System, a storage device, a server or even a network device (such as a switch).
Since you are asking specifically regarding Linux Virtulization I will assume you are referencing servers and desktops:
Server virtualization is the masking of server resources (including the # and identity of individual physical servers, processors, and operating systems) from server users.
Desktop virtualization i the masking of desktop resources (including the # and identity of individual physical desktop machines, processors and operating systems) from desktop users.
With each - The intention is to spare the user from having to understand and manage complicated details of server/desktop resources while increasing resource sharing and utilization and maintaining the capacity to expand later.
Approaches to Virtualization (linux)
There are many different approaches to virtualizing a system, each with their own advantages and disadvantages.
Paravirtulization:
In a nutshell, In order to run
more efficiently, the guest
operating system's kernel is changed
out for a kernel that behaves well
in a virtualized environment.
Xen, lguest and User Mode Linux do
paravirtualization on x86.
Hardware Virtualization
Intel VT and AMD-V CPUs have the ability to
run all instructions in an unprivileged virtual machine, and
have them behave well. Most of the time much of the resources are emulated (like the clock) However, it allows for
a much cleaner implementation of
full virtualization.
Xen and KVM do hardware assisted
full virtualization.
Operating-System level virtualization - (Containers)
Containers do not run virtual machines at all, but simply segregate multiple user space environments from each other, while everything runs under one kernel. (One major reason many system administrators lvoe this is because they only ever need to patch or maintain 1 kernel vs many.) Container systems tend to have low overhead and high density, but also lower isolation between the different containers. This of course comes at a cost - as container systems only allow 1 kernel running - however they do support various Linux distributions in the different containers at the same time. There are a number of different Container systems - such as Solaris Zones, Linux-VServer and OpenVZ/Virtuozzo. OpenVZ has relatively complete resource isolation between the different containers, the other two have a bit less control. FreeBSD Jails can be seen as a precursor to containers - however Jails of course or make that BSD is not Linux.
Hopefully this helps give you a simple breakdown of Linux virtualization.
I would suggest peeking at the Proxmox Project http://www.proxmox.com/products/proxmox-ve It is opensource - and will allow you to test not only KVM but also Container based virtualization on the same system at the same time.
Be sure to comment on this writeup and vote.
Best Answer
From this Debian Wiki:
So, the answer is:
none
is NOT an alias fornoop
.none
means "the scheduler is not used".