summaryrefslogtreecommitdiff
path: root/community/gsoc/project_ideas/vm_tuning.mdwn
blob: c243d8e24394df9a83b8cc815a3a3657609a5f3e (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
[[!meta copyright="Copyright © 2008, 2009, 2018 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]]."]]"""]]

[[!meta title="VM Tuning"]]

[[!template id=highlight text="""/!\ Obsolete /!\

---

This is no longer valid as a Google Summer of Code project."""]]


Hurd/[[microkernel/Mach]] presently make very bad use of the available physical memory in the
system. Some of the problems are inherent to the system design (the kernel
can't distinguish between important application data and discardable disk
buffers for example), and can't be fixed without fundamental changes. Other
problems however are an ordinary lack of optimization, like extremely crude
heuristics when to start paging. (See <http://lists.gnu.org/archive/html/bug-hurd/2007-08/msg00034.html> for example.)
Many parameters are based on assumptions from
a time when typical machines had like 16 MiB of RAM, or simply have been set to
arbitrary values and never tuned for actual use.

The goal of this project is to bring the virtual memory management in Hurd/Mach
closer to that of modern mainstream kernels (Linux, FreeBSD), by comparing the
implementation to other systems, implementing any worthwhile improvements, and
general optimization/tuning. It requires very good understanding of the Mach
VM, and virtual memory in general.

This project is related to [[!GNU_Savannah_task 5489]].

Possible mentors: Samuel Thibault (youpi)

Exercise: Make some modification to the existing VM code. You could try to find
a piece of code that can be improved with simple code optimization, for
example.