精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

字節跳動開源 Shmipc:基于共享內存的高性能 IPC

開源
本文主要介紹 Shmipc 的一些主要的設計思路以及后續的演進規劃。

簡介

CloudWeGo - Shmipc 是字節跳動服務框架團隊研發的高性能進程間通訊庫,它基于共享內存構建,具有零拷貝的特點,同時它引入的同步機制具有批量收割 IO 的能力,相對于其他進程間通訊方式能明顯提升性能。在字節內部,Shmipc 應用于 Service Mesh 場景下,mesh proxy 進程與業務邏輯進程、與通用 sidecar 進程的通訊, 在大包場景IO 密集型場景能夠取得顯著的性能收益。

開源社區關于這方面的資料不多,Shmipc 的開源希望能為社區貢獻一份力量,提供一份參考。本文主要介紹 Shmipc 的一些主要的設計思路以及后續的演進規劃。?

go 版本實現:

??https://github.com/cloudwego/shmipc-go??

設計細節:

??https://github.com/cloudwego/shmipc-spec???

項目背景

在字節,Service Mesh 在落地的過程中進行了大量的性能優化工作,其中 Service Mesh 的流量劫持是通過,mesh proxy 與微服務框架約定的地址進行進程間通訊來完成,性能會優于開源方案中的 iptables。但常規的優化手段已不能帶來明顯的性能提升。于是我們把目光放到了進程間通訊上,Shmipc 由此誕生。

設計思路

零拷貝

在生產環境中比較廣泛使用的進程間通訊方式是 unix domain socket 與 TCP loopback(localhost:$PORT),兩者從 benchmark 看性能差異不大。從技術細節看,都需要將通訊的數據在用戶態和內核態之間進行拷貝。在 RPC場景下,一次 RPC 流程中在進程間通訊上會有四次的內存拷貝,Request 路徑兩次, Response 路徑兩次。

圖片

雖然現代 CPU 上進行順序的 copy 非常快,但如果我們能夠消除這多達四次的內存拷貝,在大包場景下也能在一定程度上節省 CPU 使用。而基于共享內存通訊零拷貝的特性,我們可以很容易達成這一點。但為了達到零拷貝的效果,圍繞共享內存本身,還會產生有許多額外的工作,比如:

  1. 深入微服務框架的序列化與反序列化。我們希望當 Request 或 Response 序列化完成時,對應的二進制數據已經存在共享內存中。而不是序列化到一塊非共享內存的 buffer 中,然后再拷貝到共享內存 buffer。
  2. 實現一種進程同步機制。當一個進程把數據寫入共享內存后,另外一個進程并不知道,因此需要同步機制進行通知。
  3. 高效的內存分配和回收。保證跨進程的共享內存的分配和回收機制的開銷足夠低,避免其掩蓋零拷貝的特性帶來的收益。

同步機制

分場景考慮:

  1. 按需實時同步。適用于在線場景,對時延極其敏感,每次寫入操作完成后都通知對端進程。Linux 下,可做選擇的比較多,TCP loopback、unix domain socket、event fd 等。event fd的 benchmark 性能會略好,但跨進程傳遞 fd 會引入過多復雜性,其帶來的性能提升在 IPC 上不太明顯,復雜性與性能中間的權衡需要慎重考慮。在字節,我們選擇了 unix domain socket 來進行進程同步。
  2. 定時同步。適用于離線場景,對時延不敏感。通過高間隔的 sleep 訪問共享內存中自定義的標志位來鑒別是否有數據寫入。但注意 sleep 本身也需要系統調用,開銷大于 unix domain socket 的讀寫。
  3. 輪詢同步。適用于時延非常敏感,CPU不那么敏感的場景。可以通過單核輪詢共享內存中的自定義標志位來完成。

總的來說按需實時同步和定期同步需要系統調用來完成,輪詢同步不需要系統調用,但需要常態跑滿一個 CPU 核心。

批量收割 IO

