summaryrefslogtreecommitdiff
path: root/open_issues/resource_management_problems.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'open_issues/resource_management_problems.mdwn')
-rw-r--r--open_issues/resource_management_problems.mdwn34
1 files changed, 31 insertions, 3 deletions
diff --git a/open_issues/resource_management_problems.mdwn b/open_issues/resource_management_problems.mdwn
index daf97954..d1a29a00 100644
--- a/open_issues/resource_management_problems.mdwn
+++ b/open_issues/resource_management_problems.mdwn
@@ -1,5 +1,5 @@
-[[!meta copyright="Copyright © 2008, 2009, 2010, 2013 Free Software Foundation,
-Inc."]]
+[[!meta copyright="Copyright © 2008, 2009, 2010, 2013, 2024 Free
+Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
@@ -18,7 +18,35 @@ Mach can't do a good job at resource management, as it doesn't have enough
information how resources are used: which data is important and which is
discardable, for example.
-These issues are what Neal Walfield is working on with his new kernel
+<!-- the following 3 paragraphs comes from this email:
+ lists.gnu.org/archive/html/bug-hurd/2009-07/msg00084.html -->
+
+This is the fundamental failing of the Mach/Hurd architecture. The
+Hurd operates via many server to client relationships, in which
+servers request resources on behalf of their clients. For example at
+any given time, `extfs` could have many different clients (emacs, vim,
+git etc.) requesting data, creating files, deleting files, re-naming
+files, etc. Suppose one rogue client out of 50 is continually
+requesting increasingly more memory, which is exhasting the machine's
+resources. As far as Mach knows, `ext2fs` is wasting RAM. It doesn't
+know that one `ext2fs`' client program is at fault. There is no way
+for Mach to fix this, since it should not kill `ext2fs`, and it cannot
+know which `ext2fs` client to kill.
+
+This server/client architecture is a problem that exists elsewhere. A
+good example is `X`. Firefox might allocate a lot of pixmaps, which
+causes `X` to use more memory. Linux actually used to kill X, because
+of this several years ago.
+
+This problem is much worse on a multiserver system, because we have
+many server/client relationships. A simple fix that would limit these
+issues is to introduce fixed limits on various kinds of resource
+usage. A proper fix requires a way to attribute all resource usage to
+the clients -- either by avoiding server-side allocation or by keeping
+track of who is requesting resources. Both of these changes requires
+lots of changes to low-level code.
+
+These issues are what Neal Walfield explored with his kernel:
[[microkernel/viengoos]].