2005-09-22 07:37:19

by Zachary Amsden

[permalink] [raw]
Subject: [PATCH 0/3] GDT virtualization performance

Three patches to clean up GDT access in Linux to make it friendly to
virtualization environments. The basic problem is that the GDT must
be write protected, which causes spurious overhead when the GDT lies
on the same page as other data. This problem exists both for VMware
and Xen; Xen actually requires page isolation, so we have implemented
the most general and compatible solution.

Patch 1 deprecates a broken GDT reference;
Patch 2 adds a per-cpu GDT accessor;
Patch 3 moves the GDT out of the per-cpu area and makes it page
padded and page aligned.

The GDTs for secondary processors are allocated dynamically to avoid
bloating kernel static data with GDTs for not-present processors.

This could be adapted to drop and reallocate GDTs for CPU hotplug
if desired, although the space savings (1 page) are dubious, so
I have not implemented that at this time.

Testing: 4 way SMP boot-halts, kernel compiles, stress.

Zachary Amsden <[email protected]>