On Wed, 13 Dec 2006 11:07:01 -0800 Andrew Morton <[EMAIL PROTECTED]> wrote:
> On Wed, 13 Dec 2006 03:02:38 -0800 > Suleiman Souhlal <[EMAIL PROTECTED]> wrote: > > > The only I/O non-shared VMAs might cause is from swapping, and I'm not > > sure if the io accounting patches actually care about that. > > Yes, the patches do attempt to correctly account for swap IO. swapin is > accounted in submit_bio() and swapout is, err, not accounted at all. Drat, > I forgot to retest that. > hey, this is hard. The obvious "fix" is to do: --- a/mm/page-writeback.c~a +++ a/mm/page-writeback.c @@ -816,8 +816,10 @@ int fastcall set_page_dirty(struct page return (*spd)(page); } if (!PageDirty(page)) { - if (!TestSetPageDirty(page)) + if (!TestSetPageDirty(page)) { + task_io_account_write(PAGE_SIZE); return 1; + } } return 0; } _ but that means that memset(malloc(1000000)) will accuse the task of having done 1MB of writing, which is daft. What would be appropriate here is to account the task with the write when someone moves a dirty anon page into swapcache. That means that some random task needs to locate the task which "owns" this anon page. So in shrink_page_list()->add_to_swap() we need to hunt down the appropriate locks, do the rmap walk, find the vma, find the mm, then wonder how the heck we find the right task_struct based on the mm_struct. I think I'll back slowly away from this problem and mark it as "known shortcoming". Which perhaps means that we should not account for swapin either. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/