Files
ubports_kernel_google_msm/include/linux
Hugh Dickins 365e9c87a9 [PATCH] mm: update_hiwaters just in time
update_mem_hiwater has attracted various criticisms, in particular from those
concerned with mm scalability.  Originally it was called whenever rss or
total_vm got raised.  Then many of those callsites were replaced by a timer
tick call from account_system_time.  Now Frank van Maarseveen reports that to
be found inadequate.  How about this?  Works for Frank.

Replace update_mem_hiwater, a poor combination of two unrelated ops, by macros
update_hiwater_rss and update_hiwater_vm.  Don't attempt to keep
mm->hiwater_rss up to date at timer tick, nor every time we raise rss (usually
by 1): those are hot paths.  Do the opposite, update only when about to lower
rss (usually by many), or just before final accounting in do_exit.  Handle
mm->hiwater_vm in the same way, though it's much less of an issue.  Demand
that whoever collects these hiwater statistics do the work of taking the
maximum with rss or total_vm.

And there has been no collector of these hiwater statistics in the tree.  The
new convention needs an example, so match Frank's usage by adding a VmPeak
line above VmSize to /proc/<pid>/status, and also a VmHWM line above VmRSS
(High-Water-Mark or High-Water-Memory).

There was a particular anomaly during mremap move, that hiwater_vm might be
captured too high.  A fleeting such anomaly remains, but it's quickly
corrected now, whereas before it would stick.

What locking?  None: if the app is racy then these statistics will be racy,
it's not worth any overhead to make them exact.  But whenever it suits,
hiwater_vm is updated under exclusive mmap_sem, and hiwater_rss under
page_table_lock (for now) or with preemption disabled (later on): without
going to any trouble, minimize the time between reading current values and
updating, to minimize those occasions when a racing thread bumps a count up
and back down in between.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-10-29 21:40:39 -07:00
..
2005-07-07 16:50:16 +02:00
2005-09-13 08:22:31 -07:00
2005-10-18 23:19:47 -07:00
2005-08-25 12:40:44 -04:00
2005-10-17 17:03:57 -07:00
2005-10-22 14:27:05 -04:00
2005-10-28 08:16:49 -07:00
2005-09-07 16:57:21 -07:00
2005-10-04 13:22:01 -07:00
2005-06-23 09:45:26 -07:00
2005-10-28 08:16:47 -07:00
2005-09-10 10:06:21 -07:00
2005-10-28 08:16:47 -07:00
2005-07-10 15:45:11 -07:00
2005-09-10 10:16:27 -07:00
2005-09-05 00:06:09 -07:00
2005-09-07 16:57:21 -07:00
2005-10-29 02:23:58 -02:00
2005-07-13 11:25:24 -07:00
2005-09-13 08:22:32 -07:00
2005-07-12 12:08:43 -07:00
2005-09-09 13:57:55 -07:00
2005-09-13 08:22:32 -07:00
2005-10-28 08:16:47 -07:00
2005-10-28 10:13:16 -07:00
2005-10-28 08:16:46 -07:00
2005-07-12 16:01:03 -07:00
2005-07-12 12:08:43 -07:00
2005-09-05 09:14:13 -07:00
2005-10-28 10:13:16 -07:00
2005-10-29 19:32:20 +01:00
2005-10-28 08:16:47 -07:00
2005-08-29 16:01:32 -07:00
2005-07-05 15:03:46 -07:00
2005-08-29 16:01:32 -07:00
2005-09-19 15:41:28 -07:00
2005-08-29 16:01:32 -07:00
2005-08-29 15:49:46 -07:00
2005-08-29 15:43:19 -07:00
2005-09-07 16:57:48 -07:00
2005-10-03 14:13:38 -07:00
2005-10-28 08:16:47 -07:00
2005-09-17 11:50:02 -07:00
2005-06-25 16:24:55 -07:00
2005-10-08 15:00:57 -07:00
2005-10-28 08:16:47 -07:00
2005-10-22 14:27:05 -04:00
2005-10-28 08:16:47 -07:00
2005-09-14 08:46:21 -04:00
2005-10-29 21:40:39 -07:00
2005-10-28 08:16:51 -07:00
2005-07-12 16:00:58 -07:00
2005-08-29 16:01:32 -07:00
2005-08-29 16:01:32 -07:00
2005-06-24 00:06:28 -07:00
2005-06-23 09:45:04 -07:00
2005-10-28 08:16:51 -07:00
2005-08-28 20:28:25 -04:00
2005-09-07 16:57:24 -07:00
2005-09-13 08:22:31 -07:00
2005-06-27 15:11:43 -07:00
2005-10-28 08:16:47 -07:00
2005-08-30 22:48:51 -05:00
2005-09-09 13:57:54 -07:00
2005-10-28 08:16:47 -07:00
2005-09-07 16:57:18 -07:00
2005-06-24 00:06:41 -07:00
2005-06-27 15:11:44 -07:00
2005-10-28 08:16:47 -07:00
2005-10-28 08:16:47 -07:00
2005-08-29 16:01:32 -07:00
2005-09-10 10:06:21 -07:00
2005-09-10 10:06:21 -07:00
2005-10-28 08:16:49 -07:00
2005-10-28 08:16:47 -07:00
2005-09-05 00:05:45 -07:00
2005-10-28 08:16:47 -07:00
2005-09-18 00:18:32 -07:00
2005-09-10 10:06:36 -07:00
2005-09-07 16:57:34 -07:00
2005-09-09 13:57:58 -07:00
2005-10-28 08:16:46 -07:00
2005-07-12 11:52:57 -07:00
2005-10-28 08:16:49 -07:00
2005-10-29 21:40:35 -07:00
2005-07-12 12:08:43 -07:00