Add process management entry

Approved by:	hrs (mentor, blanket)
This commit is contained in:
Benjamin Kaduk 2015-01-02 02:43:25 +00:00
parent 7b07049857
commit 19a9effe14
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46138

View file

@ -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>