首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平 駕駛員 | 網絡編輯 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
在這種情況下,CPU的負載主要來自以下幾個方面:協議的定時驅動、用戶的配置驅動、外部事件的驅動。其中,外部事件的驅動最為隨機,無法預料。典型的外部事件包括端口的連接/斷開(Up/Down),媒體訪問控制(MAC)地址消息的上報(包括學習、老化、遷移等),CPU通過直接存儲器存取(DMA)收到包,CPU通過DMA發包等。
在以上所列的外部事件中,又以CPU通過DMA收到包之后的處理最為復雜。因為數據包由低層上送到上層軟件時,各協議的處理動作千差萬別,可能會涉及到發包、端口操作、批量的表操作等。所以,只有處理好CPU的收發包的相關問題,才能使相關的上層協議正常交互,從而使第三層交換機穩定、高效地運行。
可能涉及到的問題
以下就CPU收發包可能涉及的各個方面分別說明,下面的分析都基于典型的CPU收發包機制:CPU端口分隊列,通過DMA接收,采用環形隊列等。
CPU的負載與收包節奏控制
根據第三層交換機處理數據包的能力,決定單位時間上送到CPU的包的個數;決定了單位時間上送多少個包給CPU后,再考慮上送數據包的節奏,假設通過評估,確定了單位時間上送CPU數據包的上限,例如每秒x個數據包。
(1)勻速上報CPU
數據包勻速上報CPU時,對CPU隊列的沖擊較小,而且對CPU隊列的緩沖能力要求不高,CPU隊列不必做得很大。
(2)突發(Burst)方式上報CPU
交換芯片(采用ASIC)一側的硬件接收隊列和DMA內存空間中的環形隊列,一起賦予了第三層交換機一定的緩沖能力(針對上送CPU的數據包)。利用這個緩沖能力,我們可以把控制周期適當放長,并設定控制的粒度(單位控制周期內CPU收報個數的上限),采用類似于電路中負反饋的機制動態地使能和關閉CPU收包功能。這樣就在宏觀上實現了對數據包上送CPU速率的控制。另外,如果交換芯片(采用ASIC)支持基于令牌桶算法的CPU端口出方向流量監管或整形功能[2-3],且監管或整形的最小閾值可以滿足CPU限速的需要,則可以利用這個功能控制數據包上送CPU的節奏,減小CPU的負載。這樣軟件的處理就簡化了很多。
CPU端口隊列的長度規劃
如果僅考慮第三層交換機CPU端口的緩沖能力,CPU端口隊列當然是越長越好,但是必須兼顧對其他功能以及性能的影響。針對不同的ASIC芯片,需要具體問題具體分析。
零拷貝
零拷貝是指在整個數據包的處理過程中,使用指針做參數,不進行整個數據包的拷貝。這樣可以大大提高CPU的處理效率。使用零拷貝后,會一定程度上降低軟件處理的靈活性,我們會面臨到這樣的問題:如果協議棧需要更改一個數據包的內容,會直接在接收緩存(buffer)上修改,但是如果需要在數據包中刪除或添加字段(例如添加或刪除一層標簽(tag)),即數據包的長度需要變化時,應該如何處理。
添加或刪除字段,必然會導致數據包頭一側或包尾一側的位置發生移動,如果包尾一側移動,問題比較簡單,只要數據包總長度不超過buffer邊界即可。由于通常此類操作都靠近包頭的位置,如果包頭一側移動,效率會比較高,所以協議棧在處理時可能更傾向于在包頭一側移動,這時就需要驅動在分配 buffer時做一些處理:
(1)接收數據包時,頭指針不能指向buffer邊界,需要向后偏移一定裕量,同時單個buffer的大小也必須兼顧到最大傳送單元(MTU)和該裕量。
(2)釋放數據包時buffer首指針需要作歸一化處理
目前第三層交換機涉及到的外部中斷主要由交換芯片產生,交換芯片主要的外部中斷包括DMA操作(如收到包、發包結束、新地址消息等等)和一些出錯消息。如果中斷請求過于頻繁,中斷服務程序(ISR)和其他進程之間頻繁地上下文切換會消耗大量CPU時間。如果有持續大量的中斷請求,CPU會始終處于繁忙狀態,各種協議得不到足夠的調度時間,從而導致協議狀態機超時等嚴重故障。為了避免事件觸發頻率不可控的問題,可以使用輪詢機制,通常的做法是用 CPU定時器觸發原先由外部中斷觸發的ISR,由于定時器觸發的間隔是固定的,所以ISR執行的頻率得到了控制,避免了上述的問題。
輪詢和外部中斷相比,只是節奏可控(外部中斷的節奏取決于外部事件發生的頻率,CPU不可控)。但是,輪詢也有其不可避免的缺點——響應慢。不能滿足某些實時性要求較高的功能。另外,人們會發現用ping命令檢測第三層交換機3層接口大包時,使用輪詢方式的第三層交換機比使用中斷方式的第三層交換機的時延明顯要大。如果能通過某種機制,避免持續、大量的中斷請求,則既可以保證CPU不會過于繁忙,又保留了中斷實時處理的優點。
典型的會產生大量中斷事件的行為是CPU接收數據包和MAC地址消息上報。以收包為例,在前面“CPU負載與收包節奏控制”部分提到的 Burst方式就是根據實時的流量,控制接收DMA的開關,這樣就達到了使中斷源受控的目的,這種類似負反饋的機制可以很好的避免持續的中斷事件上報 CPU。
總之,輪詢控制簡單,但實時性較差;中斷實時性好,但是使所有的中斷源受控有一定難度。在系統初始設計階段,我們需要綜合考慮需求以及芯片對外部事件的處理方式,來決定采用中斷或者輪詢方式,或者兩者兼用。
隨著以太網相關技術的發展,交換芯片和網絡處理器的處理能力不斷被提升;相比之下,數據交換設備中CPU處理性能的提升程度遠遠不及交換芯片和網絡處理器;同時數據交換設備支持的業務種類也在不斷增加,對CPU承載的業務量也有了更高的要求。在這種情況下,交換設備容量以及支持業務種類的大幅提升和有限的CPU資源之間的矛盾會日益凸顯。因此,做好CPU和交換芯片以及網絡處理器接口的緩沖管理、隊列調度以及流量監管,合理利用CPU資源,是保證數據交換設備安全、穩定運行的前提,也是目前及將來數據交換設備開發的重要課題。
相關推薦:2010年計算機軟件水平考試時間安排通知北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |