Where Is My Mind? Memory Management in X
X's memory manager needs help. The primitive memory management system built into the XAA driver design serves adequately for five year old cards and ten year old toolkits, but falls on its face in modern desktop usage. To be adequately performant in the new world of heavy Render and GL usage and shiny alpha-blended drop-shadowed Composited desktops, a new approach is needed. This turns out to be a really hard problem. Video memory usage patterns don't look like network or filesystem usage patterns, so the research literature and and algorithms in traditional memory management design don't really apply. There are an increasing number of object types that people want to store in video memory, and many video cards have quirky restrictions about what ranges of memory can be used to satisfy various sorts of allocations. And of course, all of this needs to be coordinated between userspace and kernelspace in an efficient and performant manner. This talk will cover the design of the old memory manager (such as it is), the reasons why we hate it, and how we plan to fix it. As this work is ongoing within X, the current status of the implementation will also be covered, preferably with pretty live demo and impressive performance numbers.
Adam Jackson works on beating sense into X. As such, his to-do list is very long. His rapidly growing collection of video cards ensures he'll be kept busy with it. His audio geekery habit helps keeps him more or less sane.