HomeFreeBSD

try to fix RACCT_RSS accounting

Description

try to fix RACCT_RSS accounting

There could be a race between the vm daemon setting RACCT_RSS based on
the vm space and vmspace_exit (called from exit1) resetting RACCT_RSS to
zero. In that case we can get a zombie process with non-zero RACCT_RSS.
If the process is jailed, that may break accounting for the jail.
There could be other consequences.

Fix this race in the vm daemon by updating RACCT_RSS only when a process
is in the normal state. Also, make accounting a little bit more
accurate by refreshing the page resident count after calling
vm_pageout_map_deactivate_pages().
Finally, add an assert that the RSS is zero when a process is reaped.

PR: 210315
Reviewed by: trasz
Differential Revision: https://reviews.freebsd.org/D9464

Details

Provenance
avgAuthored on
Reviewer
trasz
Differential Revision
D9464: try to fix RACCT_RSS accounting
Parents
rS313729: MFC r312991: put very expensive sanity checks of advisory locks under DIAGNOSTIC
Branches
Unknown
Tags
Unknown