Add process management entry
Approved by: hrs (mentor, blanket)
This commit is contained in:
parent
7b07049857
commit
19a9effe14
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46138
1 changed files with 69 additions and 0 deletions
|
@ -130,4 +130,73 @@
|
|||
</help>
|
||||
</project>
|
||||
|
||||
<project cat='kern'>
|
||||
<title>Process management</title>
|
||||
|
||||
<contact>
|
||||
<person>
|
||||
<name>
|
||||
<given>Konstantin</given>
|
||||
<common>Belousov</common>
|
||||
</name>
|
||||
<email>kib@FreeBSD.org</email>
|
||||
</person>
|
||||
<person>
|
||||
<name>
|
||||
<given>Peter</given>
|
||||
<common>Holm</common>
|
||||
</name>
|
||||
<email>pho@FreeBSD.org</email>
|
||||
</person>
|
||||
</contact>
|
||||
|
||||
<body>
|
||||
<p>There were several improvements made to the FreeBSD process
|
||||
management last quarter.</p>
|
||||
|
||||
<p>Reaper. The facility to allow a process to reliably track the
|
||||
running and exiting state of the whole subtree of the processes,
|
||||
was added. It is intended to improve tools like timeout(1) or
|
||||
poudriere, by making it impossible for the runaway granchild to
|
||||
escape the controlling process. Feature was designed based on
|
||||
similar facility in the DragonFlyBSD and Linux, with some
|
||||
references to the Solaris contracts. Committed to HEAD in
|
||||
r275800.</p>
|
||||
|
||||
<p>Total stop. Right now, the FreeBSD suspension code does not
|
||||
ensures that the system, both from software and from hardware
|
||||
view, is in the steady and consistent state. One aspect is the
|
||||
usermode process activity which is not stopped, continuing to
|
||||
making requests to the hardware. It is not realistic to expect
|
||||
drivers to be able to correctly handle the calls after
|
||||
SUSPEND_CHILD.</p>
|
||||
|
||||
<p>Together with Peter Holm, we developed a facility to stop
|
||||
usermode threads at the safe points, where they are known to not
|
||||
own and to not wait for kernel resources, in particular, not
|
||||
waiting for device requests finishing. It is based on the
|
||||
existing single-threading code, but extending it to allow external
|
||||
thread to put some process into stopped state. Also, a facility
|
||||
to sync filesystems before suspend was added, to ensure that
|
||||
consistent metadata and as much as possilbe of the cached user
|
||||
data are on stable storage, to minimize damage of failed
|
||||
resume.</p>
|
||||
|
||||
<p>The code stressed some parts of the system and lead to
|
||||
discovery of the unusual numbers of bugs in the different parts of
|
||||
the system, including process management, buffer cache and syscall
|
||||
handlers. The bugs were fixed, fixes and the features commmitted
|
||||
by a series culminating in r275745.</p>
|
||||
|
||||
<p>Process spinlock changes. During the work described above, it
|
||||
was noted that process spinlock duties are significantly
|
||||
overloaded (the same is true for the process lock). The spinlock
|
||||
was split into per-feature lock, see r275121. Also, as result, it
|
||||
was possible to eliminate recursion on it, r275372.</p>
|
||||
</body>
|
||||
|
||||
<sponsor>The FreeBSD Foundation</sponsor>
|
||||
|
||||
</project>
|
||||
|
||||
</report>
|
||||
|
|
Loading…
Reference in a new issue