三个实用的提升网页性能技巧,提升网页性能技巧

虚拟化及整合关注于核心的计算资源像处理器以及存储,但是网络I/O资源经常被忽略。网络带宽以及设备配置对确保客户端/服务器高效运行同样很重要——尤其是现在与网络相关的技术在服务器以及网络适配器中不断涌现出来。让我们了解一些能够提升Hyper-V网络性能的技巧。

为新部署的微软Hyper-V环境中的主机和网络挑选合适的硬件并非易事,更不用说在生产环境中衡量和监控性能这项任务了。在本文中,我将剖析组成Hyper-V底层硬件架构的不同部件,先从处理器的配置开始说起,之后会介绍内存、存储和网络等子系统。

三个实用的提升网页性能技巧,提升网页性能技巧

1、display属性设置

先将元素设为display: none(需要1次重排和重绘),然后对这个节点进行100次操作,最后再恢复显示(需要1次重排和重绘)。这样一来,你就用两次重新渲染,取代了可能高达100次的重新渲染。

只在必要的时候,才将元素的display属性为可见,因为不可见的元素不影响重排和重绘。另外,visibility : hidden的元素只对重绘有影响,不影响重排。

 

2、position:absolute/fixed

position属性为absolute或fixed的元素,重排的开销会比较小,因为不用考虑它对其他元素的影响。

 

3、不要一条条地改变样式,而要通过改变class,或者csstext属性,一次性地改变样式

// bad
var left = 10;
var top = 10;
el.style.left = left + "px";
el.style.top  = top  + "px";

// good 
el.className += " theclassname";

// good
el.style.cssText += "; left: " + left + "px; top: " + top + "px;";

 

以上参考阮一峰技术博客:

1、
display属性设置 先将元素设为 display: none
(需要1次重排和重绘),然后对这个节点进…

三个提升网页性能技巧,提升网页技巧

1、display属性设置 先将元素设为display:
none需要1次重排和重绘),然后对这个节点进行100次操作,最后再恢复显示(需要1次重排和重绘)。这样一来,你就用两次重新渲染,取代了可能高达100次的重新渲染。
只在必要的时候,才将元素的display属性为可见,因为不可见的元素不影响重排和重绘。另外,visibility
: hidden的元素只对重绘有影响,不影响重排。  
2、position:absolute/fixed
position属性为absolute或fixed的元素,重排的开销会比较小,因为不用考虑它对其他元素的影响。
  3、不要一条条地改变样式,而要通过改变class一次性地改变样式
示例代码:

// bad
var left = 10;
var top = 10;
el.style.left = left + "px";
el.style.top  = top  + "px";

// good 
el.className += " theclassname";

 

1、display属性设置 先将元素设为display: none ( 需要1次重排和重绘
),然后对这个节点进行100次操作…

图片 1

图片 2

然后我们会深入介绍提升性能的方法和技巧、如何选择合适的Hyper-V版本、配置方面的常见问题,最后介绍虚拟机的性能监控以及这与物理环境监控有何不同之处。

选择正确的网络技术

虚拟化及整合关注于核心的计算资源像处理器、存储以及存储,但是网络I/O资源经常被忽略。网络带宽以及设备配置对确保客户端/服务器高效运行同样很重要——尤其是现在与网络相关的技术在服务器以及网络适配器中不断涌现出来。让我们了解一些能够提升Hyper-V网络性能的技巧。

注意:所有建议都适用于Windows Server 2008
R2(含服务包1)中的Hyper-V。就可扩展性方面的局限而言,即将推出的Windows
Server
8中新的Hyper-V版本有了很大的改进,但是这不是本文探讨的话题。这里给出的建议只适用于最新的Windows版本。

标准的网络依赖于动态主机配置协议给网络客户端动态分配IP地址,DHCP依赖于可用的DHCP服务器。在传统的网络中,找不到DHCP服务器将无法为新设备自动分配IP地址,一旦IP租约到期将无法连接现有的设备。即使是找不到DHCP服务器,自动的私有IP寻址(APIPA)也能使DHCP客户端获得IP地址以及子网掩码。默认情况下,APIPA将使用预留的IP地址,范围从169.254.0.1到169.254.255.254,子网掩码是255.255.0.0。APIPA每几分钟就会检查DHCP服务器,当DHCP服务可用时就将控制权移交给DHCP。一般来说,APIPA主要用于有较少客户端的小型组织,因此运行Hyper-V的Windows服务器平台通常会禁用APIPA。企业级数据中心将采用冗余的DHCP服务器以确保DHCP服务稳定运行。

