On Mon, 7 Jan 2013, Kamezawa Hiroyuki wrote: > (2013/01/07 5:02), Hugh Dickins wrote: > > > > Forgive me, I must confess I'm no more than skimming this thread, > > and don't like dumping unsigned-off patches on people; but thought > > that on balance it might be more helpful than not if I offer you a > > patch I worked on around 3.6-rc2 (but have updated to 3.8-rc2 below). > > > > I too was getting depressed by the constraints imposed by > > mem_cgroup_{begin,end}_update_page_stat (good job though Kamezawa-san > > did to minimize them), and wanted to replace by something freer, more > > RCU-like. In the end it seemed more effort than it was worth to go > > as far as I wanted, but I do think that this is some improvement over > > what we currently have, and should deal with your recursion issue. > > > In what case does this improve performance ?
Perhaps none. I was aiming to not degrade performance at the stats update end, and make it more flexible, so new stats can be updated which would be problematic today (for lock ordering and recursion reasons). I've not done any performance measurement on it, and don't have enough cpus for an interesting report; but if someone thinks it might solve a problem for them, and has plenty of cpus to test with, please go ahead, we'd be glad to hear the results. > Hi, this patch seems interesting but...doesn't this make move_account() very > slow if the number of cpus increases because of scanning all cpus per a page > ? > And this looks like reader-can-block-writer percpu rwlock..it's too heavy to > writers if there are many readers. I was happy to make the relatively rare move_account end considerably heavier. I'll be disappointed if it turns out to be prohibitively heavy at that end - if we're going to make move_account impossible, there are much easier ways to achieve that! - but it is a possibility. Something you might have missed when considering many readers (stats updaters): the move_account end does not wait for a moment when there are no readers, that would indeed be a losing strategy; it just waits for each cpu that's updating page stats to leave that section, so every cpu is sure to notice and hold off if it then tries to update the page which is to be moved. (I may not be explaining that very well!) Hugh -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/