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>
|
</help>
|
||||||
</project>
|
</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>
|
</report>
|
||||||
|
|
Loading…
Reference in a new issue