Tuesday, June 25, 2013

Apply for GSoC’13 - Nested Virtualization Project

Email: yzt356 at gmail dot com
Short description: I’m a student of Peking University, China, and now seeking for a master degree. My research area is distributed system and virtualization. I have focused on opensource community (especially Xen & kVM) for some time an I’d like to do something for opensource.
Please contact the mentor before applying so we can arrange for an IRC interview and get to know each other. Students who do not contact the mentor cannot be accepted.

Name: Arthur Chunqi Li
IRC nick: #xelatex
Phone number: +861861225XXXX (Please contact me via email)

Programming languages (fluent): C, python, assembly x86
Version control systems: Git SVN
Past open source contributions: Focus on Xen & KVM, report some bugs
Other relevant experience: I have done intern jobs in EMC and Intel about side-channel attack on virtualization and lightweight virtualization.

Why are you applying to QEMU.org?
My research area is virtualization and I have focused on Xen & KVM for some time. Some of my research work are now under KVM so I’m familiar with Qemu and KVM.

Why did you chose this project idea?
Mostly because I have great interest in it, and I think I can handle such a project.

Summary of your understanding of the project idea:
The project I apply for is “Improve nested virtualization support for x86”. which is mostly a testing work. Nested virtualization is a mechanism to run hypervisor in a virtualized environment. Nested virtualization is good for debugging hypervisor, migrating hypervisor and offering fine granularity virtualization. For KVM, nested virtualization is implemented but have a lot of bugs and unrealized features to run a nested environment. This project is to find bugs in nested environment with kvm-units-test and some other well-defined test cases. Some easy bug fixed codes should be patched for this project. The greatest challenge for this project is undetermined final goal because you don’t know what the bugs are until you find it, which is different from some programming projects. Besides testing project needs very good and detailed knowledge on the whole virtualization system as well as some hardware knowledge. Now I’m reading the manual of Intel & AMD CPU and try to get to know the vmx & svm well.

Outline of how you will tackle the project:
I will tackle the project in different steps:
1. Build up a nested virtualization environment and run some basic test cases of kvm-units-test. (Done, besides there is a bug just when I start running nested virt, I have found the reason and reported to the maillist.)
2. Reading manual and related materials related to nested virtualization.(Almost done)
3. Reading codes of kvm-units-test and try to understand the testing manners of test cases. (Doing)
4. Starting test with the current KVM codes and test cases, reporting and try to fix bugs.
5. Write special test cases (if any) for nested virtualization environment.
6. Some other works such as implementing new features (need to discussed with mentor).
How will you do the testing and the schedule.
  • May 28th ~ Jun 16th. Read through the materials including Intel Manual 3C and other docs related. 
  • Jun 17th ~ Jul 6th (3 weeks). VMX instructions check. This part consists of most VMX instructions (VMPTRLD, VMPTRST, VMXON, VMXOFF and so on), which is the basic of Intel VT. 
  • Jul 6th ~ Jul 29th (3 weeks). MSR checks and memory checks. In this part RDMSR and WRMSR of Intel VT related MSRs will be checked. MSR is CPU vendor diversified and I will only focused on some special vendor. Memory check has been implemented in kvm-test-units and I just need to refined it. 
  • Jul 30th ~ Aug 2nd (1 week). Prepare for mid-term evaluation. 
  • Aug 3rd ~ Sept 7th (5 weeks).  VM-enter & VM-exit checks, memory check. VM-enter and VM-exit is the key part of Intel VT and kvm-test-units lacks of these tests. APIC checks, including I/O APIC. In the period some other undetermined tests will carry on. And I may have a trip for about a week in this period. 
  • Sept 8th ~ Sept 14th (1 week). Handling some other affairs and reserve some flexible time for emergency. 
  • Sept 15th ~ Sept 23th (1 week). Prepare for final evaluation.
  • I’m open for any suggestions to this project, please contact me via Gmail at any time.

No comments:

Post a Comment