[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Resident memory set size



Samuel,

These are the additions that I removed to restore swap. I can't remember if I tried to narrow it down even further but this is a good starting point:

66c66,76
<      * vm_pageout_setup before the double paging pass.
---
>      * vm_pageout_setup before the second double paging pass.
> *
>      * There is one important special case: the default pager can
>      * back external memory objects. When receiving the first
>      * pageout request, where the page is no longer present, a
>      * fault could occur, during which the map would be locked.
>      * This fault would cause a new paging request to the default
>      * pager. Receiving that request would deadlock when trying to
>      * lock the map again. Instead, the page isn't double paged
>      * and vm_pageout_setup wires the page down, trusting the
>      * default pager as for internal pages.
72c82,84
<     if (object->internal || !alloc_paused) {
---
>     if (object->internal || !alloc_paused ||
>         ! IP_VALID(memory_manager_default) ||
>         memory_manager_default_port(object->pager)) {
107c119
<     if (!object->pager_initialized) {
---
>     if (laundry && !object->pager_initialized) {
111c123
<     if (!object->pager_initialized) {
---
>     if (laundry && !object->pager_initialized) {
115c127
<     if (!object->pager_initialized) {
---
>     if (laundry && !object->pager_initialized) {

Mike.

On 12/05/2025 08:32, Samuel Thibault wrote:
Michael Kelly, le lun. 12 mai 2025 08:15:10 +0100, a ecrit:
I've been looking at why the swap appears not to be working at the moment.
I've identified a small set of alterations to the code in vm_page_seg_evict
that have been introduced relatively recently that if reverted restores swap
functionality
Which ones are these?
It's very probable that I made a mistake, MM is always difficult.

Samuel


Reply to: