Re: Pageout not succeeding
On 29/05/2025 20:28, Michael Kelly wrote:
On 29/05/2025 14:49, Samuel Thibault wrote:
So it's mach-defpager which need to be given vm_privilege. If that's
not already so, that is what really needs to be fixed. Normally that's
already done by mach-defpager's wire_thread() which uses thread_wire(),
but possibly a bug makes it miss some mach-defpager thread, and that's
what needs to be fixed.
I'll look into that.
The only kernel threads that are not privileged are:
1) The signal handler thread
2) The default_pager thread for external objects
Here's verification (with my added printfs in the kernel debugger):
db> show task 0xf67cf5f0
TASK THREADS
21 (/hurd/mach-defpager(104)) (f67cf5f0): 6 threads:
PRIV 0 (f5ff0cf8) .W.O.F(mach_msg_continue) 0
1 (f5ff0b88) .W.O..(mach_msg_continue) 0
PRIV 2 default_pager(internal) (f59a1000)
.W.O.F(mach_msg_continue) 0
PRIV 3 default_pager(internal) (f59a15c0)
.W.O.F(mach_msg_continue) 0
PRIV 4 default_pager(internal) (f5ff08a8)
.W.O.F(mach_msg_continue) 0
5 default_pager(external) (f5ff0738)
.W.O.F(mach_msg_continue) 0
- if (double_paging && !object->pager_initialized) {
+ if (!object->pager_initialized) {
vm_object_pager_create(object);
}
So this would be my recent fd63a4bbf6f2201846f37afba348c5db88364c44
The point of the patch was to cope with the case where there is no DMM.
I indeed got the condition from for the internal objects which of course
will never have double_paging even if we have a DMM. I have changed the
condition, could you try it?
I've seen your update which I'll test locally.
The new revision works when the DMM is present; I haven't tested when
the DMM is not present.
Thanks again for the investigation, this will be really useful to fix
building large packages etc.
I hope that I can help with that.
I am wondering if it might be more meaningful if I was able to recreate
the paging problems shown by your build environment rather than trying
to create a test case that simulates it. I'd imagine it would be
difficult to create that exact environment on my own machine but perhaps
I can test building of some large packages. Have you suggestions for
which packages to build and what build parameters would be important
(eg. parallelism) ? Is SMP stable enough to be used for such tests and
if so does that apply on your build machine?
How are the issues that you have with the build presented?
Regards,
Mike.
Reply to: