做服务器开发的朋友一定要看这篇文章,虽然是我转载的——全面认识服务器网卡:理论篇

[09-03 10:44:14]出处:PConline作者:笨人责任编辑:gongjianhui

 

 

  服务器和我们常见的PC一样,都是由CPU、主板、内存、硬盘、网卡等配件组成的。笨人跟大家讨论服务器的时候,发现很多朋友在习惯上,都对CPU、主板、内存、硬盘等部件比较在意,对网卡、电源等就不太重视了。大多数抱着有就行、能用就好的这种心理。其实上,在服务器里面,电源是一个相当关键的部件。服务器的要求,是7×24小时不间断运作,电源作为整个机器的能源供应系统,他的稳定性和耐久性关系到整个系统的稳定性和耐久性,所以电源这一部分,实在不可等闲视之。关于服务器电源的技术,我们以后有机会也可以专门讨论,而今天我们讨论的主角,是服务器里很重要,但是又最经常被人家忽视的另一个配件:网卡。

  PC和服务器上都有网卡,那么什么是服务器网卡服务器网卡又有什么特殊地方?跟普通PC网卡有什么区别呢?在讨论这个问题之前,我们分别来看看PC和服务器上网卡的作用。

  

做服务器开发的朋友一定要看这篇文章,虽然是我转载的——全面认识服务器网卡:理论篇_第1张图片

  典型的企业网络拓扑图

  PC网卡的作用其实大家都比较清楚了。上网、或者局域网之间传输一些数据,PC主要是根据本机键盘、鼠标等设备输入的指令,然后再根据这些指令处理数据。对PC来讲,网卡并非是关键配件,有了网卡,PC就能和其他设备方便的交换数据,但是网卡并不是不可缺少的,没有网卡,PC也能正常工作。

  但服务器上,网卡却是一个不折不扣关键部件。去过机房的朋友都知道,服务器在正常工作的时候,绝大部分仅接上两根线缆而已。哪两根线?一个是电源线,另外一个就是网线。显示器、键盘、鼠标这些在PC上必不可少的部件,在服务器上面却是属于闲置配件,或者叫做备件,只有在安装系统、大的系统调试的时候才用得上。平时服务器在工作的时候,服务器上的控制和调配,都是通过网络进行远程控制来完成的。而服务器工作任务,就是接受网络上传来的指令,然后根据指令作出相应的查询、运算、分析,然后将结果通过网络回传给指定的客户端。从这里,大家就能看出网卡对服务器的重要性了吧?可以说,没有网卡的机器,不能叫做服务器。

  既然服务器的网卡的作用如此重要,那么,服务器的网卡又跟普通PC网卡有什么不同呢?当然,谁都知道,从表面上看,他们价格是相差很远的。一块独立PC网卡,花个25元、30元,随便就能买到1个100M的网卡了,1000M网卡也不贵,200多块钱也多的是。但是服务器独立网卡价格就贵多了,常见的服务器网卡芯片厂商,有Intel、3COM、Marvell、Broadcom等,这些牌子的网卡,几百元的网卡只能算是入门级的,几千元的网卡也很常见。一些网卡大厂,例如Intel,他的网卡有桌面版和服务器版,而Intel对各个型号网卡属于哪个应用,都有明确的标注。

  