选择正确的网络技术

虚拟处理器和逻辑处理器

虚拟机队列(VMQ)是Intel提供的网络硬件技术,旨在允许网络接口卡使用直接内存访问将内部帧直接传送到网卡的接收缓冲区。这样减少了对基于驱动器的流量交换的依赖性,提升了常见网络流量类型(包括TCP/IP、iSCSI、FCoE)传送到虚拟主机系统的效率。部分改进是由于不同的处理能够处理不同虚拟机的数据包—而不是一个处理器处理所有的网络数据交换。在大多数情况下,应该启用网卡上的VMQ,处理器还应该与外部的交换机进行绑定。

标准的网络依赖于动态主机配置协议给网络客户端动态分配IP地址,DHCP依赖于可用的DHCP服务器。在传统的网络中,找不到DHCP服务器将无法为新设备自动分配IP地址,一旦IP租约到期将无法连接现有的设备。即使是找不到DHCP服务器,自动的私有IP寻址(APIPA)也能使DHCP客户端获得IP地址以及子网掩码。默认情况下,APIPA将使用预留的IP地址,范围从169.254.0.1到169.254.255.254,子网掩码是255.255.0.0。APIPA每几分钟就会检查DHCP服务器,当DHCP服务可用时就将控制权移交给DHCP。一般来说,APIPA主要用于有较少客户端的小型组织,因此运行Hyper-V的Windows服务器平台通常会禁用APIPA。企业级数据中心将采用冗余的DHCP服务器以确保DHCP服务稳定运行。

我接触的IT管理员对于虚拟处理器和逻辑处理器是什么,它们对于某一个物理主机上虚拟机的最大数量有何影响经常存在一种误解。这不仅与分配给虚拟机的处理器数量有关,还与每个主机的物理内存数量直接有关(下一回会介绍)。

通过在硬件而不是在驱动器或者软件中实现整个TCP/IP协议栈,TCP卸载引擎旨在提升网络性能,减少了准备、形成、传输、接收、解包并收集网络数据包所需要进行的处理工作。TCP烟囱卸载类似,控制权仍保留在操作系统中但实际的数据交换在网卡中进行。一般来说,尽管基于软件的NIC绑定可能不支持卸载硬件,但可以在虚拟系统中启用卸载特性。如果虚拟服务器使用了网卡绑定,那么可以禁用卸载特性,否则通常应该启用卸载特性。

虚拟机队列(VMQ)是Intel提供的网络硬件技术,旨在允许网络接口卡使用直接内存访问将内部帧直接传送到网卡的接收缓冲区。这样减少了对基于驱动器的流量交换的依赖性,提升了常见网络流量类型(包括TCP/IP、iSCSI、FCoE)传送到虚拟主机系统的效率。部分改进是由于不同的处理能够处理不同虚拟机的数据包—而不是一个处理器处理所有的网络数据交换。在大多数情况下,应该启用网卡上的VMQ,处理器还应该与外部的交换机进行绑定。

逻辑处理器是多核处理器的一个核心,所以一个四核处理器有四个逻辑处理器。如果该四核处理器有超线程(Hyper
Threading)技术,它会显示为八个核心;这意味着,你的系统有八个逻辑处理器。尽管微软的说明文档这么介绍逻辑处理器,但是要注意:超线程并不会神奇地让处理器容量翻番。为了稳妥起见,就看核心算作逻辑处理器——如果你启用了超线程技术,其数量也不会翻番。

针对虚拟服务器另一个流行的配置是在传输集群共享卷、iSCSI以及在线迁移流量的网络中启用巨型帧。巨型帧数据包大小是9000或9014个字节,而不是常见的1500字节。通过在每个数据包中传输更多的数据,能够通过更少的数据包完成文件传输,网卡和主机系统的效率会提升。然而巨型帧同样意味着两端所有的网络元素(网卡、交换机以及SAN)都要支持巨型帧。

通过在硬件而不是在驱动器或者软件中实现整个TCP/IP协议栈,TCP卸载引擎旨在提升网络性能,减少了准备、形成、传输、接收、解包并收集网络数据包所需要进行的处理工作。TCP烟囱卸载类似,控制权仍保留在操作系统中但实际的数据交换在网卡中进行。一般来说,尽管基于软件的NIC绑定可能不支持卸载硬件,但可以在虚拟系统中启用卸载特性。如果虚拟服务器使用了网卡绑定,那么可以禁用卸载特性,否则通常应该启用卸载特性。

