Re: active swapping using rumpdisk
HEllo,
Michael Kelly, le sam. 16 août 2025 20:29:57 +0100, a ecrit:
> The reason that page lists are not used is that the rump disk port is not
> configured as an IKOT_DEVICE. The equivalent non-rumpdisk device port is set
> using:
>
> (gnumach/linux/dev/glue/block.c)
>
> ipc_kobject_set (bd->port, (ipc_kobject_t) &bd->device, IKOT_DEVICE);
>
> I cannot see a simple method of achieving the same in rumpdisk
We can add one :)
I'm however thinking that we should probably not conflate IKOT_DEVICE
with a user-level one, because IKOT_DEVICE may be used for more than
what we think, see e.g. dev_port_lookup, ipc_kobject_notify. But we can
add another IKOT_USER_DEVICE, and add it to ipc_kobject_vm_page_list,
and add a mach call (restricted to privileged tasks) to set this type.
> but to test a
> similar effect I 'hacked' ipc_kmsg_copyin_body() to use page lists for many
> of the messages intended for the rumpdisk task to pseudo-test the
> alteration:
>
> if (kmsg->ikm_header.msgh_id >= 2800 &&
> kmsg->ikm_header.msgh_id < 2900)
> use_page_lists = TRUE;
>
> This results in many successful iterations of my stress test case whereas
> normally it locks very swiftly.
Great :)
> Is there a mechanism that can be used outside of the kernel to configure the
> rumpdisk ports as IKOT_DEVICE ports so that it can be tested properly?
Not that I know of.
Samuel
Reply to: