Fast Syscalls and Virtualised Linux on Linux

From: Peter Chubb <peterc_at_gelato.unsw.edu.au>
Date: 2005-06-29 14:20:45
Hi,
	I'm working on a user-mode-linux like thing for IA64.  I have
something working. but performance is awful.  The reason is
syscall-via-break.

When a process running in the guest OS calls a system call via break
(or a system call is restarted, and so falls back to syscall via
break) the host OS catches it and tries to execute the system call.
This is obviously undesireable.

The trick I'm using at present (not my own, Matt Chapman implemented
it) is to ptrace the Virtual Machine Monitor, catch all system calls,
and redirect ones that are for the guest OS to the guest.

Obviously, when a process running under the guest uses the fast system
call path, the host doesn't see it, and so it can run at full speed.
But there are enough cases where things fall back to the old via-break
path that the ptrace hack is still needed.  And because it intercepts
*every* system call even virtualised operations like read/write to the
virtual disks cop the overhead.

One approach might be to redefine __BREAK_SYSCALL for the guest OS.
That'd require a specially compiled glibc and kernel, and possibly
other executables.

Does anyone have a better idea?


-- 
Dr Peter Chubb  http://www.gelato.unsw.edu.au  peterc AT gelato.unsw.edu.au
The technical we do immediately,  the political takes *forever*
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Wed Jun 29 01:02:01 2005

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:40 EST