做服务器开发的朋友一定要看这篇文章,虽然是我转载的——全面认识服务器网卡:理论篇_第2张图片



  这块Intel 网卡标签上,明确标明:Desktop Adapter(桌面版)

  服务器的网卡贵这么多,根本就在于性能的不同。衡量网卡性能的指标,主要有以下三个:
  1、传输速度;
  2、CPU占用率;
  3、稳定性和安全性。

  下面我们从这三个方面,一一解析服务器网卡和PC网卡异同点。

 

 

  1、传输速度;

  我们区分网卡的等级,最常见、最直观的就是网卡的速率,我们说100M网卡、1000M网卡,指的就是网卡的传输速率。数字是最直观的,但是,有时候数字又是最容易迷惑人的。比如同样是1000M网卡,我们看到服务器上的网卡多数都是PCI-X接口的,新的也有PCI-E接口。而PC的网卡,则一律都是PCI接口的。PCI总线的带宽,只有133M/S,而1000M网卡的峰值数据带宽,是125M/S,按照全双工计算的话,则是250M/S,也就是说,PCI的带宽,根本不能满足千兆网卡的需要,而且我们要注意到,在整个系统里面,PCI带宽是共享的,就是说,硬盘、光驱、声卡、USB口等设备,都要跟网卡抢这可怜的133M/S带宽,所以,在PC上的所谓的千兆网卡,是不可能实现真正的千兆的速率的。PCI-X总线的带宽,则高达1066M/S,是普通PCI总线的8倍,对付千兆网卡的250M/S传输绰绰有余,就算是两个甚至更多千兆网卡,也可轻松应对。

  如果把整个系统当作个一城市的话,那网卡就是港口,而主板上的总线,则是港口配套的道路。PC上的千兆网卡,就好像一个道路很小的大港口,虽然港口的入口很大,但是配套的道路却很小,进来的货物,根本不能及时的运走。所以,PC上的千兆网卡,多数情况下只是一个美丽的幌子,根本达不到真正的千兆网卡的速度。而服务器的网卡,则从入口到出口,都具备巨大的带宽,所以能达到真正的千兆速度。

  

做服务器开发的朋友一定要看这篇文章,虽然是我转载的——全面认识服务器网卡:理论篇_第3张图片



  泰安S6611这块主板带了四个千兆网卡、四个光纤网卡,专为特殊应用而定制。

  服务器的网卡负担着所有来往数据的进出,有些应用的数据流量非常的大,甚至单个千兆网卡都不能满足。象网吧、宾馆、卡拉OK厅里的电影点播、大型企业里的文件共享,就是这种应用的典型例子。为了解决这个问题,网卡厂商也给出了解决方法,网卡绑定,负载均衡,这些就是网卡厂商提出的比较实用、经济的解决办法。

  网卡绑定,负载均衡这些名词听起来比较高深,但道理其实很简单,就是多个网卡使用同一个IP,协同工作,多个网卡象一个网卡那样使用,以达到更高的传输速度。服务器网卡都支持这类功能,以intel网卡为例,可以支持8个网卡同时绑定,实现8千兆的最高带宽。

  2、CPU占用率;

  CPU占用率是测评里面经常出现的一个指标,但是很多人对这个指标并没有引起太大的重视。实际上,CPU占用率也经常和另外一个参数联系起来,这个参数就是“并发数”。并发数这个概念,大家都比较好理解,指的是在单位时间内(一般是1秒),向系统发出的请求数量。但是PC对这个参数是没有什么要求的,这也是理所当然的。PC使用里,根本没有多大机会有很高的并发数。而服务器则就大不相同了,一台服务器,接受的客户端从几个到几千、几万都有,比如一个网站,访问者的每次点击,都是一个请求,而服务器可能要同时应对数百甚至上千上万个这样的请求,如果服务器,或者说服务器网卡不能及时的处理这些请求的话,这个服务器就瘫痪掉了。什么叫黑客攻击?调用大量的客户端,给某个服务器发送大量的无用请求,就是最简单、最直接的,也是最有效的攻击方法。并发数越高,消耗的CPU资源就越多,CPU占用率就越高了。

 

  因为服务器要求的并发数远远大于PC的,所以专用服务器网卡芯片,都具有一定的处理能力,能对这些请求进行初步的处理,所以可以大大减轻CPU的负担。看到这里,有的朋友就会问笨人了,服务器不是有多个CPU吗?现在还流行什么双核、四核CPU,一个服务器上有N个CPU计算核心,还怕网卡占用了这么一点CPU性能吗?假设我用了很强的CPU,那是不是就没必要用服务器的专用网卡了?在回答这个问题之前,我们来看看一个主板架构图:

  

