summaryrefslogtreecommitdiff
path: root/microkernel/mach/memory_object/discussion.mdwn
blob: 907f859a29b7087b09aa09b9660b5f98cf770223 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
[[!meta copyright="Copyright © 2011, 2012 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
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]

[[!tag open_issue_documentation open_issue_gnumach]]

[[!toc]]


# IRC, freenode, #hurd, 2011-08-05

    < neal> braunr: For instance, memory objects are great as they allow you to
      specify the mapping policy in user space.
    < neal> braunr: But, the policy for determining the eviction order is
      realized by Mach
    < neal> braunr: And user-space has no control
    < braunr> are you referring to the page cache lru approximation and stuff
      like resource containers ?
    < neal> I'm not sure what you mean by page cache lru appoximateion
    < braunr> the kernel eviction policy :)
    < neal> that's an implementation detail


# IRC, freenode, #hurd, 2011-09-05

    <braunr> mach isn't a true modern microkernel, it handles a lot of
      resources, such as high level virtual memory and cpu time
    <braunr> for example, the page replacement mechanism can't be implemented
      outside the kernel
    <braunr> yet, it provides nothing to userspace server to easily allocate
      resources on behalf of clients
    <braunr> so, when a thread calls an RPC, the cpu time used to run that RPC
      is accounted on the server task
    <braunr> the hurd uses lots of external memory managers

[[external_pager_mechanism]].

    <braunr> but they can't decide how to interact with the page cache
    <braunr> the kernel handles the page cache, and initiates the requests to
      the pagers
    <cjuner> braunr, why can't they decide that?
    <braunr> because it's implemented in the kernel
    <braunr> and there is nothing provided by mach to do that some other way
    <slpz_> braunr: you probably already know this, but the problem with client
      requests being accounted on behalf the server, is fixed in Mach with
      Migrating Threads

[[open_issues/mach_migrating_threads]].

    <braunr> slpz_: migrating threads only fix the issue for the resources
      managed by mach, not the external servers
    <braunr> slpz_: but it's a (imo necessary) step to completely solve the
      issue
    <braunr> in addition to being a great feature for performance (lighter
      context switchers, less state to track)
    <braunr> it also helps priority inversion problems
    <slpz_> braunr: I was referring just to cpu-time, but I agree with you an
      interface change is needed for external pagers
    <braunr> slpz_: servers in general, not necessarily pagers
    <slpz_> as a way to mitigate the effect of Mach paging out to external
      pagers, the folks at OSF implemented an "advisory pageout", so servers
      are "warned" that they should start paging out, and can decide which
      pages are going to be flushed by themselves

[[open_issues/resource_management_problems]].


# [[open_issues/memory_object_model_vs_block-level_cache]]