在線場景中按需實時同步,每次數據寫入都需要進行一次進行進程同步(下圖中的4),雖然延遲問題解決了,但在性能上,需要交互的數據包需要大于一個比較大的閾值,零拷貝帶來的收益才能突顯。因此在共享內存中構造了一個 IO 隊列的來完成批量收割 IO,使其在小包 IO 密集場景也能顯現收益。核心思想是:當一個進程把請求寫入 IO隊列后,會給另外一個進程發通知來處理。那么在下一個請求進來時(對應下圖中的 IOEvent 2~N,一個 IOEvent 可以獨立描述一個請求在共享內存中的位置),如果對端進程還在處理 IO 隊列中的請求,那么就不必進行通知。因此,IO越密集,批處理效果就越好。

圖片

另外就是離線場景中,定時同步本身就是批量處理 IO 的,批處理的效果能夠有效減少進程同步帶來的系統調用,sleep 間隔越高,進程同步的開銷就越低。

對于輪詢同步則不需要考慮批量收割 IO,因為這個機制本身是為了減少進程同步開銷。而輪詢同步直接占滿一個 CPU 核心,相當于默認把同步機制的開銷拉滿以獲取極低的同步延遲。

性能收益

Benchmark

圖片

其中X 軸為數據包大小,Y軸為一次 Ping-Pong 的耗時,單位為微秒,越小越好。可以看到在小包場景下,Shmipc 相對于 unix domain socket 也能獲得一些收益,并且隨著包大小越大性能越好

數據源:??git clone https://github.com/cloudwego/shmipc-go && go test -bench=BenchmarkParallelPingPong -run BenchmarkParallelPingPong??

生產環境

在字節生產環境的 Service Mesh 生態中,我們在 3000+ 服務、100w+ 實例上應用了 Shmipc。不同的業務場景顯現出不同的收益,其中收益最高的風控 業務降低了整體24%的資源使用,當然也有無明顯收益的甚至劣化的場景出現。但在大包和 IO 密集型場景均能顯現出顯著收益

采坑記錄

在字節實際落地的過程中我們也踩了一些坑,導致一些線上事故,比較具有參考價值。

  1. 共享內存泄漏。IPC 過程共享內存分配和回收涉及到兩個進程,稍有不慎就容易發生共享內存的泄漏。問題雖然非常棘手,但只要能夠做到泄漏時主動發現,以及泄漏之后有觀測手段可以排查即可。
  1. 主動發現。可以通過增加一些統計信息然后匯總到監控系統來做到主動發現,比如總分配和總回收的內存大小。
  2. 觀測手段。在設計共享內存的布局時增加一些元信息,使得在發生泄漏之后,我們可以通過內置的 debug 工具dump 泄漏時刻的共享內存來進行分析。能夠知道所泄漏的內存有多少,里面的內容是什么,以及和這部分內容相關的一些元信息。
  1. 串包。串包是最頭疼的問題,出現的原因是千奇百怪的,往往造成嚴重后果。我們曾在某業務上發生串包事故,出現的原因是因為大包導致共享內存耗盡,fallback 到常規路徑的過程中設計存在缺陷,小概率出現串包。排查過程和原因并不具備共性,可以提供更多的參考是增加更多場景的集成測試和單元測試將串包扼殺在搖籃中。
  2. 共享內存踩踏。應該盡可能使用 memfd 來共享內存,而不是 mmap 文件系統中的某個路徑。早期我們通過 mmap 文件系統的路徑來共享內存,Shmipc 的開啟和共享內存的路徑由環境變量指定,啟動過程由引導進程注入應用進程。那么存在一種情況是應用進程可能會 fork 出一個進程,該進程繼承了應用進程的環境變量并且也集成了 Shmipc,然后 fork 的進程和應用進程 mmap 了同一塊共享內存,發現踩踏。在字節的事故場景是應用進程使用了 golang 的 plugin 機制從外部加載 .so 來運行,該 .so 集成了 Shmipc,并且跑在應用進程里,能看到所有環境變量,于是就和應用進程 mmap 了同一片共享內存,運行過程發生未定義行為。
  3. Sigbus coredump。早期我們通過 mmap /dev/shm/路徑(tmpfs)下的文件來共享內存,應用服務大都運行在 docker 容器實例中。容器實例對 tmpfs 有容量限制(可以通過 df -h 觀測),這會使得 mmap 的共享內存如果超過該限制就會出現 Sigbus,并且 mmap 本身不會有任何報錯,但在運行期,使用到超過限制的地址空間時才會出現 Sigbus 導致應用進程崩潰。解決方式和第三點一樣,使用 memfd 來共享內存。

