Processes are incorrectly marked as swapped out

Dmitry Sivachenko trtrmitya at gmail.com
Fri Feb 21 13:02:24 UTC 2014


On 28 янв. 2014 г., at 20:42, John Baldwin <jhb at freebsd.org> wrote:

> On Thursday, January 23, 2014 8:02:29 am Ronald Klop wrote:
>> On Thu, 23 Jan 2014 13:19:36 +0100, Dmitry Sivachenko  
>> <trtrmitya at gmail.com> wrote:
>> 
>>> Hello!
>>> 
>>> After upgrade from stable/9 to stable/10 I see the following regression.
>>> Some processes are marked as swapped out in top(1) output:
>>> 
>>> 1436 root            1  43    0 16524K     0K nanslp 14   1:14   0.00%  
>>> <cron>
>>> 1381 smmsp           1  20    0 23988K     0K pause  18   0:04   0.00%  
>>> <sendma
>>> 99348 mitya           1  21    0 23492K     0K pause  16   0:00   0.00%  
>>> <csh>
>>> 
>>> ps(1) also shows them as swapped out (W as second character in state  
>>> field):
>>> 1381  -  IWs       0:00.00 sendmail: Queue runner at 00:30:00 for  
>>> /var/spool/clie
>>> 1436  -  IWs       0:00.00 /usr/sbin/cron -s
>>> 80231  -  IWs       0:00.00 /usr/local/sbin/collectdmon -c  
>>> /usr/local/sbin/coll
>>> 99348  1  IWs       0:00.00 -csh (csh)
>>> 
>>> Though swapinfo reports that zero swap is used and even if I turn swap  
>>> completely off (swapoff -a)
>>> the output of both top(1) and ps(1) does not change: these processes are  
>>> still marked as swapped out.
>> 
>> The code of an application can get removed from memory, because there  
>> still is an image of it in the executable on disk. It can be 'swapped' in  
>> by reading the executable again. The program is memory mapped (mmap).
>> See VN PAGER vs SWAP PAGER in 'systat -vm'.
> 
> However, a swapped out process always uses swap (for kernel stacks), so this 
> seems like a real bug.
> 


Okay, I found a buggy commit:

Author: jeff
Date: Tue Aug 13 21:56:16 2013
New Revision: 254304
URL: http://svnweb.freebsd.org/changeset/base/254304

Log:
 Improve pageout flow control to wakeup more frequently and do less work while
 maintaining better LRU of active pages.
<...>
Reviewed by:	alc (slight variant of this)
Discussed with:	alc, kib, jhb


How do I reproduce the problem: I have a desktop with 2GB of RAM and 4GB of swap space configured.
After "make -j 4 buildworld" I see some processes are swapped out (sometimes swapinfo reports swap is not used, sometimes it is used but after swapoff -a those processes are still in swapped out state).

I hope this will help to narrow down the problem.

Thanks.


More information about the freebsd-stable mailing list