使用Docker對時延影響幾何

2021-09-22 23:19:16 字數 2066 閱讀 7364

本文講的是使用docker對時延影響幾何

【編者的話】本文通過介紹azul systems的技術副總裁兼首席技術官、聯合創始人gil tene對docker時延特性的分析,說明了針對docker時延的關鍵影響因素(cpu、記憶體、io)進行改善提高,認為時延對docker的影響是乙個「無關緊要」問題。

在mechanical-sympathy

論壇列表裡出現了乙個很好的問題,這個問題可能很多人也遇到過:

我不斷的聽到有關docker是有史以來最偉大的技術的說法,但我也聽說docker不適用於對時延要求嚴格的應用。
有誰能比

azul systems

的技術副總裁兼首席技術官、聯合創始人

gil tene

能更好的回答這個問題?就好比史蒂芬-庫里(stephen curry)跳投三分球般的精彩,gil的觀點總是值得期待的:

以下是gil的回答:

暫且把喜好和風格的問題放在一邊,並將重點放在對延遲的影響上(最原始的原題),單純從技術原理機制的角度分析是非常簡單的:

docker使用linux容器技術作為執行手段,沒有採用在作業系統層級虛擬化cpu和記憶體,並且在i/o上採用可選的虛擬化層技術(預設情況對i/o虛擬化)。
從時延的角度來看,docker(以及其他的linux容器)的cpu和記憶體時延特性與linux本身幾乎沒有什麼區別。因此適用於linux時延特性也同樣適用於docker。

如果你需要完全一致的低時延效果,你需要做與非docker化和非容器化的linux 相一致的同級別且同樣的事情。比如,如果你需要從整體上對系統進行控制,那麼你也需要在主機級別做和docker同樣的事情(排除相鄰干擾)。

如果你需要隔離套接字或核心,並控制哪些程序在**結束,期望這些程序去做與docker容器或/和它裡面執行緒相同的事情。

如果你通過numactl(譯者注:numactl通過numa策略或記憶體分配策略來執行程序)或任何形式的針對numa驅動的記憶體分配,這也同樣適用。

你需要額外做一些東西,這可能與其他人部署docker時不同,但是如果你確實對低時延連線感興趣,你可能需要開啟工具箱,並使用cgroups、taskets等其他各種酷炫的東西去評估如何對布局進行控制。但是如果你這樣做(當你這樣做時) ,你在cpu和記憶體時延方面無法分辨docker化的程序和非docker化程序之間的區別。

i/o效能是各種配置下時延開銷最主要的問題(和解決方法),通常也是最終的問題。對docker的磁碟i/o效能和配置選項,我沒有足夠的了解,從而不能進行深入的**。但我敢肯定儲存中任何對吞吐量和時延敏感問題的解決方案都是「繞過虛擬化和卷相關的工具,並提供對磁碟裝置和掛載點的直接訪問」

網路特性很清楚:如果你試圖通過網路自動化生成工具任意接入一種nat對映或橋接的部署方式,你可能需要在網路時延和吞吐量效能方面付出沉重的代價(相比於普通linux裸機專用網絡卡)。不過,在部署docker容器時也存在一些其它的選擇方式(同樣,可能與一些人期望的部署方式不一樣)能夠在docker裡實現低開銷或基本上是零延遲開銷網路連線。使用主機網路或者使用專用ip位址和網絡卡,你將會獲得比預設橋接方式更好的效果。但同樣你可以使用像solarflare公司的網絡卡(在裸機低延遲環境中已普遍採用的解決方案),甚至使用核心旁路、或專用的旋轉核心網路堆疊,如果進行同樣的操作,docker將會在延遲效能方面和裸機linux沒有區別。

docker(以 「使用者空間作為基本單元」)並不是將很多東西封裝到乙個盒子裡,也不採用客戶機作業系統虛擬化技術。當然,他們都可以被用於虛擬化技術(並且經常這樣使用),但是最重要的好處是他們都能進行一致性遷移,並有充分儲存配置的能力。以及具有對開發、測試、部署環境進行相同配置的能力。這後來演變成能夠輕鬆的進行管理部署和版本控制(包括回退),並能實現彈性大小調整等酷炫的特性。也同樣可以使用puppet/chef...等配置工具獲得如在裸機裡使用般類似的效果,當然(假設他們能控制你映象裡的一切),但是,打包你工作環境的所有東西成一堆數字串,並可被啟動執行是非常吸引人的。

低時延的問題就變成了乙個「無關緊要」的問題。而且在對比低時延時docker比虛擬化管理程式或基於kvm的虛擬化技術帶來的損失更小,通過選擇正確的i/o(專用的網絡卡、核心和裝置),它的損失幾乎可以忽略。

原文發布時間為:2015-12-21

閉環系統零 極點位置對時間響應效能指標的影響

穩定性 如果閉環極點全部位於s左半平面。則系統一定穩定 運動形式 如果閉環系統無零點,且閉環極點均為實數極點,則時間響應一定是單調的 如果閉環系統極點均為複數極點,則時間響應一般是 的。超調量 超調量主要取決於閉環複數主導極點的衰減率,並與其它閉環零極點接近座標原點的程度有關。調節時間主要取決於最靠...

使用datetime對時間進行操作

import re,time from datetime import timedelta,datetime list u 10分鐘前 u 2小時前 u 22小時前 u 昨天 14 55 u 08 18 u tue jun 12 15 49 08 0800 2018 u 剛剛 for i in li...

會聲會影使用技巧小結

近期作為乙個完全的菜鳥突擊學習了一下會聲會影這款軟體,充分感覺到了其強大,並且給我帶來了很多幫助。現在小結一下 幫助途徑 安裝 使用 1 會聲會影 音訊處理 將音訊檔案新增到audio timeline檢視下 軌道中,按照自己需要拖動滑鼠 當滑鼠放在邊緣上變成了單方向箭頭時拖動 或者直接在time ...