后續演進

  1. 整合至微服務 RPC 框架 CloudWeGo/Kitex。
  2. 整合至微服務 HTTP 框架 CloudWeGo/Hertz。
  3. 開源 Rust 版本的 Shmipc 并整合至 Rust RPC 框架 CloudWeGo/Volo。
  4. 開源 C++ 版本的 Shmipc。
  5. 引入定時同步機制適用于離線場景。
  6. 引入輪詢同步的同步機制適用于對延遲有極致要求的場景。
  7. 賦能其他 IPC 場景, 比如 Log SDK 與 Log Agent, Metrics SDK 與 Metrics Agent 等。

總結

希望本文能讓大家對于 Shmipc 有一個初步的了解,知曉其設計原理,更多實現細節以及使用方法請參考文章開頭給出的項目地址。歡迎各位感興趣的同學向 Shmipc 項目提交 Issue 和 PR,共同建設 CloudWeGo 開源社區,也期望 Shmipc 在 IPC 領域助力越來越多開發者和企業構建高性能云原生架構。

責任編輯:龐桂玉 來源: 字節跳動技術團隊
相關推薦

2022-07-18 17:37:27

字節跳動人工智能AI模型

2024-06-07 14:17:53

2022-05-17 17:18:40

Kite字節跳動微服務框架

2023-10-18 11:56:17

開源AI

2022-03-21 17:56:59

大模型訓練訓練框架

2022-03-21 15:06:10

模型字節跳動框架

2024-02-19 00:00:00

前端開源項目

2022-07-18 16:02:10

數據庫實踐

2023-07-19 16:22:00

Hudi機器學習

2022-06-22 06:49:39

Hertz開源HTTP 框架

2022-11-02 10:02:24

BitSail字節跳動數據集成

2021-09-09 09:05:30

開源字節跳動CloudWeGo

2011-12-15 13:28:57

2020-10-24 07:30:05

開源字節跳動模型

2022-08-25 18:48:29

字節跳動CSS開源

2020-09-11 15:37:18

GitHub代碼開發者

2025-04-09 09:20:00

2024-01-03 16:29:01

Agent性能優化

2022-12-09 08:40:56

高性能內存隊列

2011-04-25 14:06:23

java
點贊
收藏

51CTO技術棧公眾號

