First page Back Continue Last page Summary Graphics
Performance
Tracing thread is a big bottleneck
- A UML system call takes 4 host context switches
- Signal process when it is starting or finishing a system call
Block driver
- One I/O thread implies one outstanding I/O request
- Use async I/O facilities to have many outstanding requests
- Use mmap instead of read/write
Notes:
Performance needs to be improved. The tracing thread is a peformance bottleneck since every system call results in four context switches. Eliminating it would be very good for performance.
The block device is currently another problem. It can only have one outstanding request at a time. As a result, the performance of IO-bound processes suffers. Rik van Riel has suggested doing IO through mmap rather than through read/write, which is an interesting idea.
Some work may also be done to make the native kernel a better host for UML. Eliminating the tracing thread will require a new mechanism for intercepting system calls, like delivering a special signal to the process.