active swapping using rumpdisk

Michael Kelly <[email protected]>
Newsgroups gmane.linux.debian.ports.hurd
Message-ID <[email protected]>
Swap activity in a rumpdisk based system soon results in a locked 
system. I think I've identified 1 part of the problem occurring within 
ipc_kmsg_copyin_body(). Using rumpdisk, vm_map_copyin() is being used to 
copy in data for messages rather than vm_map_copyin_page_list(). The 
system lock occurs when a page that is referenced in the message is 
swapped out before that message is processed by the receiving task. This 
wouldn't happen using page_list copy as those pages are kept in a busy 
state that prevents them from being paged out.

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 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.

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?

Regards,

Mike.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.