[PATCH] update: some optimizations for Virtual Machines

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

 



Just a quick note to say that I have updated my patch.

More precisely I have refined the virtualized syscall nesting.

When there are more engines for a task and report-callbacks can
change the status the quiescent state must be managed for each engine.

syscall enter: process -> VM0 -> VM1 (modify) -> VM2 (second
modification) -> kernel
syscall exit: kernel -> VM2 (restore) -> VM1 (restore) -> VM0 -> process

Both for syscall enter and exit the modification of VM2 must take place
after VM1 has completed its job.
If VM1 requires the quiescent state to compute its modification of the state
VM2 report_syscall_entry has to wait for VM1 to finish its job.
The same for restore in the opposite way.

One more idea:
The entry.S code provides the feature to skip the system call (by setting
the syscall number to -1).
This feature must be provided to VM nesting.

The new patch provide the correct nesting and if VM1 (in the example)
sets the syscall number to -1 it skips also VM2 report syscall report.
In this case during syscall exit skips VM2, restore the syscall number
and calls the report_syscall_exit from VM1 and then VM0.
Maybe it is useless to call VM1 too (starting from VM0 given that the 
call has been skipped) but for now I do in this way for the sake of
simmetry.

The new patch implements this policy.

Maybe the same idea (wait for quiescent state at each engine) must be 
applied to all the other report* that can change the status (e.g. 
report_signal?).

renzo


[Index of Archives]     [Kernel Discussion]     [Gimp]     [Yosemite News]

  Powered by Linux