[GSOC] bhyve instruction caching

Mihai Carabas mihai.carabas at gmail.com
Sat May 24 20:03:28 UTC 2014


Hi,

My name is Mihai Carabas and I'm working this GSoC edition on bhyve
instruction caching: cache all the instructions that need to the
emulated in order to jump off the fetch and decode part which is very
expensive.

Until now I've prepared my testing/developing environment: FreeBSD on
a Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz with 16GB RAM (it's an HP
blade), duplicate the FreeBSD repo in my namespace [1]  and cloned it
locally on this machine. Also I've setup and configured some
development tools I'm used to (bash//bash_completion/vim/cscope).

I've also created a virtual machine and run it with bhyve. Here I had
some problems with the NAT daemon (I need this to give internet access
to the VM). By default, if you enable nat (natd_enable) all the
traffic is passed through the natd daemon and thus this entered in a
high CPU load whenever I was making an SSH connection. I've found on
the Internet some more specific rules to do NAT only for the VM, not
for all incoming local connection, like it is by default. This solved
the problem.

I've started acommodating with the VMM code and started developing
interface stubs like adding/removing/getting instuctions from the
cache. These was reviewed by Neel and modified accordingly. Right now
they are in a separate file [2]. I've also placed this calls in the
VMM code, in the essential parts. To resume: I've made the caching
logic part.

I will come next week with some feedback on some strategies for
caching efficiently the instructions and probably some implementation
details.

Thanks,
Mihai

[1] https://socsvn.freebsd.org/socsvn/soc2014/mihai/
[2] https://socsvn.freebsd.org/socsvn/soc2014/mihai/bhyve-icache-head/sys/amd64/include/vmm_instruction_cache.h


More information about the soc-status mailing list