Edit - It should be known that I was initially researching this issue back in 2012 and the solution was surely not as known as it is now, otherwise, I'd have found it then. :)

2 years is a long time to deal with sluggish VMs. Pings to other boxes in the same network would vary between 30ms all the way up to 300ms. The truth of the matter is that I had given up. "Fix" after "fix" involving various offloading features being disabled had led me nowhere, so I stopped researching and chalked it up to some inherent issue with Hyper-V on 2008 R2.

Today, observing read-only Friday, I decided to use the term literally and do research all day into various unsolved issues I've had in the past, so that I could come in on Monday hopefully with some fixes.

I found it, and in my pure excitement, after testing on my standby host, I broke code and went out of read-only mode on prod, and the difference it has made is nothing short of glorious.

ENVIRONMENT

My Hyper-V hosts are Dell PowerEdge R520, utilizing Broadcom NetXtreme 1Gb NICs and running Server 2008R2 SP2. Firmware/drivers all up to date. The issue has only ever existed on the guest VMs, never the host nor any other baremetal box.

RESOLUTION

There's this little thing called Virtual Machine Queues. In short, it increases overall throughput for VMs by offloading virtual network processing to the physical adapter. Read more here.

Prior to stumbling across that article, I had actually stumbled upon a resolution that basically solves the issue by simply disabling VMQ on the physical adapters assigned to the VMs. But I started reading about VMQ and I wanted it!
So I then found the above article and realized the problem:

Broadcom has VMQ enabled by default, however, there is a registry value that needs to be added first for VMQ to function properly. Without the registry value, you get the problem of slow network performance.

STEPS

  1. Since Broadcom has VMQ enabled by default, I disable it in the configuration properties of all my physical adapters assigned to my guests, in the advanced tab. Intel NIC owners need not do this step, as Intel has it disabled by default.

  2. On my Hyper-V host, I open Regedit and drill down to HKLM\SYSTEM\CurrentControlSet\Services\VMSMP\Parameters

  3. I then add to Parameters a DWORD value and name it BelowTenGigVmqEnabled (since I have a 1Gb adapter. 10Gb owners need TenGigVmqEnabled) and give it a value of 1.

  4. Finally, I go back to the physical adapters and enable Virtual Machine Queues. Instantaneously, network performance issues are solved and my pings are all <1ms. This also actually sped up the OS in my VMs and they are no longer sluggish. Queries to AD now return in a snap. My world is now beautiful.

As far as I'm aware, this applies to 2012 as well. Someone else may be able to confirm that.

SO... That's it! I'm going to have a great Friday night.

Edit 2 - The gift keeps on giving. Very basically, we have a proprietary sort of middleware application that connects to service mailboxes for clients via POP3 in order to process emails and table them in a database to then send via satellite to offshore vessels, among other data, both ways. Normally this middleware app takes around 10 minutes to get through all the clients' mailboxes. Well, not long after the fix, I notified a developer to keep an eye on the app and let me know if the run time changes...

A few minutes later he walks to my desk and tells me to RDP into the utility server. I do. He then tells me to look at the Task Scheduler history. I do. The task completed in 1 minute and 19 seconds! So basically, this means we can update the intervals so that data exchange is closer to real-time, and this will positively impact the core of our business.

Sometimes it's the little things that make all the difference.

P.S. my boss let everyone go home early. I drink beer as we speak.

Edit 3 - Whoever gilded me, PM me with evidence of your gilding so that I can know your username. I will then, on Monday, name a log file after you, which is generated from a PS script I have on a scheduled task that deletes archived files older than 30 days. I will then send you a screen grab of the log file for your keepsake and knowledge that whoever comes after me at this company will always wonder what the hell /u/WhoEverYouAre_log means until he Googles it and finds you, and eventually this post.

这种方法依然无法解决我的问题,我自己笔记本上win10安装Hyper-v,安装centos7后,centos里面firefox和terminal里网络超级慢;

于是,各种搜索,最后有个帖子的评论里有个人说自己测试,如果不使用虚拟交换机的DHCP分配IP,而是自己指定IP,速度就很快,于是我自己通过测试发现,的确是这样的。。。。

