From owner-svn-doc-head@freebsd.org Tue Apr 12 22:44:48 2016 Return-Path: Delivered-To: svn-doc-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9850FB0EFC4; Tue, 12 Apr 2016 22:44:48 +0000 (UTC) (envelope-from wblock@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6FA07124E; Tue, 12 Apr 2016 22:44:48 +0000 (UTC) (envelope-from wblock@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u3CMilSG076348; Tue, 12 Apr 2016 22:44:47 GMT (envelope-from wblock@FreeBSD.org) Received: (from wblock@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u3CMilpm076347; Tue, 12 Apr 2016 22:44:47 GMT (envelope-from wblock@FreeBSD.org) Message-Id: <201604122244.u3CMilpm076347@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: wblock set sender to wblock@FreeBSD.org using -f From: Warren Block Date: Tue, 12 Apr 2016 22:44:47 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r48596 - head/en_US.ISO8859-1/htdocs/news/status X-SVN-Group: doc-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-doc-head@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: SVN commit messages for the doc tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Apr 2016 22:44:48 -0000 Author: wblock Date: Tue Apr 12 22:44:47 2016 New Revision: 48596 URL: https://svnweb.freebsd.org/changeset/doc/48596 Log: Add report on BIS drivers from Dexuan Cui . Modified: head/en_US.ISO8859-1/htdocs/news/status/report-2016-01-2016-03.xml Modified: head/en_US.ISO8859-1/htdocs/news/status/report-2016-01-2016-03.xml ============================================================================== --- head/en_US.ISO8859-1/htdocs/news/status/report-2016-01-2016-03.xml Tue Apr 12 22:31:59 2016 (r48595) +++ head/en_US.ISO8859-1/htdocs/news/status/report-2016-01-2016-03.xml Tue Apr 12 22:44:47 2016 (r48596) @@ -1331,4 +1331,173 @@ + + + FreeBSD Integration Services (BIS) + + + + + Sepherosa + Ziehau + + sepherosa@gmail.com + + + + + Howard + Su + + howard0su@gmail.com + + + + + Hongjiang + Zhang + + honzhan@microsoft.com + + + + + Dexuan + Cui + + decui@microsoft.com + + + + + FreeBSD Virtual Machines on Microsoft Hyper-V + Supported Linux and FreeBSD virtual machines for Hyper-V on Windows + + + +

When &os; virtual machines (VMs) run on Hyper-V, using + Hyper-V synthetic devices is recommended to get the best + network and storage performance and make full use of all the + benefits that Hyper-V provides. The collection of drivers that + are required to use Hyper-V synthetic devices in FreeBSD are + known as FreeBSD Integration Services (BIS). Some of the BIS + drivers (like network and storage drivers) have existed in + FreeBSD 9.x and 10.x for years, but there are still some + performance and stability issues and bugs. Compared with + Windows and Linux VMs, the current BIS lacks some useful + features, e.g., live virtual machine backup, TRIM/Unmap, the + support for UEFI VM (boot from UEFI), etc.

+ +

During the past quarter, we made a great progress on the + performance tuning for Hyper-V network driver. We also + refactored and cleaned up the VMBus driver, and fixed some + important bugs. All the work makes FreeBSD VMs run even better + on Hyper-V and the Hyper-V based cloud platform Azure!

+ +

Our work during 2016Q1 is documented below:

+ +

Optimizing the performance of Hyper-V network driver

+ +
    +
  • We added the LRO (Large Receive Offloading) support to the + driver and properly handled the ACK packets. This + effectively reduced the CPU cycles used in the TCP/IP stack + and dramatically boosted the network performance!
  • + +
  • We enabled the vRSS (virtual Receive Side Scaling) support + for the driver. This greatly improved the network + performance for SMP virtual machine (VM).
  • + +
  • We used a separate Tx kernel thread to relieve the Rx + thread of transmitting packets (the Rx thread tried to + transmit packets after receiving ACKs), so the Rx thread can + receive packets and send ACKs faster.
  • + +
  • Now we can reach a VM-to-VM throughput of 9.1Gbps on a + host with 10Gbps physical NIC, and over 20Gbps on a host + with 40Gbps NIC, and meanwhile the CPUs still have plenty of + cycles for applications.
  • + +
  • We also enabled IP header checksum offloading, and RX + checksum offloading for UDP.
  • + +
  • Further performance tuning is working in progress.
  • +
+ +

Refactoring and Cleaning up the VMBus driver code

+ +
    +
  • Instead of using swi threads directly, now we use per-CPU + taskqueue_create_fast() threads for event and message + handling, making the code more FreeBSD conventional.
  • + +
  • Made a lot of cleanup to the hv_utils code (HeartBeat, + TimeSync and Shutdown) and we are further cleaning up the + KVP code.
  • + +
  • Used a new message/interrupt slot for Hyper-V timer, so + the handling of timer and non-timer messages can be + distinguished, fixing a potential issue.
  • + +
  • Instead of finding an available IDT vector by hacking, + we're changing to use the normal method, i.e., + lapic_ipi_alloc().
  • + +
  • We're modularizing the Hyper-V modules: 1) they will be + loaded in the loader; 2) we're going to enhance devd(8) to + improve the hot plug case.
  • +
+ +

Bug Fixing

+ +
    +
  • Fixed the "spurious multiple disks" issue (PR 206630 ??? + FreeBSD 10.2 on Windows 10 and 2016 server may not boot due + to multiple invalid disks issue) in the Hyper-V storage + driver and now FreeBSD VM can reliably boot on Win10 and + 2016 hosts.
  • + +
  • Fixed the OACTIVE issue (PR 207297 - [Hyper-V] FreeBSD + 10.2 on hyperv lost network under heavy load for + OACTIVE).
  • + +
  • Fixed TSC calibration issue (PR 208238 - [Hyper-V] TSC + frequency is not correctly detected: "calcru: runtime went + backwards") and we won't see the "runtime went backwards" + messages anymore!
  • + +
  • Fixed the "very slow terminal" issue of 11-CURRENT by + enabling text mode when we're running on hypervisors.
  • + +
  • Fixed the "unknown dhcp option value 0xf5" issue in + dhclient(8) by asking dhclient(8) to + ignore the option and &os; VM on Azure can reliably get IP + now.
  • +
+ +

Found a workaround for PR 20824 ([Hyper-V] VM network may not + work over virtual switch based on wireless NIC): add + "net.link.ether.inet.max_age=60" in /etc/sysctl.conf.

+ +

We plan to add support for live virtual machine backup, + TRIM/Unmap, and UEFI VMs (Hyper-V Generation-2 VMs).

+ +

We published errata (FreeBSD-EN-16:04.hyperv, + FreeBSD-EN-16:05.hv_netvsc) with the Release Engineering team, + so 10.1 and 10.2 users can easily get the fixes of KVP and TCP + checksum by upgrading the system.

+ +

We published BIS test cases for Hyper-V on github: + https://github.com/FreeBSDonHyper-V/Test-BIS and we are going + to publish the test cases for Azure soon.

+ +

This project is sponsored by Microsoft.

+ + + + Microsoft + + + +