2.6.9-rc1: page_referenced_one() CPU consumption

From: Nikita Danilov
Date: Fri Sep 10 2004 - 05:54:06 EST


Hello,

in 2.6.9-rc1 page_referenced_one() is among top CPU consumers (which
wasn't a case for 2.6.8-rc2) in the host kernel when running heavily
loaded UML. readprofile -b shows that time is spent in
spin_lock(&mm->page_table_lock), so, I reckon, recent "rmaplock: kill
page_map_lock" changes are probably not completely unrelated.

Without any deep investigation, one possible scenario is that multiple
threads are doing (as part of direct reclaim),

refill_inactive_zone()
page_referenced()
page_referenced_file() /* (1) mapping->i_mmap_lock doesn't
serialize them */
page_referenced_one()
spin_lock(&mm->page_table_lock) /* (2) everybody is
serialized here */

(1) and (2) will be true if we have one huge address space with a lot of
VMAs, which seems to be exactly what UML does:

$ wc /proc/<UML-host-pid>/maps
4134 28931 561916

This didn't happen before, because page_referenced_one() used to
try-lock.

Nikita.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/