Add FreeBSD Integration Services entry from Dexuan Cui
This commit is contained in:
parent
39acb24640
commit
73b50e2eb9
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48019
1 changed files with 130 additions and 0 deletions
|
@ -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
|
||||
— [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., "calcru: runtime
|
||||
went backwards from 46204978 usec to 23362331 usec for
|
||||
pid 0 (kernel)") 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>
|
||||
|
|
Loading…
Reference in a new issue