A significant limitation of pure proportional-share algorithms is that they do not incorporate any information about active memory usage or working sets. Memory is effectively partitioned to maintain specified ratios. However, idle clients with many shares can hoard memory unproductively, while active clients with few shares suffer under severe memory pressure. In general, the goals of performance isolation and efficient memory utilization often conflict. Previous attempts to cross-apply techniques from proportional-share CPU resource management to compensate for idleness have not been successful [25].
ESX Server resolves this problem by introducing an idle memory tax. The basic idea is to charge a client more for an idle page than for one it is actively using. When memory is scarce, pages will be reclaimed preferentially from clients that are not actively using their full allocations. The tax rate specifies the maximum fraction of idle pages that may be reclaimed from a client. If the client later starts using a larger portion of its allocated memory, its allocation will increase, up to its full share.
Min-funding revocation is extended to use
an adjusted shares-per-page ratio. For a client with shares and
an allocation of pages, of which a fraction are active, the
adjusted shares-per-page ratio is
The tax rate provides explicit control over the desired policy for reclaiming idle memory. At one extreme, specifies pure share-based isolation. At the other, specifies a policy that allows all of a client's idle memory to be reclaimed for more productive uses.
The ESX Server idle memory tax rate is a configurable parameter that defaults to 75%. This allows most idle memory in the system to be reclaimed, while still providing a buffer against rapid working set increases, masking the latency of system reclamation activity such as ballooning and swapping.5