from:https://www.reddit.com/r/sysadmin/comments/2k7jn5/after_2_years_i_have_finally_solved_my_slow/

After 2 years, I have finally solved my "Slow Hyper-V Guest Network Performance" issue. I am ecstatic.的更多相关文章

  1. Raft

    http://thesecretlivesofdata.com/raft/ https://github.com/coreos/etcd   1 Introduction Consensus algo ...

  2. CITS1401 Computational Thinking with Python

    Department of Computer Science and Software EngineeringCITS1401 ComputationalThinking with PythonPro ...

  3. Analytic Functions in Oracle

    Contents Overview and IntroductionHow Analytic Functions WorkThe SyntaxExamplesCalculate a running T ...

  4. 2690036 - SAP HANA 2.0 SPS 03 Database Revision 034

    Symptom This is the SAP Release Note for SAP HANA 2.0 Database Revision 034 (2.00.034.00) of the SAP ...

  5. Arbiter

    from  2015-EDCAV-Problems encountered in various arbitration techniques used in NOC router-A survey ...

  6. 学习笔记:The Best of MySQL Forum

    http://mysql.rjweb.org/bestof.html I have tagged many of the better forum threads. 'Better' is based ...

  7. C++ Core Guidelines

    C++ Core Guidelines September 9, 2015 Editors: Bjarne Stroustrup Herb Sutter This document is a very ...

  8. linux tcp调优

    Linux TCP Performance Tuning News Linux Performance Tuning Recommended Books Recommended Links Linux ...

  9. Neural Networks and Deep Learning

    Neural Networks and Deep Learning This is the first course of the deep learning specialization at Co ...

随机推荐

  1. 【API】遍历进程的几种方式

    1.说明 枚举进程的常见几种方法 方法1:CreateToolhelp32Snapshot().Process32First()和Process32Next() 方法2:EnumProcesses() ...

  2. Linux获取/dev/input目录下的event对应的设备【转】

    转自:https://blog.csdn.net/qq_21792169/article/details/51458855 当我们在Linux操作系统下使用input子系统时,当我们先插鼠标,在插上摄 ...

  3. Python查找算法之 -- 列表查找和二分查找

    一.列表查找:从列表中查找指定元素 输入:列表.待查找元素 输出:元素下标或未查找到元素 二.列表查找方式 顺序查找 : 从列表的第一个元素开始遍历,知道找到为止.时间复杂度O(n) 二分查找 :从有 ...

  4. protected

    protected  继承访问权限 在同一包中可以访问protected成员. 继承状态可以访问protected成员 在不同包中非继承不可以访问protected成员.

  5. 4.类型设计规范《.NET设计规范》

    类是引用类型的一般情况,占了框架中的大多情况,类的流行归于它支持面向对象的特征,以及它的普遍的适用性,基类和抽象类是两个特殊的逻辑分组,它们与扩张性有关. 由于CLR不支持多继承,接口类型可以用来模拟 ...

  6. iOS企业包安装注意事项详解(解决提示iPhone未受信任的问题)

    请在Safari浏览器上打开该页面才能正常安装. 如果您是微信中查看该页面,请点击右上角,在弹出的菜单中选择“在Safari中打开” 对于iOS版本为7.X和8.X的用户,直接点击安装即可(此处为it ...

  7. .NetCore下使用Prometheus实现系统监控和警报 (三)集成Grafana

    有了前面InfluxDB的经验,这里就很好处理了,数据类型选择Prometheus选地址等,填好保存 同样通过导入数据处理,我们在https://grafana.com/dashboards上选择Da ...

  8. PHP 操作redis 封装的类 转的

    <?php/** * Redis 操作,支持 Master/Slave 的负载集群 * * @author jackluo */class RedisCluster{           // ...

  9. PHP SMTP邮件发送(可加附件)

    <?php /** * @param $address mixed 收件人 多个收件人/或需要设置收件人昵称时为数组 array($address1,$address1)/array(array ...

  10. 有了这套flexible.js 移动端自适应方案,你就能在移动端的来去自如, (*^__^*)

    flexible.js 移动端自适应方案 一,flexible.js 的使用方式: github地址:https://github.com/amfe/lib-flexible 官方文档地址:https ...