Date: Wed, 27 May 2015 09:36:16 GMT From: stefano@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286213 - soc2015/stefano Message-ID: <201505270936.t4R9aGSr093812@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: stefano Date: Wed May 27 09:36:16 2015 New Revision: 286213 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286213 Log: add README Added: soc2015/stefano/README Added: soc2015/stefano/README ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2015/stefano/README Wed May 27 09:36:16 2015 (r286213) @@ -0,0 +1,86 @@ +A FreeBSD/bhyve version of the netmap virtual passthrough (ptnetmap) for VMs. + +Student: Stefano Garzarella +Mentor: Luigi Rizzo + +============================ Project description =============================== + +To avoid VMs networking bottlenecks, I recently worked with my advisors on +ptnetmap: a netmap virtual passthrough for VMs (ptnetmap). +ptnetmap allows userspace applications running in a guest VM to safely use any +netmap port with near-native performance (physical devices [14.88 Mpps], +software switches [20 Mpps], shared memory channels [75 Mpps]). +I developed a preliminary version for linux/KVM hosts. +For this GSoC project I'll develop host ptnetmap support for bhyve/FreeBSD. +The code will be completely BSD licensed. (We wrote ourselves the entire +ptnemtap code for linux, so we own the copyright on it). + +The implementation of ptnetmap will be based on our previous prototype above, +which requires work in the following areas: + +- netmap framework modifications both for the guest part and the host part, +to implement the virtio-like communication and the shared netmap memory; +(existing code ~ 1900 loc in netmap framework + 300 loc OS specific; +estimated new code ~ 300 + 300 loc) + +- guest device driver modifications for the setup of the notification mechanism +and to share netmap memory; +(estimated new code ~800 loc for virtio, assuming the existing netmap support +for virtio developed by my advisor) + +- bhyve extensions to expose netmap host memory to the guest and to exchange +notifications. We need a mechanism like linux's eventfd to exchange +notifications and a way to expose the host memory to the guest through PCI +device. (estimated new code unknown) + +=============================== Deliverables =================================== + +D1 (due by week 3): +modify virtio device driver to allow the FreeBSD guest to use ptnetmap. +(We can test it on linux-KVM where ptnetmap is already done.) +Since the device driver is used for the setup, we expect to have the same +performance of e1000. + +D2 (due by mid-term): +map netmap host memory into the guest. We need to expose the memory of the +netmap instance running in the host to the netmap instance running in the guest. +Risk factor: In linux we used PCI BAR to expose the host memory to the guest, +but we don't know if it is possible in easy way also in bhyve. + +D3 (due by week 9): +implement notification mechanism in bhyve/FreeBSD. We want to have a similar +mechanism to ioeventfd and irqfd available in linux, to exchange notifications +between guest and host threads. Risk factor: We don't know how long it takes +because in linux we had eventfd already implemented. + +D4 (due by the end of project): +kernel thread in netmap host adapter to implement ptnetmap on FreeBSD host. +We expect to have the same performance of KVM (over 20 Mpps on VALE port; over +75 Mpps on netmap-pipe; line rate [14.88 Mpps] on Physical [10Gbps] NICs). +The code that the kthread runs, is already done. We need to implement only the +functions to create/delete kernel thread and to handle notifications. +(~300 loc on linux). + +================================ Milestones ==================================== +Start date: 2015/05/25 +Estimated end dates: 2015/08/17-21 + +Timetable: +Week 1-2: --- STARTED --- +add ptnetmap support to virtio device driver and QEMU frontend [D1]. +Week 3: +test, bugfix, and performance evaluation [D1]. +Week 4-5: +write code to map netmap host memory into the guest [D2]. +Week 6: +test and bugfix [D2]. prepare documents to mid-term evaluation. +Week 7-8: +implement notification mechanism in bhyve/freebsd [D3]. +Week 9: +test and bugfix [D3]. +Week 10: +implement kernel thread in netmap host adapter [D4]. +Week 11: +test and performance evaluation [D4]. +Week 12: +clean code and prepare documents to final evaluation. \ No newline at end of file
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505270936.t4R9aGSr093812>