Add FreeBSD Integration Services entry from Dexuan Cui

This commit is contained in:
Benjamin Kaduk 2016-01-15 03:45:09 +00:00
parent 39acb24640
commit 73b50e2eb9
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48019

View file

@ -2206,4 +2206,134 @@
</task>
</help>
</project>
<project cat='kern'>
<title>&os; Integration Services (BIS) </title>
<contact>
<person>
<name>
<given>Dexuan</given>
<common>Cui</common>
</name>
<email>decui@microsoft.com</email>
</person>
<person>
<name>
<given>Hongjiang</given>
<common>Zhang</common>
</name>
<email>honzhan@microsoft.com</email>
</person>
</contact>
<links>
<url href="https://wiki.FreeBSD.org/HyperV">&os; Virtual Machines on Microsoft Hyper-V</url>
<url href="https://technet.microsoft.com/en-us/library/dn531030.aspx">Linux and &os; Virtual Machines on Hyper-V</url>
</links>
<body>
<p>When &os; virtual machines (VMs) run on Hyper-V, in order
to get the best network and storage performance and make full use
of all the benefits that Hyper-V provides, it is recommended to
use Hyper-V synthetic devices. The collection of drivers that are
required to run Hyper-V synthetic devices in &os; are known as
&os; Integration Services (BIS). Some of the BIS drivers (like
network and storage drivers) have existed in &os; 9.x and 10.x for
years, but there are still some performance and stability issues
and bugs. Additionally, compared with Windows and Linux VMs, the
current BIS lacks some important features, such as the virtual
Receive Side Scaling (vRSS) support in the Hyper-V network driver
and the support for UEFI VM (boot from UEFI), among others.</p>
<p>We are now working more on the issues and performance
tuning to make &os; VM run better on Hyper-V and the Hyper-V based
cloud platform Azure.</p>
<p>Our work during 2015Q4 is documented below:</p>
<ul>
<li>Optimizing the VMBus driver and Hyper-V network driver
for performance:
<ul>
<li>Sent out patches to enable <tt>INTR_MPSAFE</tt> for
the interrupt handling thread, speed up
relid-to-channel lookup in the thread by map table,
and optimize the VMBus ringbuffer writable
notification to the host.</li>
<li>Developing a patch to enable the virtual Receive
Side Scaling (vRSS) for Hyper-V network device driver.
This will greatly improve the network performance for
SMP virtual machine (VM).</li>
<li>Sent out a patch to enable the Hyper-V timer, which
will improve the accuracy of timekeeping when &os; VMs
run on Hyper-V.</li>
</ul>
</li>
<li>Fixing bugs and cleaning up the code:
<ul>
<li>Fixed a bug in checksum offloading (PR 203630
&mdash; [Hyper-V] [nat] [tcp] 10.2 NAT bug in TCP stack
or hyperv netsvc driver) in the Hyper-V network driver,
making &os; VM based NAT gateways work more reliably.</li>
<li>Fixed a serialization issue in the initialization of
VMBus devices, fixing PR 205156 ([Hyper-V] NICs' (hn0,
hn1) MAC addresses can appear in an uncertain way across
reboot).</li>
<li>Fixed a KVP (Key-Value Pair) issue (retrieving a
key's value can hang for an uncertain period of
time).</li>
<li>Added ioctl support for SIOCGIFMEDIA for the Hyper-V
network driver, fixing PR 187006 ([Hyper-V] dynamic
address (DHCP) obtaining doesn't work on HYPER-V OS
2012 R2).</li>
<li>Sent out patches to add an interrupt counter for
Hyper-V VMBus interrupts (so the user can easily get
the statistical information about VMBus interrupts),
and fix the KVP daemon's poll timeout (so the daemon
will avoid unnecessary polling every 100
milliseconds.</li>
<li>Identified a TSC calibration issue: the i8254 PIT
timer emulation of Hyper-V is not fully reliable, so
the Hyper-V time counter should be used to calibrate
the TSC. A patch was drafted. With the patch, it looks
the warning kernel message (e.g., &quot;calcru: runtime
went backwards from 46204978 usec to 23362331 usec for
pid 0 (kernel)&quot;) will go away, and the time-based
tracing of Dtrace will be more accurate.</li>
</ul>
</li>
<li>We plan to add support for UEFI VMs (a.k.a., Hyper-V
Generation-2 VMs). Currently some issues and to-do items were
identified: e.g., we cannot use the i8254 PIT to calibrate the
TSC because the i8254 PIT does not exist in a UEFI VM, and we
need to add support for the Hyper-V synthetic
keyboard/mouse/framebuffer device.</li>
<li>We are working on a disk detection issue: when a &os; VM
runs on a Windows Server 2016 Technical Preview host, the VM
will detect 16 disks whereas only 1 disk is configured for the
VM. Due to this issue, VMs running on these hosts can fail to
boot. A workaround patch was made and we are trying to make a
formal fix.</li>
<li>We are tidying up some internal BIS test cases and plan
to publish them on github.</li>
</ul>
</body>
<sponsor>
Microsoft
</sponsor>
</project>
</report>