diff options
| author | Andrew Morton <akpm@digeo.com> | 2002-10-04 20:35:54 -0700 |
|---|---|---|
| committer | Russell King <rmk@flint.arm.linux.org.uk> | 2002-10-04 20:35:54 -0700 |
| commit | 3669e82478d2eebd95bf1e23aad28eb11a0262fc (patch) | |
| tree | c703166699a14fcbf7608f360df67a8050d4f4bb /include | |
| parent | a27efcaff9ffd5ad05f4e111751da41a8820f7ab (diff) | |
[PATCH] stricter dirty memory clamping
The ratelimiting logic in balance_dirty_pages_ratelimited() is designed
to prevent excessive calls to the expensive get_page_state(): On a big
machine we only check to see if we're over dirty memory limits once per
1024 dirtyings per cpu.
This works OK normally, but it has the effect of allowing each process
to go 1024 pages over the dirty limit before it gets throttled.
So if someone runs 16000 tiobench threads, they can go 16G over the
dirty memory threshold and die the death of buffer_head consumption.
Because page dirtiness pins the page's buffer_heads, defeating the
special buffer_head reclaim logic.
I'd left this overshoot artifact in place because it provides a degree
of adaptivity - of someone if running hundreds of dirtying processes
(dbench!) then they do want to overshoot the dirty memory limit.
But it's hard to balance, and is really not worth the futzing around.
So change the logic to only perform the get_page_state() call rate
limiting if we're known to be under the dirty memory threshold.
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions
