Software Switching优化

最近又看了���在twitter上, �P於�件�W�j不�模化, 或是效能不足的���. �f��在的, 我�X得�@�������在是�o意�x.  拿�件�W�j跟硬件�W�j相比, 就好像拿�u蛋和炸��相比, 一��是�o人吃的,  另一��是要人命的, �L�R牛不相干. 看�砜慈�,  都好像是�S家在市�鲇�息上,  彼此�^��. �^去我一直想往市�霾块T移��, �F在想想. 好�U�]去成. ��工程���是比�^好, 置身事外看看�蛞彩遣诲e, 不然我可能忍不住就��直接在�W上�R起�v���. 我也不要去��P或是�H低不同��I的看法, ��於技�g, 我一直希望用客�^和���H��用的�鼍�, 去�u��r值. ��竟每一�l代�a都是工程��用���F的�r�g所��出�淼�,  不���被市�龌蚴卿N售等相�P�h�}後的目的, 去被�H低或是��害. 工程��是一��辛苦且需受人尊敬的��I, 就如��初我第一天加入特�鸩筷��r, 指�]官�f的. 你��的兵�N, 是全世界最受尊敬的�N�, 不要被�e人看不起, 也不要自己�C�^了你的臂章.

回�w主�},  ��於��M化之後, �W�j在Hypervisor之�鹊男�能, 被�F今�W�j或是系�y技�g人�T自�尤シ指畛刹煌�技�g�I域之後,  �@些��的�_是很�y在�p方有共�R的情�r之化去被��. 所以�W�j人�T用硬件的架��去看待�件的�W�j技�g, 系�y�件人�T用不懂�W�j�咽鸬募��角度, 去看待�件�W�j, �f到�@�, 我真���件�W�j叫屈啊. �件�W�j弟兄, 你��沉冤太久了.  事��上,  如果你想真的弄清楚�件�W�j的�r值,  �真需同�r具�涠喾矫娴募夹g知�R, 不然在技�g��上很容易就出�F盲�c或是偏��.

�@�先澄清一��重要的概念,  �@之中最大的���}��落在Virtual Machine, Softwre Switching 和Hypervisor System的三角�P�S. 或是�f�@因�只是Virtual Machine 和 Hypervisor之�g的�P�S, 因��Software Switching 只是Hypervisor�鹊囊��程序模�K.  基本上, 你可能需要知道,  Virtual Machine只是Hypervisor上的一����用(Application), �@����用�M行所有的工作都是由Hypervisor 操作系�y所支�蔚�,  也就是�f,  ����到Hypervisor系�y��化的�r候, 必�以操作系�y的角度去思考, ��然�@也包含�件�W�j的主�}.

在一般x86的系�y��, 所有的application其��都是交由CPU作�橹苯舆\算�理, �K且由程序�砼�嘣�需要�Y源或是其他用途的分配. 在一��默�J�]有任何��化的��r下, Hypervisor��用的�W�j的程序��B就��如下�D般:

143001210.png

也就是�f,  �@其��就是��用(  virtual machine ) ��按照�鹘yOSI 7 Layer的作法, �K且�Y合由Hypervisor所提供的�W�j程序�M行每��layer的����理, ��然�@些�理全是��^Hypervisor系�y程序呼叫CPU的�Y源�M行的. 由於Hypervisor本身需要�理很多程序的, 在加上�W�j�@��密集的程序�求, CPU的工作自然���加重, �W�j效能及�定��然也就�]那�N好了.

如果想要改善�W�j�@方面的效能的�, ��然就是找�ひ恍┛梢�offload系�y�C制的方式, 只要Hypervisor系�y可以了解�@些�C制, 自然就可以�⒐ぷ餍遁d到�@些�C制上. 今日在Hypervisor上最常�的�C制,  �o非是使用�W卡的TSO, GSO,  LRO等等相�P�C制. ��然�W卡��然必�要能support�@些�C制,  才能卸�d�碜造��用 ( virtual machine )的�W�j程序�求.

143044277.png

透�^Driver�c系�y的�贤�, Hypervisor可以知道有哪些�C制可以���W�j����M行卸�d, �纳�D的表示可以看出��, 透�^�@些�C制, 原本需要呼叫Hypervisor�W�j程序�M行L4~L2的�W�jfragmentation的工作, 可以完全卸�d到�W卡上, 也就是�f, �W路程序可以�南到y上被�s�p, �K且交由�W卡�M行硬�w的�理. �@就是我��常�的TSO�C制. �@��方法可以大幅�⒌�CPU��於�W�j�理的耗�p及透�^�W卡的�理, 增�MPerformance.

