Page MenuHomeFreeBSD

hyperv/storvsc: tune storage performance by changing io max and channel selection
ClosedPublic

Authored by honzhan_microsoft.com on Aug 24 2016, 6:43 AM.
Tags
None
Referenced Files
F84451346: D7622.diff
Fri, May 24, 1:33 AM
F84434697: D7622.id19615.diff
Thu, May 23, 8:03 PM
Unknown Object (File)
Fri, May 10, 6:05 PM
Unknown Object (File)
Fri, May 3, 11:46 PM
Unknown Object (File)
Fri, May 3, 11:45 PM
Unknown Object (File)
Sat, Apr 27, 3:17 AM
Unknown Object (File)
Thu, Apr 25, 2:14 AM
Unknown Object (File)
Apr 24 2024, 11:33 AM

Details

Summary

Storage performance IOPS or latency will degrade under multiple thread test with FIO, when comparing with Linux for Hyper-V. The possible reasons are:
(1) IO request queue is not as long as Linux.
(2) outgoing channels were not fully utilized.

So, this fix targets to improve the storage performance by 2.2X on Azure with RAID0 (12 SSD 1T disks) after enlarging the max io request queue, and considering both CPUID and LUN for channel selection.

Submitted by: Hongjiang Zhang <honzhan microsoft com>

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

honzhan_microsoft.com retitled this revision from to hyperv/storvsc: tune storage performance by changing io max and channel selection.
sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
133 ↗(On Diff #19615)

Since the variable is u_int, we should use SYSCTL_UINT here.

718 ↗(On Diff #19615)

We probably should combine this two lines. Since ch_sel is only used once here.

sys/dev/hyperv/vmbus/vmbus_chan.c
1333 ↗(On Diff #19615)

I don't think we need this. vmbus_subchan_get() is already there.

sys/dev/hyperv/vmbus/vmbus_chanvar.h
92 ↗(On Diff #19615)

This does not look correct :P

136 ↗(On Diff #19615)

Probably put it in drivers instead of in channel. Not all drivers need this stat.

This revision was automatically updated to reflect the committed changes.