虚拟处理器是你分配给一个个虚拟机的资源;你能分配多少个虚拟处理器,取决于访客/虚拟机操作系统。在这里,操作系统版本越新,功能就越强;所以Windows
2008/2008 R2能与四个虚拟处理器协同运行,而Windows Server
2003只能被分配一两个虚拟处理器。SUSE
Linux企业版、CentOS和红帽企业版Linux(它们都是得到支持的操作系统版本)最多可以被分配四个虚拟处理器。如果你在虚拟桌面基础架构(VDI)环境中运行客户机操作系统,Windows
7最多可以与四个虚拟处理器协同运行,Vista能看到两个虚拟处理器,Windows XP
SP3能看到两个虚拟处理器。这里有更详细的信息:。

升级网卡固件以及驱动的时机

针对虚拟服务器另一个流行的配置是在传输集群共享卷、iSCSI以及在线迁移流量的网络中启用巨型帧。巨型帧数据包大小是9000或9014个字节,而不是常见的1500字节。通过在每个数据包中传输更多的数据,能够通过更少的数据包完成文件传输,网卡和主机系统的效率会提升。然而巨型帧同样意味着两端所有的网络元素(网卡、交换机以及SAN)都要支持巨型帧。

就因为你为某一个虚拟机分配了两个或四个虚拟处理器,并不是说你应该这么做。首先,由于跨处理器的通信,在任何多处理器系统中存在一定的开销——无论是物理处理器还是虚拟处理器。但是在较新的操作系统中开销比较低,所以Windows
2008 R2虚拟机使用四个虚拟处理器没什么问题,而Windows Server
2003可能需要进行测试,看看在你的特定环境下使用两个虚拟处理器有没有好处。其次,这完全取决于工作负载——有些应用程序是密集的多线程(想一想SQL
Server等类似应用),使用几个虚拟处理器比较好;而单线程应用程序或者只有几个线程的应用程序得到的好处并不大。

计算设备通常使用堆栈模式构建:硬件(芯片及连接)在底层,固件(比如BIOS)用于初始化并配置硬件,固件使用驱动与操作系统建立连接。bug以及固件或者驱动的编码技术不过关可能会带来性能问题。这种情况要比你想象的多,往往可以通过升级固件以及驱动来解决该问题。

升级网卡固件以及驱动的时机

另一个常见的误解是,为虚拟机分配一个或多个虚拟处理器与物理核心有关系。为虚拟机分配虚拟处理器其实更像为虚拟机分配一段预定的处理器时间,而虚拟机管理程序实际上把运行虚拟机的负担分摊到所有可用的处理器核心上。

然而,硬件、固件、驱动以及操作系统之间的相互关系可能很薄弱且易于出错。有时可能会导致意想不到的新问题或者bug,因此固件以及驱动升级很可能会导致更多的问题。因此不应该盲目升级。

计算设备通常使用堆栈模式构建:硬件(芯片及连接)在底层,固件(比如BIOS)用于初始化并配置硬件,固件使用驱动与操作系统建立连接。bug以及固件或者驱动的编码技术不过关可能会带来性能问题。这种情况要比你想象的多,往往可以通过升级固件以及驱动来解决该问题。

分配给某一个主机上多个虚拟机的虚拟处理器数量与微软的这个建议密切相关:一个系统中每个逻辑处理器的虚拟处理器至少是4个,每个逻辑处理器的虚拟处理器最多是8个。例外情况是:如果你在VDI环境下是清一色的Windows
7虚拟机,支持的最大比率是12;也就是说每个逻辑处理器的虚拟处理器最多可以是12个。

首先,确认升级后是否能真正解决问题。如果不是解决特定的问题,那么不建议升级。例如,如果固件升级能解决特定网卡不能启用TOE的bug,为了启用TOE并提升网络性能,升级固件可能很有必要。与之相反,如果固件升级修复了NIC并未使用的一个芯片的bug,反而可以不升级。

然而,硬件、固件、驱动以及操作系统之间的相互关系可能很薄弱且易于出错。有时可能会导致意想不到的新问题或者bug,因此固件以及驱动升级很可能会导致更多的问题。因此不应该盲目升级。