PS: 每一��L4 Segment最大可支援64K Bytes, 而Ethernet的MTU��1518 Bytes. 一般�碚f我���算替�Q率可能使用一��比�^中立的值�M行�算, 大�s��32K Bytes. 如果以上�D��用���包 8K�硭�, 透�^TSO可以�p少5次��於Hypervisor系�y的�W�j程序的�求, 降低84%的CPU程序需求��於�我���.

在���H�y�中, 有�_�⑦@���C制和�]�_��, 我��人看�^差距最大可以到�_6倍左右. 一般�碚f也有2倍以上的差距,  ��然在�是在你使用什�N�拥�Hypervisor, 系�y�格等等有所不同. ��然�@�就算是最佳化了嘛?��然�不是, 因�榫退憬档土司W�j程序�ο到y的消耗, 但是�是存在�W�j程序在CPU上的分配���}, 因�槟愕木W�j流量不是一��8K的���包而已!!!

一般�碚f,  ���W�j程序被setup之後, 通常是咬在一��CPU被�绦�, �@���於那��CPU�碚f�是造成一定的���, 最�K�是影�到�W�j效能, 可能�е峦掏碌竭_一��瓶�i�c之後就上不去了. �@�����}�是回到了, �W卡的Driver��於CPU工作的分配的��化是�]有信息的, 所以�榱艘���W�j的程序可以在CPU之�g被��d均衡, �另外要���Receive Side Scaling ( RSS )的�C制去��迂��d均衡的工作, �@��部分在我之前的�y�上, 有30%的改善增�M.
PS: 我使用vSphere 5.5 + NSX vSwitch +STT Tunnel, 得到了�p向16Gbps的吞吐量, ��於�W�j��M化使用隧道�碚f, �@��值算是相��理想的.

所以如果一台hypervisor可以�u造出16Gbps的吞吐量, 那就vSwitch的技�g我想就�]有什�N需要好�|疑的. 因��vSwitch是支持一台hypervisor上的VM, �K不是一���C��上的hypervisor, �@是硬件交�Q�C地�P. 在�W�j��M化的�h�}上,  端到端的隧道其��需要透�^硬件交�Q�C所建��的高速�定的IP�W�j,  ��然如果我拿16Gbps 在Hypervisor��化後的���去跟一台背板是500Gbps以上ASIC的交�Q�C做比�^, 我想我一定是吹到�L受寒, 被�R踢到重��, 被牛�到�扰K破裂, 符合�L�R牛的��B才��做的事.

所以�D�l能力,  �@�c我想短�r�g��Hypervisor因��是�o法�c硬件交�Q�C比�M. 但是如我上述的, �件所建��的�W�j在利用物理�W�j的高�D�l性能之後, �c物理�W�j�O�渥畲蟮牟町�就是在控制平面的�模. 在x86 Server下, 切出一�K256MB的空�g作�樾畔⒋娣攀且���O�檩p�的工作, 但是在物理交�Q�C上, �s是一���O�榘嘿F的不可能. 所以��於�W�j��M化�碚f, �V求的是一��控制�模化, 但是效能合理化的�M合. 但是硬件�W�j追求的是效能�O大化但是�模有限的�M合, 我相信也很多人不同意�@���f法, 因�榇蠹宜�面�R的���}不一��, 所以��然看法也不同. 不�^�件�W�j的概念其���o�鹘y�W�j的人��砹艘欢ǖ乃伎夹n��,  所以�是一句老�,  守�f�]什�N不好, 不好你就不守了. ��新也�]什�N困�y, 怕�y就不��新了~ 青菜�}�N, 香蕉芭�贰�喜�g就好

最後感�x我�V州的同事, Jonathan Peng, 他��Google上�l�F�K且提供�o我的�@����D, 比我原本自己��思的�D�要好, �@�D真的是很容易的�椭�理解.


作者:�建民,曾任Nicira��太�^技�g���,2012年VMware收�Nicira之後,�F任VMware  �W路��M化平台工程��,�>�於�Y�中心基�A建�O���及�热��用安全。扫描下面的二维码订阅“中国云梦”微信公众号后,回复“10030”阅读该文。

143117221.jpg

你可能感兴趣的:(优化,software,switching)