色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>DSP編程>

C10K到C10M高性能網(wǎng)絡(luò)的實(shí)踐分析

大小:0.6 MB 人氣: 2017-10-12 需要積分:1
 C10K時(shí)代的問題與優(yōu)化手段
  首先帶大家回顧一下當(dāng)年C10K場景中遇到的問題以及為了解決我們單機(jī)下高并發(fā)的承載能力所做的改進(jìn)。在當(dāng)時(shí)的年代,國內(nèi)互聯(lián)網(wǎng)的普及程度相對(duì)較低,C10K并沒有給當(dāng)時(shí)中國的互聯(lián)網(wǎng)環(huán)境帶來太大沖擊,但是在全球互聯(lián)網(wǎng)環(huán)境下大家開始意識(shí)到這個(gè)問題。為了解決該問題,首先的研究方向就是IO模型的優(yōu)化,逐漸解決了C10K的問題。
  epoll、kqueue、iocp就是IO模型優(yōu)化的一些最佳實(shí)踐,這幾種技術(shù)實(shí)現(xiàn)分別對(duì)應(yīng)于不同的系統(tǒng)平臺(tái)。以epoll為例,在它的基礎(chǔ)上抽象了一些開發(fā)框架和庫,為廣大軟件開發(fā)者在軟件開發(fā)帶來了便利,比如libevent、libev等。隨著當(dāng)年在IO模型上的革命,衍生出了很多至今為止我們都在大量使用的優(yōu)秀開源軟件,比如nginx、haproxy、squid等,通過大量的創(chuàng)新、實(shí)踐和優(yōu)化,使我們?cè)诮裉炷軌蚝茌p易地解決一個(gè)大并發(fā)壓力場景下的技術(shù)問題。
  這里簡單列了幾點(diǎn),較為常用的優(yōu)化技術(shù)手段。
  CPU親和性&內(nèi)存局域性
  目前我們使用的服務(wù)器主要是多路、多核心的x86平臺(tái)。用于運(yùn)行我們的軟件代碼,在很多場景的業(yè)務(wù)需求下,都會(huì)涉及一定并發(fā)任務(wù),無論是多進(jìn)程模型還是多線程模型,都要把所有的調(diào)度任務(wù)交給操作系統(tǒng),讓操作系統(tǒng)幫我們分配硬件資源。我們常用的服務(wù)器操作系統(tǒng)都屬于分時(shí)操作系統(tǒng),調(diào)度模型都盡可能的追求公平,并沒有為某一類任務(wù)做特別的優(yōu)化,如果當(dāng)前系統(tǒng)僅僅運(yùn)行某一特定任務(wù)的時(shí)候,默認(rèn)的調(diào)度策略可能會(huì)導(dǎo)致一定程度上的性能損失。我運(yùn)行一個(gè)A任務(wù),第一個(gè)調(diào)度周期在0號(hào)核心上運(yùn)行,第二個(gè)調(diào)度周期可能就跑到1號(hào)核心上去了,這樣頻繁的調(diào)度可能會(huì)造成大量的上下文切換,從而影響到一定的性能。
  數(shù)據(jù)局域性是同樣類似的問題。當(dāng)前x86服務(wù)器以NUMA架構(gòu)為主,這種平臺(tái)架構(gòu)下,每個(gè)CPU有屬于自己的內(nèi)存,如果當(dāng)前CPU需要的數(shù)據(jù)需要到另外一顆CPU管理的內(nèi)存獲取,必然增加一些延時(shí)。所以我們盡可能的嘗試讓我們的任務(wù)和數(shù)據(jù)在始終在相同的CPU核心和相同的內(nèi)存節(jié)點(diǎn)上,Linux提供了sched_set_affinity函數(shù),我們可以在代碼中,將我們的任務(wù)綁定在指定的CPU核心上。一些Linux發(fā)行版也在用戶態(tài)中提供了numactl和taskset工具,通過它們也很容易讓我們的程序運(yùn)行在指定的節(jié)點(diǎn)上。
  RSS、RPS、RFS、XPS
  這些技術(shù)都是近些年來為了優(yōu)化Linux網(wǎng)絡(luò)方面的性能而添加的特性,RPS、RFS、XPS都是Google貢獻(xiàn)給社區(qū),RSS需要硬件的支持,目前主流的網(wǎng)卡都已支持,即俗稱的多隊(duì)列網(wǎng)卡,充分利用多個(gè)CPU核心,讓數(shù)據(jù)處理的壓力分布到多個(gè)CPU核心上去。RPS和RFS在linux2.6.35的版本被加入,一般是成對(duì)使用的,在不支持RSS特性的網(wǎng)卡上,用軟件來模擬類似的功能,并且將相同的數(shù)據(jù)流綁定到指定的核心上,盡可能提升網(wǎng)絡(luò)方面處理的性能。XPS特性在linux2.6.38的版本中被加入,主要針對(duì)多隊(duì)列網(wǎng)卡在發(fā)送數(shù)據(jù)時(shí)的優(yōu)化,當(dāng)你發(fā)送數(shù)據(jù)包時(shí),可以根據(jù)CPU MAP來選擇對(duì)應(yīng)的網(wǎng)卡隊(duì)列,低于指定的kernel版本可能無法使用相關(guān)的特性,但是發(fā)行版已經(jīng)backport這些特性。
  IRQ 優(yōu)化
  關(guān)于IRQ的優(yōu)化,這里主要有兩點(diǎn),第一點(diǎn)是關(guān)于中斷合并。在比較早期的時(shí)候,網(wǎng)卡每收到一個(gè)數(shù)據(jù)包就會(huì)觸發(fā)一個(gè)中斷,如果小包的數(shù)據(jù)量特別大的時(shí)候,中斷被觸發(fā)的數(shù)量也變的十分可怕。大部分的計(jì)算資源都被用于處理中斷,導(dǎo)致性能下降。后來引入了NAPI和Newernewer NAPI特性,在系統(tǒng)較為繁忙的時(shí)候,一次中斷觸發(fā)后,接下來用輪循的方式讀取后續(xù)的數(shù)據(jù)包,以降低中斷產(chǎn)生的數(shù)量,進(jìn)而也提升了處理的效率。第二點(diǎn)是IRQ親和性,和我們前面提到了CPU親和性較為類似,是將不同的網(wǎng)卡隊(duì)列中斷處理綁定到指定的CPU核心上去,適用于擁有RSS特性的網(wǎng)卡。
  這里再說說關(guān)于網(wǎng)絡(luò)卸載的優(yōu)化,目前主要有TSO、GSO、LRO、GRO這幾個(gè)特性,先說說TSO,以太網(wǎng)MTU一般為1500,減掉TCP/IP的包頭,TCP的MaxSegment Size為1460,通常情況下協(xié)議棧會(huì)對(duì)超過1460的TCP Payload進(jìn)行分段,保證最后生成的IP包不超過MTU的大小,對(duì)于支持TSO/GSO的網(wǎng)卡來說,協(xié)議棧就不再需要這樣了,可以將更大的TCPPayload發(fā)送給網(wǎng)卡驅(qū)動(dòng),然后由網(wǎng)卡進(jìn)行封包操作。通過這個(gè)手段,將需要在CPU上的計(jì)算offload到網(wǎng)卡上,進(jìn)一步提升整體的性能。GSO為TSO的升級(jí)版,不在局限于TCP協(xié)議。LRO和TSO的工作路徑正好相反,在頻繁收到小包時(shí),每次一個(gè)小包都要向協(xié)議棧傳遞,對(duì)多個(gè)TCPPayload包進(jìn)行合并,然后再傳遞給協(xié)議棧,以此來提升協(xié)議棧處理的效率。GRO為LRO的升級(jí)版本,解決了LRO存在的一些問題。這些特性都是在一定的場景下才可以發(fā)揮其性能效率,在不明確自己的需求的時(shí)候,開啟這些特性反而可能造成性能下降。
  Kernel 優(yōu)化
  關(guān)于Kernel的網(wǎng)絡(luò)相關(guān)優(yōu)化我們就不過多的介紹了,主要的內(nèi)核網(wǎng)絡(luò)參數(shù)的調(diào)整在以下兩處:net.ipv4.參數(shù)和net.core.參數(shù)。主要用于調(diào)節(jié)一些超時(shí)控制及緩存等,通過搜索引擎我們能很容易找到關(guān)于這些參數(shù)調(diào)優(yōu)的文章,但是修改這些參數(shù)是否能帶來性能的提升,或者會(huì)有什么弊端,建議詳細(xì)的閱讀kernel文檔,并且多做一些測(cè)試來驗(yàn)證。
  更深入的探索和實(shí)踐
  接下來,我們著重了解如何去更進(jìn)一步提升我們單機(jī)網(wǎng)絡(luò)吞吐以及網(wǎng)絡(luò)處理性能的技術(shù)和手段。
  計(jì)算機(jī)硬件做為當(dāng)前IT發(fā)展的重要組成部分。作為軟件開發(fā)者,我們更應(yīng)該掌握這部分的內(nèi)容,學(xué)習(xí)了解我們的軟件如何在操作系統(tǒng)中運(yùn)行,操作系統(tǒng)又怎樣分配我們的硬件資源。
  硬件
  CPU
  CPU是計(jì)算機(jī)系統(tǒng)中最核心、最關(guān)鍵的部件。在當(dāng)前的x86服務(wù)器領(lǐng)域我們接觸到主要還是Intel芯片。索性我們就以IntelXeon 2600系列舉例。
  Intel Xeon 2600系列的CPU已經(jīng)發(fā)布了3代,第4代產(chǎn)品2016年Q1也即將面市,圖例中均選取了4代產(chǎn)品最高端的型號(hào)。圖一為該系列CPU的核心數(shù)量統(tǒng)計(jì),從第一代的8核心發(fā)展到即將上市的22核心,若干年前,這是很可怕的事情。裝配該型號(hào)CPU的雙路服務(wù)器,再開啟超線程,輕而易舉達(dá)到80多個(gè)核心。就多核處理器的發(fā)展歷程來講,核心數(shù)量逐年提升,主頻基本穩(wěn)定在一定的范圍內(nèi),不是說單核主頻不再重要,而是說在當(dāng)前的需求場景下,多核心才是更符合我們需求的處理器。
  C10K到C10M高性能網(wǎng)絡(luò)的實(shí)踐分析
  圖1
  不僅僅是核心數(shù)量,像LLC緩存的容量、內(nèi)存帶寬都有很大的提升,分別達(dá)到了55MB和76.8GB/s。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 国内精品人妻无码久久久影院蜜桃 | 亚洲AV无码专区国产乱码网站| 香蕉eeww99国产精品| 国产欧美一区二区三区免费| 亚洲国产综合久久久无码色伦| 超碰人人草在线视频| 忘忧草秋观看未满十八| 九九热这里有精品| chinese东北老年tv视频| 日本一二三区在线视频| 国产午夜精品AV一区二区麻豆| 色偷偷男人天堂| 久久re这里精品在线视频7| qvod电影| 亚洲精品久久无码AV片银杏| 暖暖日本大全免费观看| 父亲猜女儿在线观看| 亚洲H成年动漫在线观看不卡| 国产噜噜噜精品免费| 伊人在线视频| 日韩人妻双飞无码精品久久| 久久精品国产在热亚洲| 第一精品福利导福航| 伊人亚洲综合网色| 色悠久久久久综合网小说| 久热人人综合人人九九精品视频| 一二三四视频免费社区5| 暖暖 视频 在线 观看 高清| 国内精品久久久久影院老司| HEYZO无码中文字幕人妻| 亚洲伊人成综合人影院| 四虎国产精品高清在线观看| 妹妹我要色| 狠狠干2022| 国产精品97久久AV麻豆| 99在线国产视频| 伊人不卡久久大香线蕉综合影院| 美美哒高清在线播放8| 国产精品无码中文在线AV| WWW国产亚洲精品久久久日本| 桥本有菜黑丝|