summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2003-09-21 01:37:01 -0700
committerLinus Torvalds <torvalds@home.osdl.org>2003-09-21 01:37:01 -0700
commit55b50278ec233024c2e5be04855d66ebdcebc35e (patch)
tree1c5ffff9c5d4cc38f202273d757ed13b60bde069 /include/linux
parent5fc4d8394c3192ba18c19f82f629b71e7e68cc0d (diff)
[PATCH] real-time enhanced page allocator and throttling
From: Robert Love <rml@tech9.net> - Let real-time tasks dip further into the reserves than usual in __alloc_pages(). There are a lot of ways to special case this. This patch just cuts z->pages_low in half, before doing the incremental min thing, for real-time tasks. I do not do anything in the low memory slow path. We can be a _lot_ more aggressive if we want. Right now, we just give real-time tasks a little help. - Never ever call balance_dirty_pages() on a real-time task. Where and how exactly we handle this is up for debate. We could, for example, special case real-time tasks inside balance_dirty_pages(). This would allow us to perform some of the work (say, waking up pdflush) but not other work (say, the active throttling). As it stands now, we do the per-processor accounting in balance_dirty_pages_ratelimited() but we never call balance_dirty_pages(). Lots of approaches work. What we want to do is never engage the real-time task in forced writeback.
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/sched.h4
-rw-r--r--include/linux/writeback.h1
2 files changed, 3 insertions, 2 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 3c6e3129144d..3d9aba07d508 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -281,7 +281,9 @@ struct signal_struct {
#define MAX_RT_PRIO MAX_USER_RT_PRIO
#define MAX_PRIO (MAX_RT_PRIO + 40)
-
+
+#define rt_task(p) ((p)->prio < MAX_RT_PRIO)
+
/*
* Some day this will be a full-fledged user tracking system..
*/
diff --git a/include/linux/writeback.h b/include/linux/writeback.h
index 373e58fee2d4..1424811e1eab 100644
--- a/include/linux/writeback.h
+++ b/include/linux/writeback.h
@@ -84,7 +84,6 @@ int dirty_writeback_centisecs_handler(struct ctl_table *, int, struct file *,
void __user *, size_t *);
void page_writeback_init(void);
-void balance_dirty_pages(struct address_space *mapping);
void balance_dirty_pages_ratelimited(struct address_space *mapping);
int pdflush_operation(void (*fn)(unsigned long), unsigned long arg0);
int do_writepages(struct address_space *mapping, struct writeback_control *wbc);