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

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: