Information Technology Reference
In-Depth Information
machine is executing, and it cannot differentiate between the important guest's
important work and its unimportant work.
An approach to addressing this problem was invented in the mid-1970s by Robert
Cowles, then at Cornell University and now at the SLAC National Accelerator
Laboratory. Cowles created an API to let his primary guest OS provide hints to
VM about the importance of the work it was about to run. Reacting to this infor-
mation, VM would not waste high-priority CPU access on the preferred guest's
low-importance work, and the priority for the entire guest could be reduced to
cover only its high-importance work. With this scheme, it was possible to run
work with different priorities on the same guest and give each application its due
level of service. The result was reduced CPU starvation for other guests and for
the high-priority work of the preferred guest, with measurable improvements in
response time and throughput for both.
Unfortunately, this approach has not been generally adopted, and the problem
still remains in modern-day systems. Most guest operating systems today are com-
plex operating environments that sometimes do background tasks that could tol-
erate being delayed. The approach with contemporary systems is to separate the
work of different priority classes into different single-purpose virtual machines.
This increases the number of virtual machines needed, which increases overhead
(as each guest has its own CPU and memory footprint) and can make it harder for
them to share data. Another approach is made possible by partitioning environ-
ments such as Logical Domains, which avoid the entire issue because CPUs are
dedicated rather than time-sliced subject to scheduler decisions. Finally, it is now
more economically feasible to “throw” hardware at the problem by not consolidat-
ing as aggressively as was necessary when hardware was so much more expensive.
Memory Management: Controlling Thrashing
An even more challenging performance problem facing virtualization was learn-
ing how to efficiently provide virtual memories. This problem persists in current
systems to some degree, but was especially problematic when computer memory
was limited by price and architectural restrictions.
The implications of hosting virtual memories whose aggregate sizes exceeded
physical memory was not well understood in the early days of virtual machines.
The concept of a “working set” was still extremely new, and the separate research
efforts by Lazslo Belady and Peter Denning on virtual memory had just been pub-
lished when CP/67 was written. One of the few operational virtual memory sys-
tems of the time was the Atlas Ferranti, which was known to suffer performance
problems under high loads.
The main problem was “thrashing,” a state in which applications struggle to
establish a working set of pages (the set of memory they will access in a small
 
Search WWH ::




Custom Search