On 05/06/2014 07:39, Ian Lepore wrote:
> On Tue, 2014-05-06 at 03:42 +0000, Alan Cox wrote:
>> Author: alc
>> Date: Tue May  6 03:42:04 2014
>> New Revision: 265418
>> URL: http://svnweb.freebsd.org/changeset/base/265418
>>
>> Log:
>>   Prior to r254304, a separate function, vm_pageout_page_stats(), was used to
>>   periodically update the reference status of the active pages.  This 
>> function
>>   was called, instead of vm_pageout_scan(), when memory was not scarce.  The
>>   objective was to provide up to date reference status for active pages in
>>   case memory did become scarce and active pages needed to be deactivated.
>>   
>>   The active page queue scan performed by vm_pageout_page_stats() was
>>   virtually identical to that performed by vm_pageout_scan(), and so r254304
>>   eliminated vm_pageout_page_stats().  Instead, vm_pageout_scan() is
>>   called with the parameter "pass" set to zero.  The intention was that when
>>   pass is zero, vm_pageout_scan() would only scan the active queue.  However,
>>   the variable page_shortage can still be greater than zero when memory is 
>> not
>>   scarce and vm_pageout_scan() is called with pass equal to zero.
>>   Consequently, the inactive queue may be scanned and dirty pages laundered
>>   even though that was not intended by r254304.  This revision fixes that.
>>   
>>   Reported by:       avg
>>   MFC after: 1 week
>>   Sponsored by:      EMC / Isilon Storage Division
>>
>> Modified:
>>   head/sys/vm/vm_pageout.c
>>
>> Modified: head/sys/vm/vm_pageout.c
>> ==============================================================================
>> --- head/sys/vm/vm_pageout.c Tue May  6 03:38:04 2014        (r265417)
>> +++ head/sys/vm/vm_pageout.c Tue May  6 03:42:04 2014        (r265418)
>> @@ -942,13 +942,15 @@ vm_pageout_scan(struct vm_domain *vmd, i
>>       */
>>      addl_page_shortage = 0;
>>  
>> -    deficit = atomic_readandclear_int(&vm_pageout_deficit);
>> -
>>      /*
>>       * Calculate the number of pages we want to either free or move
>>       * to the cache.
>>       */
>> -    page_shortage = vm_paging_target() + deficit;
>> +    if (pass > 0) {
>> +            deficit = atomic_readandclear_int(&vm_pageout_deficit);
>> +            page_shortage = vm_paging_target() + deficit;
>> +    } else
>> +            page_shortage = deficit = 0;
>>  
>>      /*
>>       * maxlaunder limits the number of dirty pages we flush per scan.
>>
> Does this address the observation that several folks have made on
> current@ that pages are being pushed to swap much more agressively than
> in the past, even when the system doesn't seem short of memory?
>

I hope so.  Please let me know if you see any difference.

I also suspect that another side-effect of r254304 is that we are
swapping out idle processes sooner, before memory has become scarce. 
Has anyone observed this behavior?

Alan

_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to