欧美国产视频一区二区| 欧美午夜激情视频| 国产精品久久久久久久久| av黄色免费网站| 超碰中文在线| 久久久国产精华| 国产精品视频成人| 91香蕉视频在线播放| 亚洲超碰在线观看| 欧美性猛交xxxx偷拍洗澡| 蜜桃传媒视频麻豆一区| 中日精品一色哟哟| 亚洲午夜极品| 亚洲三级 欧美三级| 另类小说色综合| 羞羞视频在线观看免费| 26uuu色噜噜精品一区二区| 欧美综合一区第一页| 懂色av蜜臀av粉嫩av永久| 一本一道久久a久久| 色综合久久久久久久久久久| 亚洲欧洲另类精品久久综合| 亚洲精品综合久久| 日韩成人免费看| 隔壁老王国产在线精品| 国精产品一区一区三区免费视频| 亚洲欧美一级| 日韩欧美999| 日韩视频 中文字幕| 香蕉av在线播放| 国产一区福利在线| 国产精品1234| 久久久久久久久久久久久久免费看| 自拍视频一区| 精品国产乱码久久久久久老虎 | 午夜精品一区二区三区三上悠亚 | 一道在线中文一区二区三区| 欧美一级理论性理论a| 中文字幕第21页| 9999热视频在线观看| 日韩一区中文字幕| 日本免费高清一区| 日韩a∨精品日韩在线观看| 波多野结衣免费观看| 国产私拍福利精品视频二区| 日韩欧美成人区| 成人免费观看cn| 免费在线观看的电影网站| 一区二区三区在线观看视频| 一区二区三区四区久久| 麻豆传媒在线免费| 亚洲欧美日韩国产手机在线 | 久久bbxx| 亚洲美女免费在线| 肉大捧一出免费观看网站在线播放 | 亚洲美女色播| 欧美人牲a欧美精品| 国产亚洲视频一区| 日本免费一区二区三区视频| 日韩欧美黄色影院| 妖精视频一区二区| 欧美理论电影在线精品| 亚洲欧洲日韩国产| 国产精品久久国产精麻豆96堂| 91麻豆国产自产在线观看亚洲| 日韩视频一区在线| 国产一级av毛片| 最新亚洲一区| 国产99久久精品一区二区 夜夜躁日日躁| 成人午夜淫片100集| 日本成人在线不卡视频| 91精品国产综合久久香蕉最新版 | 久久精品免视看国产成人| 日韩免费高清av| 亚洲精品女人久久久| 免费欧美一区| 色偷偷偷亚洲综合网另类| 欧美一区免费观看| 136国产福利精品导航网址| 456国产精品| 在线免费观看高清视频| 国产精品一卡二卡| 麻豆一区区三区四区产品精品蜜桃| 国产日产精品久久久久久婷婷| 国产精品你懂的在线欣赏| av 日韩 人妻 黑人 综合 无码| 黄视频免费在线看| 欧美日韩精品一区二区三区四区| 午夜诱惑痒痒网| 婷婷综合福利| 成人97在线观看视频| 久久国产视频播放| 久草热8精品视频在线观看| 99国产视频在线| 久青青在线观看视频国产| 中文字幕五月欧美| 成人久久久久久久久| 亚洲二区av| 亚洲精品一区二区久| 国产探花在线视频| 麻豆久久婷婷| 懂色一区二区三区av片| 风间由美一区| 精品人伦一区二区三区蜜桃网站| 污污的视频免费| 色哟哟精品丝袜一区二区| 久久精品久久久久| 在线永久看片免费的视频| 国产精品白丝av| 亚洲欧美在线网| 手机在线观看av| 日韩欧美亚洲一区二区| 懂色av粉嫩av浪潮av| 国产高清视频在线播放| 成人嫩草影院| 欧美亚洲另类在线| 午夜精品无码一区二区三区| 日本一区二区三区高清不卡| 被灌满精子的波多野结衣| 在线不卡一区| 在线观看国产精品日韩av| 日韩色图在线观看| av在线播放成人| 六月婷婷激情综合| 无码国模国产在线观看| 久久亚洲综合国产精品99麻豆精品福利| 在线精品免费视| 99视频在线精品| 国产一线二线三线女| 亚洲视频国产| 欧美大奶子在线| 国产精品久久久久久久免费看| 久久久亚洲精品石原莉奈| 成人午夜免费在线| 波多野结衣在线一区二区| 久久精品国产亚洲一区二区| 一区二区乱子伦在线播放| 久久老女人爱爱| 国产精品无码专区av在线播放| 国内精品国产成人国产三级粉色| 九色精品免费永久在线| www.好吊色| 一区二区免费在线播放| 国产资源中文字幕| 在线一区电影| 91丨九色丨国产| 丁香花视频在线观看| 日韩欧美色综合| av资源吧首页| 99精品国产热久久91蜜凸| 国产 福利 在线| 欧美禁忌电影网| 国产精品久久久久久久久久久久 | 久久精品国产欧美激情| 国产又大又黄的视频| 国产精品不卡一区二区三区| 97超碰人人爽| 欧美黄色aaaa| 欧美中文字幕一区二区三区亚洲| 91久久大香伊蕉在人线| 岛国成人毛片| 亚洲成人激情视频| 国产精品500部| 久久精品夜色噜噜亚洲a∨| 簧片在线免费看| 午夜精品国产| 开心色怡人综合网站| 国产韩日精品| 欧美大荫蒂xxx| 青青久在线视频免费观看| 91国在线观看| 91插插插插插插| 97久久精品人人做人人爽| 成年人小视频网站| 一区二区三区四区在线观看国产日韩| 91麻豆蜜桃| 周于希免费高清在线观看| 中文字幕无线精品亚洲乱码一区 | 欧美一级特黄a| 欧美成人亚洲| 欧美婷婷久久| 一区中文字幕电影| 国产精品国语对白| 亚洲区欧洲区| 亚洲人成电影在线观看天堂色| 亚洲最新av网站| 亚洲午夜av在线| 你懂得视频在线观看| 国产suv精品一区二区6| 欧美日韩在线免费播放| 韩国久久久久| 亚洲一区3d动漫同人无遮挡| 风间由美中文字幕在线看视频国产欧美 | 四虎影院中文字幕| 久久综合狠狠综合久久综合88 | 九九视频这里只有精品| 美女毛片在线看| 日韩精品一区二区三区老鸭窝| 精品不卡一区二区| 一区二区三区四区激情| 国产调教在线观看| 91热门视频在线观看| 日韩a一级欧美一级| 丝袜亚洲另类欧美综合| 全黄性性激高免费视频| 91欧美大片| 欧美日韩国产综合在线| www.国产精品一区| 91亚洲精品在线| 麻豆精品蜜桃| 欧美亚洲成人免费| aaa在线播放视频| 久久影院资源网| 成人高潮成人免费观看| 亚洲精品97久久| 午夜美女福利视频| 欧美一区二区视频在线观看2020| 国产伦精品一区二区三区视频网站| 亚洲综合色自拍一区| 九九热最新地址| 国产精品电影一区二区三区| 素人fc2av清纯18岁| 成人av网站在线观看免费| 亚洲三级在线视频| 国内国产精品久久| 中文字幕亚洲影院| 麻豆久久久久久| 一区二区三区国产免费| 久久三级视频| 欧美视频第一区| 香蕉久久a毛片| www黄色av| 男人的天堂亚洲| 欧美一级黄色片视频| 国产麻豆综合| 国产精品视频一区二区三区四区五区 | 99久久99精品久久久久久 | 台湾亚洲精品一区二区tv| 国产一区二区高清不卡| 久久a爱视频| 精品日韩美女| 亚洲丝袜啪啪| 日韩电影免费观看在| 国产日产一区| 视频在线99re| 婷婷综合在线| 男人天堂网站在线| 伊人久久婷婷| 精品国产一二三四区| 国产午夜精品一区二区三区欧美 | 一区二区三区|亚洲午夜| 久久看人人摘| 国产专区在线视频| 亚洲激情婷婷| 精品视频一区二区在线| 男女性色大片免费观看一区二区 | 久久久成人av| 男女视频在线| 欧美最顶级的aⅴ艳星| 成人在线爆射| 91久久国产婷婷一区二区| 欧美电影院免费观看| 国产私拍一区| 国模精品一区| 强开小嫩苞一区二区三区网站 | 欧美猛男同性videos| 亚洲精品高清国产一线久久| 久久精品国产亚洲夜色av网站| 国内外成人激情免费视频| 亚洲手机在线| 午夜dv内射一区二区| 国产在线精品一区在线观看麻豆| 日本亚洲一区二区三区| 91pony九色| 91视频国产资源| 九九热视频在线免费观看| 亚洲一区免费在线观看| 手机av免费观看| 日韩精品一区二区三区四区| 日本天堂影院在线视频| 日韩在线观看精品| 高潮在线视频| 成人a在线观看| 欧美自拍视频| 青青草原网站在线观看| 亚洲欧美大片| 亚洲一区二区三区四区精品| 99精品国产热久久91蜜凸| 免费一级suv好看的国产网站 | 在线中文字幕日韩| 高清电影在线观看免费| 国产精品久久久亚洲| 亚洲午夜精品| 一区二区三区不卡在线| 国产精品久久久久久久免费软件| 天堂av8在线| 26uuu久久综合| 九九久久免费视频| 欧美日韩日日骚| 青青草av免费在线观看| 欧美成在线观看| 成人国产在线| 欧美高清性xxxxhd| 欧美天天在线| 一级黄色在线播放| 国产色产综合产在线视频| 久草免费新视频| 欧美一区二区三区四区在线观看| 日本天堂影院在线视频| 欧美激情视频在线观看| 中文成人激情娱乐网| 日本一区二区精品视频| 在线午夜精品| 亚洲天堂2024| 亚洲激情中文1区| 国产又爽又黄又嫩又猛又粗| 亚洲性xxxx| 中文字幕一区久| 国产亚洲精品久久飘花| 国产精品v日韩精品v欧美精品网站| 视频二区在线播放| 中文字幕av一区 二区| 丰满少妇xoxoxo视频| 日韩av有码在线| 成人福利电影| 国产综合18久久久久久| 国产精品hd| 在线中文字日产幕| 一区二区三区在线视频免费| 91久久精品国产91性色69| 在线视频日本亚洲性| 成人看片网页| 日韩在线观看电影完整版高清免费| 国产精品女主播一区二区三区| 亚洲成年人av| 亚洲va韩国va欧美va精品| 亚洲卡一卡二卡三| 久久久久久久久久久网站| 97久久综合区小说区图片区| 草草草视频在线观看| 丁香啪啪综合成人亚洲小说| 久久久一二三区| 亚洲国产另类久久精品 | 成人综合网网址| 五月久久久综合一区二区小说| 中文字幕66页| 亚洲人成在线播放网站岛国| 99精品久久久久久中文字幕| 美女999久久久精品视频| 日韩激情欧美| 男女视频网站在线观看| 久久综合九色综合欧美就去吻| 国产又黄又猛又粗又爽| 国产午夜精品免费一区二区三区| 精品国产欧美日韩一区二区三区| 亚洲一区在线直播| 国产一区二区影院| 欧美激情一区二区视频| 亚洲国产高清高潮精品美女| 日韩精品美女| 视频一区视频二区视频三区视频四区国产 | 在线视频观看日韩| 亚洲a v网站| 777久久久精品| 福利成人导航| 视频一区二区三区免费观看| 麻豆久久一区二区| 久久免费少妇高潮99精品| 亚洲美女又黄又爽在线观看| 电影亚洲一区| xxxx18hd亚洲hd捆绑| 久久久精品免费观看| 99草在线视频| 欧美专区日韩视频| 一区二区三区网站 | 日韩美女视频19| 色欲av永久无码精品无码蜜桃| 日本91av在线播放| 2023国产精品久久久精品双| 亚洲国产精品成人综合久久久| 欧美在线观看一二区| 污污网站在线观看| 欧美资源一区| 成人久久视频在线观看| 欧美另类高清videos的特点| 九九久久国产精品| 精品日韩在线| 久久久久久久无码| 91精品国产一区二区三区香蕉| 午夜影视一区二区三区| 日本女人高潮视频| 久久久久久久久99精品| 亚洲AV无码乱码国产精品牛牛| 国产91精品在线播放| 亚洲香蕉网站| jizzjizzjizz国产| 精品亚洲va在线va天堂资源站| 日本在线视频一区二区三区| 一本久道综合色婷婷五月| 亚洲午夜视频在线|