Greetings from SCALE7x! Today will be the second (and the last) day of the show. Yesterday I did a presentation titled "Recent Advances in the Linux Kernel resource management". The scope of the talk is much more technical and narrow than my usual talk about containers. More to say, I was focusing more on mainstream Linux kernel (i.e. cgroups and memory controller) than on OpenVZ kernel (i.e. user beancounters).
I think the talk was well received and I had about 10 different interesting questions, one is puzzling enough so I was not able to provide a good answer. This is definitely a sign of a good audience.
If anyone is interested in slides from my presentation, they are available: OpenOffice ODP (276K), PDF (409K), PPT (437K).
I think the talk was well received and I had about 10 different interesting questions, one is puzzling enough so I was not able to provide a good answer. This is definitely a sign of a good audience.
If anyone is interested in slides from my presentation, they are available: OpenOffice ODP (276K), PDF (409K), PPT (437K).


Comments
See, there is a process writing to a file. When a process calls write() the data is not actually being written, no I/O is happening. Instead a few pages in memory are created and marked with "we need to write that to disk". At some later point in time the actual write is happening.
The problem is by the time actual write to disk is happening we do not know on behalf of what process kernel does that (in fact, that process might already be finished). So it's not easy to account writes.
In OpenVZ the problem is solved with so-called I/O beancounters. Every page to be written is marked with a page beancounter which is attached to an I/O beancounter, and we do not loose these connections even if process exits. So when we do real write we do know who initiated it in the first place. This accounting makes sense per se, plus it is a prerequisite for correct group-based I/O scheduling.