做服务器开发的朋友一定要看这篇文章,虽然是我转载的——全面认识服务器网卡:理论篇_第4张图片



  最新的intel P35 芯片组构架图

  从上图我们可以看到,一个数据要从网卡去到CPU,要经过哪些路线:网卡=》南桥芯片=》北桥芯片=》内存=》CPU(如果是服务器的话,则是网卡CPU=》PCI-X桥接芯片=》北桥芯片=》内存=》CPU),CPU处理完了,同样要从相反的路线返回网卡那里,CPU处理这个数据,可能仅仅花了1个时钟周期的时间,但是这个数据的传输时间,却花了十几个甚至几十个时钟周期,CPU在处理这个数据之前,要花大量的时间来等待这个数据的传输,所以假设一个数据,由网卡芯片来处理的话,就能比CPU来处理节省下这些传输的时间。

  如果用港口来做比喻网卡的话。那么,具有一定处理性能的服务器网卡,就象配备了港口职员的港口,对一些初级的处理要求,就像来往货物的登记、运输秩序的安排、维护等等,这些基本的任务,港口自身就能独立完成了,所以就能做到高效、及时。而没有处理能力的PC网卡,则象那些没有专职职员的港口,所有的工作,都要交给市长(CPU)来处理,市长的工作能力,的确比普通职员强的多,但是市长要处理港口的事情,就要打报告,从海关,到局长,到市长办公室,一级一级的传文件上去。可能普通职员处理一项事情,平均用5分钟,市长能力强,只需要1分钟就完成了,但是文件传送的时间,却要好几个小时,所以算来,普通职员处理事件的效率反而比市长高十几倍、几十倍。

  从上面的例子我们也可以看出来,就算CPU的性能提升了,但是对整个流程来讲,提升的程度也是不明显的,因为大部分的时间,实际上都浪费在数据的传输上了。服务器网卡芯片的处理性能,虽然远远比不上CPU,但是却能够确确实实的分担CPU的负担。

  另外,值得注意的是,并发数跟流量并没有直接关系。客户端给服务器发送一个请求,可能只有几十、几百个字节,几千个这样的请求同时并发,总的数据流量也不过几M而已,但是这几千个并发请求对系统的压力,绝对不是那些廉价的PC网卡所能承担得起的。所以有的人,说什么人家机房才分配给我这个服务器几个M的带宽,所以拿个10M、100M的便宜网卡,几十块钱那种的,拿来做服务器网卡用,认为已经绰绰有余了,还讥笑别人的服务器用了千兆网卡是浪费,其实这是一个“无知者无畏”的表现,根本没搞清楚网卡在服务器里面的作用和地位。

  3、稳定性和安全性。

  服务器最重要的是什么?有很多人认为是性能,但是实际上,服务器的稳定性远比性能重要的多,为了保证服务器的稳定性,所有的配件都必须具备同样高的品质才行。服务器网卡除了芯片性能够好之外,用料充足和做工精良也是必须的。

  

做服务器开发的朋友一定要看这篇文章,虽然是我转载的——全面认识服务器网卡:理论篇_第5张图片

  3COM的服务器网卡,上面布满了昂贵的钽电容(黄色的小颗粒)

  网卡的稳定性也体现在数据传输的表现上,服务器网卡的传输曲线都很平滑,升降波动少。大家都知道,网络传输是以数据包的形式发送的,网络质量不行,就容易发生丢包的现象。如果网卡性能不够好,那么在网卡负载大的时候,丢包的概率就会上升,发生丢包后,数据就要重新传输,反过来又再次增加网卡的压力。

  在一些关键应用上,服务器的意外停机会造成巨大的损失,在这种情况下,服务器的关键部件,例如硬盘、电源等,都会采用冗余方案,以求最大程度的保证服务器的正常运行。服务器网卡作为关键部件之一,理所当然也具有冗余方案。上面我们提到过的网卡绑定、负载均衡等技术,同时也是一种冗余的方案,网卡绑定,多个网卡协同工作,其中某个网卡故障,或者某条网线故障,都不会影响到整个网络的正常连通,自然而然就能实现冗余功能了。

  以上三个方面,可以说是服务器网卡的优点,也是服务器网卡的价值所在。服务器网卡技术,跟其他子系统一样,也在不断的发展,笨人才疏学浅,所知不过其中万一,这篇小文,希望能起到抛砖引玉的作用,期待以与广大喜欢研究服务器硬件的朋友,一起探讨服务器的各类问题!

你可能感兴趣的:(项目管理经验,网络编程)