精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

91福利国产精品| 波多野结衣91| 久久成人综合视频| 亚洲成a人无码| 亚洲插插视频| 18涩涩午夜精品.www| 国产精品一区二区三区免费观看| 7799精品视频天天看| 999成人网| 精品无码久久久久久国产| 亚洲欧美aaa| 嗯~啊~轻一点视频日本在线观看| 国产午夜精品在线观看| 99国精产品一二二线| 色老头一区二区| 黄色精品免费| 色婷婷综合久久久久中文字幕1| 亚洲乱妇老熟女爽到高潮的片| 欧美大片免费高清观看| 亚洲综合色自拍一区| 亚洲国产精品一区二区第一页| 亚洲国产精品成人久久蜜臀| 男女男精品网站| 久久免费高清视频| 婷婷伊人五月天| 你懂的视频欧美| 日韩精品一区二区三区在线| 麻豆三级在线观看| 中文字幕在线视频网站| 一区二区三区视频在线观看| 亚洲欧美精品| 精品视频一二区| 成人高清视频在线观看| 成人性生交大片免费看小说| 成年人视频免费| 一区二区三区成人精品| 欧美精品www在线观看| 亚洲综合久久av一区二区三区| 免费看成人哺乳视频网站| 亚洲激情中文字幕| 中国免费黄色片| 亚洲**毛片| 91精品福利在线一区二区三区| 在线观看av日韩| 亚洲一区二区三区四区| 日韩欧美在线视频免费观看| 91国视频在线| 久草在线资源站手机版| 婷婷六月综合亚洲| 欧美深夜福利视频| 日韩欧美一中文字暮专区| 精品成人久久av| 无码专区aaaaaa免费视频| 欧美人体视频xxxxx| 亚洲乱码国产乱码精品精的特点| 中文字幕成人一区| 香蕉视频在线看| 18成人在线视频| 国产在线无码精品| 欧美xxxbbb| 亚洲成av人综合在线观看| 激情小视频网站| 538在线观看| 精品美女永久免费视频| www黄色日本| 涩涩涩视频在线观看| 色婷婷亚洲婷婷| 亚洲天堂网一区| 深夜日韩欧美| 欧美成人综合网站| 国产精品麻豆入口| 一呦二呦三呦国产精品| 亚洲视频在线看| 懂色av蜜臀av粉嫩av永久| 99久久99久久精品国产片果冰| www国产精品视频| 麻豆精品一区二区三区视频| 激情综合激情| 国产成人拍精品视频午夜网站| 中文字幕精品在线观看| 国精产品一区一区三区mba桃花| 91aaaa| 天堂在线视频免费观看| 久久噜噜亚洲综合| 特级黄色录像片| zzzwww在线看片免费| 色八戒一区二区三区| 中文字幕一区久久| 国产精品网址| 中文字幕精品网| 欧美日韩亚洲国产另类| 免费视频一区二区三区在线观看| 国产精品久久91| www.国产精品视频| 久久久久久久久久久电影| 综合色婷婷一区二区亚洲欧美国产| 在线免费观看的av| 欧美性jizz18性欧美| 在线视频观看91| 欧美天堂社区| 欧美不卡视频一区发布| www.com亚洲| 国产成人精品亚洲777人妖| 欧美自拍资源在线| 美女尤物在线视频| 欧美色爱综合网| 午夜av免费看| 亚洲综合婷婷| 国产精品久久久久久一区二区| 国产成人精品亚洲精品色欲| 国产午夜精品理论片a级大结局| 日本中文字幕一级片| 久久99久久99精品免观看软件| 日韩久久久精品| 国产精品18在线| 久久www成人_看片免费不卡| 99电影在线观看| 97视频精彩视频在线观看| 精品国产鲁一鲁一区二区张丽| 国内av一区二区| 精品色999| 欧美专区在线播放| 韩国av免费在线| ㊣最新国产の精品bt伙计久久| 日本成人在线免费视频| 麻豆精品99| 欧美成人h版在线观看| 黄色一区二区视频| 久久免费视频一区| 欧美色图另类小说| 久久久久97| 国内精品久久久久久| 成人av手机在线| 亚洲视频1区2区| 亚洲 激情 在线| 久久av影视| 日韩男女性生活视频| 午夜小视频在线播放| 亚洲成在人线在线播放| 亚洲少妇一区二区| 综合久久精品| www.一区二区三区| 欧美人与禽性xxxxx杂性| 欧美成人猛片aaaaaaa| 欧美三级日本三级| 激情六月丁香婷婷| 国产精品欧美日韩一区| 茄子视频成人在线| 国产女主播在线写真| 欧美中文字幕不卡| 丁香六月激情综合| 精品一区二区免费| 国产麻豆电影在线观看| www.久久久.com| 欧美裸体男粗大视频在线观看| 国产福利视频导航| 亚洲线精品一区二区三区八戒| 大桥未久恸哭の女教师| 亚洲永久视频| 日本午夜精品电影| 欧美激情啪啪| 久久国产精品免费视频| 亚洲精品一区二区三区不卡| 亚洲图片欧美一区| 中文字幕日韩三级片| 亚洲欧美高清| 亚洲欧美日韩另类精品一区二区三区 | 日本一区二区综合亚洲| 女性女同性aⅴ免费观女性恋| 91精品国产自产在线丝袜啪 | 成人在线爆射| 日韩有码在线观看| 亚洲av无码一区二区乱子伦| 亚洲二区在线观看| 日本少妇高潮喷水xxxxxxx| 免费在线观看视频一区| 久久久国产精华液999999| 一区二区三区在线免费看 | 中文亚洲av片在线观看| 亚洲欧洲99久久| 稀缺小u女呦精品呦| 亚欧成人精品| 亚洲国产精品女人| 欧美黑白配在线| 国产精品亚洲激情| 91黄页在线观看| 中文字幕日韩精品有码视频| www.午夜激情| 色94色欧美sute亚洲线路一ni| 久久久久亚洲av片无码| 91亚洲国产成人精品一区二区三| 美女一区二区三区视频| 亚洲国产三级| 不卡中文字幕在线| 自拍视频一区| 成人午夜电影在线播放| 国产91在线精品| 国语自产精品视频在免费| 91在线网址| 日韩av中文字幕在线| 91精品中文字幕| 精品人伦一区二区三区蜜桃网站| 熟女av一区二区| 久久亚洲综合色一区二区三区| 黄色a级三级三级三级| 久久精品午夜| 成年人网站国产| 国产精品久久久久蜜臀 | 欧美在线亚洲综合一区| 日本午夜精品一区二区| 免费福利视频一区| 99re热精品| 四虎成人精品一区二区免费网站| 欧美在线免费看| av蜜臀在线| 欧美精品亚州精品| 一本一道波多野毛片中文在线| 亚洲老头同性xxxxx| 国内爆初菊对白视频| 91精品国产综合久久久久久久久久| 久久精品久久久久久久| 午夜成人免费电影| 久青草免费视频| 亚洲美女区一区| 少妇愉情理伦三级| 国产日韩精品久久久| 人妻大战黑人白浆狂泄| 99久久精品免费观看| 香蕉视频免费网站| 国产麻豆欧美日韩一区| 亚洲涩涩在线观看| 美女视频黄 久久| 国产真人无码作爱视频免费| 亚久久调教视频| 国产精品亚洲a| 久久激情网站| 日韩手机在线观看视频| 久久久夜精品| 欧美两根一起进3p做受视频| 香蕉久久夜色精品国产| 北条麻妃在线一区| 另类天堂av| 无码少妇一区二区三区芒果| 久久一区亚洲| 欧美成人黄色网址| 久久综合影音| 亚洲成人av免费看| 麻豆成人av在线| 色婷婷激情视频| 国产精品一区在线| 无码人妻一区二区三区免费n鬼沢| 国产精品影视网| 天堂va欧美va亚洲va老司机| 成人av在线影院| 免费在线观看你懂的| 国产日韩欧美不卡在线| 永久免费看片视频教学| 一区二区三区免费看视频| 久久国产一级片| 欧美日韩在线免费观看| 加勒比在线一区| 在线精品亚洲一区二区不卡| 亚洲视频一区在线播放| 8v天堂国产在线一区二区| www.国产精品视频| 日韩成人久久久| 91网页在线观看| 欧美精品免费在线观看| 偷拍自拍在线看| 国产精品亚发布| 成午夜精品一区二区三区软件| 九色91在线视频| 日韩在线欧美| r级无码视频在线观看| 日韩精彩视频在线观看| 久久久久久久久久一区| av在线综合网| 超碰人人干人人| 亚洲在线视频网站| 日韩精品成人免费观看视频| 6080国产精品一区二区| 少妇荡乳情欲办公室456视频| 一区二区三区无码高清视频| av黄色在线| 国产99视频精品免视看7| 伊人久久一区| 久中文字幕一区| 亚洲深深色噜噜狠狠爱网站| 日韩精品―中文字幕| 久久精品久久精品| 国产精品无码在线| 亚洲欧洲精品天堂一级| 精品在线播放视频| 91精品国产全国免费观看| 青青草手机在线| 美日韩精品免费观看视频| 午夜精品久久久久久久久久蜜桃| 91最新在线免费观看| 真实原创一区二区影院| 91黄色在线看| 久久国产成人午夜av影院| 亚洲天堂资源在线| 亚洲精品你懂的| 五月婷婷亚洲综合| 日韩欧美国产电影| 午夜激情视频在线观看| 欧美亚洲激情在线| 亚洲乱码一区| 中国成人亚色综合网站| 亚洲一区二区伦理| 波多野结衣三级视频| 国产精品久久久久精k8| 国产又黄又粗又爽| 日韩欧美国产午夜精品| 黄a在线观看| 国产精品青青在线观看爽香蕉 | 久久久久久久久久伊人| 免费亚洲电影在线| 性高潮久久久久久久| 亚洲丶国产丶欧美一区二区三区| 国产又黄又粗又硬| 这里只有精品在线播放| 这里有精品可以观看| 精品人伦一区二区三区| 国内在线观看一区二区三区| 色男人天堂av| 最新国产成人在线观看| 特级西西444www大胆免费看| 亚洲美女性生活视频| 日本а中文在线天堂| 韩国成人av| 亚洲高清av| 精品一区二区视频在线观看| 亚洲图片欧美视频| 日韩中文字幕免费在线观看| 欧美丰满少妇xxxxx做受| 免费一区二区三区在线视频| 一本色道久久99精品综合| 蜜臀av性久久久久蜜臀aⅴ| 成人无码av片在线观看| 欧美三级视频在线播放| av二区在线| 国产在线播放91| 亚洲国产不卡| 亚洲午夜精品在线观看| 一区二区久久久久久| 亚洲黄色片视频| 午夜欧美不卡精品aaaaa| 欧美五码在线| 久久国产色av免费观看| 中文字幕第一区二区| 一级aaaa毛片| 久久在线观看视频| 成人h动漫精品一区二区器材| 每日在线观看av| 2023国产一二三区日本精品2022| 日韩人妻精品中文字幕| 国产午夜精品免费一区二区三区 | 精品国产第一区二区三区观看体验| 日韩伦理av| 精品一区二区不卡| 久久一日本道色综合久久| 超碰人人干人人| 日韩一级片在线播放| 国产高清自产拍av在线| 日韩福利视频| 精品一区二区国语对白| 久久久99精品| 亚洲视频电影图片偷拍一区| 欧美成人福利| 无码日本精品xxxxxxxxx| 久久众筹精品私拍模特| 中文字幕精品一区二| 欧美激情久久久久久| 亚洲小说图片视频| 911福利视频| 亚洲国产日韩一级| 国产午夜在线观看| 91|九色|视频| 视频一区二区三区入口| 国产在线一卡二卡| 精品偷拍各种wc美女嘘嘘| 亚洲一区导航| 免费欧美一级视频| 亚洲人精品一区| 日本一区二区三区在线观看视频| 国产精品一香蕉国产线看观看| 欧美涩涩网站| 山东少妇露脸刺激对白在线| 欧美sm极限捆绑bd| 91av一区| 成人在线观看你懂的| 国产精品欧美综合在线| 秋霞网一区二区| 国产专区欧美专区| 久久性色av| 日韩欧美性视频| 欧美成人高清视频| 日韩一区电影| 成人乱码一区二区三区av|