First is memory controller. The code is submitted by Balbir Singh (of IBM), and is mostly based on an earlier work by Pavel Emelyanov (of OpenVZ), Balbir and some others. It uses the "control groups" (cgroups) framework introduced earlier by Paul Menage of Google. Basically, memory controller (in its current form) lets one to control the amount of physical memory used by a group of processes (i.e. by a container). This is a vital feature for containers since all the containers are using the same RAM resource, so for containers to co-exist nicely they should not be allowed to use too much memory. Now, system administrator can set a per-container memory limits. The whole technology is known as User Beancounters (or just Beancounters) in OpenVZ world -- it's just we have more different parameters (and thus knobs and dials) in OpenVZ.
But, in a sense, the memory controller that is now in mainstream is better than one we have in OpenVZ. The one in mainstream limits the amount of physical (RSS) pages used by a container, and if this limit is exceeded, pages are swapped out. Well, in fact, they are not swapped out -- this would cause the unnecessary disk I/O activity in case it's just a container limit being hit, and otherwise there is enough memory on the system. In this case container's memory pages are put to the swap cache. In case of global memory shortage this swap cache will be freed, i.e. swapped out to disk. To summarize, this cool feature allows to have containers with strict memory limits, but decent overall system behavior.
The second feature (and thus the second step) is network namespaces -- an ability to for containers to have their own network stacks. This is still a work in progress. The first bits and pieces appeared in 2.6.24. A lot of network namespaces code (more than 200 changesets I guess) now appeared in 2.6.25, and despite my earlier predictions it's still not the end of the journey. A lot more code (also about 200 changesets) is now in net-2.6.26 tree (networking subsystem branch maintained by David Miller), scheduled to be included in Linux 2.6.26. Risking to be wrong for the second time, I'm still thinking that in Linux 2.6.26 we will likely have fairly complete implementation of net namespaces. A short description of what we will try to have in 2.6.26 as it comes for networking is here.
Speaking of 2.6.26 -- looks like it will be our next base kernel. We are now maintaining 2.6.24-based development branch (which is also used for OpenVZ-enabled Ubuntu Hardy Heron kernels), and will start porting OpenVZ patchset to 2.6.26 soon.
Finally, here's the graph that shows how many changesets, per kernel release, our team has contributed. No need to comment it I guess.
Also, here's the list of top10 contributors to the Linux 2.6.25. Our company is #7.
Top changeset contributors by employer (None) 1188 (9.3%) Red Hat 1181 (9.3%) Novell 817 (6.4%) IBM 703 (5.5%) Intel 472 (3.7%) Bartlomiej Zolnierkiewicz 307 (2.4%) Parallels 278 (2.2%) <--- Oracle 255 (2.0%) bunk@kernel.org 227 (1.8%) (Academia) 225 (1.8%)
Pavel Emelyanov has made it to top10 of developers.
Developers with the most changesets Bartlomiej Zolnierkiewicz 307 (2.4%) Adrian Bunk 234 (1.8%) Patrick McHardy 225 (1.8%) Ingo Molnar 213 (1.7%) Paul Mundt 207 (1.6%) Greg Kroah-Hartman 172 (1.4%) Thomas Gleixner 166 (1.3%) Jesper Nilsson 166 (1.3%) Pavel Emelyanov 160 (1.3%) <--- Harvey Harrison 150 (1.2%)
Another prominent OpenVZ guy is Denis Lunev, who is number 26 in the list with 87 changesets. The full list of people contributed to this release is more than 1200 lines long.