[coyotos-dev] SMP: transmap experiment, questions

Jeroen Visser jeroen.c.visser at gmail.com
Tue Oct 23 16:39:30 EDT 2007


Hello,

On 10/22/07, Jonathan S. Shapiro <shap at eros-os.com> wrote:
> Today, the only part of the map that is per-CPU is the transmap, and we
> handle that by simply reserving disjoint regions for different CPUs.

I'm not sure I entirely understand this. Reserving disjoint regions
for different CPUs? Is is possible to get away from a per-CPU map in
the face of this?

I'm not sure how this would work?

As an experiment I modified the transmap so that doesn't rely on any
per-CPU mapped data. Every CPU is given a different offset into the
TRANSMAP_WINDOW, spaced 64 pages apart.

The TransientMap has grown to be between 1 and 4 pages in size,
depending on NCPU. The number of pages in the transient map is
(MAX_NCPU / 8).

Since we currently have only 8MB available for the transmap window the
kernel is restricted to 8MB / (64 pages * NCPU * PAGE_SIZE) = 32 CPUS.

With this change in place I can run every CPU with exactly the same
map (PDPT, KernPageDir, KernPageTable).

Not sure about the performance implications though. It sure obsoletes
a lot of mapping complexity.

-JCV


More information about the coyotos-dev mailing list