如果你有配备2个四核处理器(即八个逻辑处理器)的Hyper-V主机,那么运行8个虚拟机完全没问题,每个虚拟机有4个虚拟处理器(共32个虚拟处理器)和最多16个虚拟机(共64个虚拟处理器)。如果你为每个虚拟机只分配了两个虚拟处理器,那么在每个虚拟机一模一样的这个例子中把那些数量提高一倍。当然,在实际情况下,不同虚拟机中虚拟处理器的数量会有所不同,具体看里面运行的工作负载。

其次,应用到生产系统前要在实验环境中进行升级测试。测试有助于提高升级效率,识别潜在的结果并避免在生产环境中出现潜在的混乱局面。

首先,确认升级后是否能真正解决问题。如果不是解决特定的问题,那么不建议升级。例如,如果固件升级能解决特定网卡不能启用TOE的bug,为了启用TOE并提升网络性能,升级固件可能很有必要。与之相反,如果固件升级修复了NIC并未使用的一个芯片的bug,反而可以不升级。

想查看你主机上虚拟处理器与逻辑处理器的比率,你可以手动查看每一个运行的虚拟机,然后累计被分配的虚拟处理器的总数,这个方法不是很方便。更好的办法就是运行这个简单的PowerShell
cmdlet命令,它会给出答案:

网卡绑定如何影响虚拟机性能

其次,应用到生产系统前要在实验环境中进行升级测试。测试有助于提高升级效率,识别潜在的结果并避免在生产环境中出现潜在的混乱局面。

write-host (@(gwmi -ns root\virtualization MSVM_Processor).count /
(@(gwmi

网卡绑定给虚拟服务器带来了很多好处。绑定允许同一台服务器上的多个网卡适配器协同工作以聚合带宽并进行流量的故障切换。例如,可以绑定两个独立的千兆以太网端口以提供两倍带宽,在单个端口发生故障时也能够确保数据正常传输。

网卡绑定如何影响虚拟机性能

Win32_Processor) | measure -p NumberOfLogicalProcessors -sum).Sum)
“virtual

一般来说,管理流量、生产虚拟机流量以及虚拟机迁移任务都可以采用网卡绑定,无论是否适合你的企业都可以启用并配置网卡绑定。一个建议就是在分配负载前建立网卡绑定。另一个很流行的策略就是为客户虚拟机配置单-根I/O虚拟化也就是SR-IOV。

网卡绑定给虚拟服务器带来了很多好处。绑定允许同一台服务器上的多个网卡适配器协同工作以聚合带宽并进行流量的故障切换。例如,可以绑定两个独立的千兆以太网端口以提供两倍带宽,在单个端口发生故障时也能够确保数据正常传输。

processor(s) per logical processor” -f yellow

然而,不建议在iSCSI存储流量中采用网卡绑定。在Windows Server
2012及后续系统中建议优先采用多路径I/O也就是MPIO技术来处理iSCSI存储流量。

一般来说,管理流量、生产虚拟机流量以及虚拟机迁移任务都可以采用网卡绑定,无论是否适合你的企业都可以启用并配置网卡绑定。一个建议就是在分配负载前建立网卡绑定。另一个很流行的策略就是为客户虚拟机配置单-根I/O虚拟化也就是SR-IOV。

图片 3

网络资源及配置对虚拟机性能具有重大影响。因此IT专业人员应该考虑带宽、接口类型、驱动以及其他因素。但在复杂的网络环境中相互关系错综复杂,调整网络配置可能会遇到问题。在做出任何调整之前进行基准测试,每次只调整一个因素,然后建立新的性能基准对网络变更带来的影响进行评估。这样做能够帮助识别并解决未预料到的结果,客观地认识配置变更所带来的影响。

然而,不建议在iSCSI存储流量中采用网卡绑定。在Windows Server
2012及后续系统中建议优先采用多路径I/O也就是MPIO技术来处理iSCSI存储流量。

网络资源及配置对虚拟机性能具有重大影响。因此IT专业人员应该考虑带宽、接口类型、驱动以及其他因素。但在复杂的网络环境中相互关系错综复杂,调整网络配置可能会遇到问题。在做出任何调整之前进行基准测试,每次只调整一个因素,然后建立新的性能基准对网络变更带来的影响进行评估。这样做能够帮助识别并解决未预料到的结果,客观地认识配置变更所带来的影响。

【编辑推荐】

发表评论

电子邮件地址不会被公开。 必填项已用*标注