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: