本篇文章是個經驗談,作者想要聊聊是如何將一個 4vCPU 的VM給調整到可以達到每秒處理 1.2M(120萬)個 JSON Reuqest,本篇文章非常的長,所以會分多天來介紹。
整篇文章探討的是各種 turning 的步驟,來聊聊如何從最初每秒 224k(22萬四千) 給調整到每秒 1.2M 的處理能力。
整個過程分成九大步驟,後面同時標示每個過程後的每秒請求能力
1. Application Optimizations (347k)
2. Speculative Execution Migtigations (446k)
3. Syscall Auditing/Blocking (495k)
4. Disabling iptables/netfilter (603k)
5. Perfect Locality (834k)
6. Interrypt Optimizations (1.06M)
7. The Case of the Nosy Neighbor (1.12M)
8. The Battle Against the Spin Lock (1.15M)
9. This Gost to Twelv (1.20M)
作者強調,上述的過程不一定適合你的應用程式,但是透過這些步驟能夠讓你更佳瞭解應用程式的運作行為,同時也有機會發現一些潛在的瓶頸問題。
環境介紹
1. 團隊使用 Techempower 來進行 JSON Serialization 的測試
2. 使用 libreactor(event-driven框架) 來搭建一個簡單的 API Server
3. HTTP 的解析使用 picohttpparser,同時使用 libclo 來處理 JSON 的編碼
4. 硬體環境
- Server: 4 vCPU, c5n.xlarge AWS VM
- Client: 16 vCPU, c5n.4xlarge AWS VM (clinet太弱會變成瓶頸)
- Network: Server/Client 屬於同一個可用區域(AZ)
5. 軟體環境
- 作業系統: Amazon Linux2 (Kernel 4.14)
- Server: 使用 libreactor (使用不同版本,分別是 Round18 以及 Round20)
- Client: 修改 wrk 這個知名的工具並重新命名為 twrk,詳細差異自己看文章內部,主要都跟顯示有關
6. 實驗方式
- 每個測試跑三次,取中間值
- 256 連線,16 threads,同時每個 thread 都會 pin 到一個固定的 CPU
- 每個實驗都有兩秒的暖機時間來建立連線
Ground Zero
第一個要探討的就是什麼最佳化都還沒有使用前,到底當前應用程式可能的瓶頸在哪裏
首先團隊將該應用程式與其他常見的應用程式或是開發框架比較,譬如 Netty, Nginx, Actix, aspcore 等, libreactor 的效能不錯,有中上水準。
接者作者使用火焰圖(Flame Graphs)來 Profile 該伺服器,作者很好心地將文章中所有的火焰圖都調整了一下,讓所有的 user-space 相關的 function call 都轉成藍色,而剩下跟 kernel 相關都維持紅色。
1. 大部分的時間都在 Kernel 處理
2. 主要是花費在收封包與送封包
3. 應用程式本身主要是分兩大部分,解析 HTTP 的封包以及處理請求與回應。
從上述兩點來看,作者認為目前的應用程式寫得算不錯,因為瓶頸很明顯是卡在 Kernel 端
接下來就正式進入到各種 Turning 的章節探討
Application Optimizations
長話短說:
- 作者基於 libreactor Round18 的框架進行修改,並且所有的修改都已經被合併到 Round20 的版本中,而這些修改主要是實作方面的強化以及整個框架的最佳化。
1. 作者首先透過 htop 觀察運行過程,發現 Server 只有使用 2vCPU 而已(系統有 4vCPU),因此這是作者進行的第一個修改,讓 Server 使用了 4vCPU,這個簡單調整就讓效能提升 25%
註: 作者特別強調,不要覺得從 2vCPU 變成 4vCPU 效能就可以變成兩倍,主要是1) 沒有使用的 vCPU 還有很多其他的工作要處理,因此不是完全都送給你應用程式處理。2)基於 hypter-thread vCPU 的架構,環境只有兩個真正的 CPU 而是透過邏輯的方式產生四個抽象的 CPU,所以全用一定會變快,但是基於很多資源還是要競爭與共用,數字不是單純翻倍
2. 作者自己的應用程式本身使用 gcc 建置時有使用 "-o3" 的方式來最佳化處理,然而框架本身卻沒有使用 "-o3" 的方式來弄,因此作者也針對這個部分來處理,讓建制框架時能夠使用 -o3
3. 從實作方面來看,作者觀察到 libreactor 1.0 版本使用的是 read/write 這兩個常見的方式來處理封包的送收,作者將其修改成 recv/send 整個效能就提升了將近 10%。
註: write(針對 FD,更全面廣泛的用法) 與 send(針對 Socket,更針對的用法) 使用上差異不大,但是 write 於底層 Kernel 最終還是會呼叫到 send 來處理,所以基本上可以理解就是在沒有特別參數需求時,可以直接跳過幾個 kernel function 來達到加速的效果。
write kernel 內的走向: sys_write -> vfs_write -> __vfs_write -> sock_write_iter -> sock_sendmsg
send kernel 內的走向: sendto -> sock_sendmsg
4. 作者觀察到火焰圖中有一些 pthread 相關的資料,進而發現 libreactor 會創造一個 thread pool 來處理非同步的 DNS 名稱解析問題。對於一個 HTTP Client 來說,如果今天要發送請求到多個不同的 domain,而每個 domain 都會需要進行一個 blocking 的解析過程,透過這種方式可以減少 DNS 解析造成的 blocking 問題。然而對於 HTTP Server 來說,這個使用情境帶來的效益似乎就稍微低了些,畢竟 Server 只有 Bind Socket 之前可能會需要去解析一次 DNS 而已。
大部分的情境下, thread pool 都是應用程式初期會去創造而接者就不太會管她,但是對於錙銖必較的效能除錯人來說,任何能夠調整的部分都可能是個值得探討的地方。
作者透過修改 Server 端(準確來說是 libreactor 框架內的程式碼)關於 Thread Pool 的一些用法,成長的讓整個效能提升了 2~3%
結論來說,透過上述四個概念來提升的程式碼效能。
1. vCPU 盡量使用: 25%-27%
2. 使用 gcc -O3 來建置框架的程式碼: 5%-10%
3. 使用 march=native 等參數來建置最後的 server 應用程式: 5%-10%
4. 使用 send/recv 而非 write/read: 5%-10%
5. 修改 pthread 的用法: 2%-3%
註: 作者強調每個最佳化的結果並非是單純累積的概念,反而還會有互補的效果。
可能前述的操作實際上也會讓後續的操作達到更好的效果,
譬如如果先跑 vCPU 的調整,效能大概提升 25%,但是如果先執行別的最佳化過程,最後再來調整 vCPU,就可以達到 40% 的效果,主要是 CPU 可以共有效率的去執行程式。
最後,這個部分讓整個處理封包能力從 224k 提升了 55% 到 347k (req/s)。
從火焰圖來看,整個 user-space 的範圍縮小許多,同時 send/recv 的處理也有使得整體的高度下降一點點(大概四格..)
為了避免文章過長,本篇文章就探討第一個最佳化的過程,剩下的就敬請期待後續!
https://talawah.io/blog/extreme-http-performance-tuning-one-point-two-million/
同時也有1部Youtube影片,追蹤數超過9,090的網紅每日幣研 Desmond,也在其Youtube影片中提到,Desmond 於去年九月在 Coinlist 未成名前投資了 USD 1,000 購買新幣 FLOW,如今已變成了 USD 170,000,足夠在香港買樓付首期。話雖如此,但今集他不止會講解 Coinlist 的回報率和值博率,同時亦會講解其風險和缺點,喜歡以小博大的投資者不得不看。 *片尾問答...
每秒處理7 在 婷婷看世界 Facebook 的最讚貼文
【全球最強AI芯片!今天,阿里巴巴第一顆自研芯片問世,1秒處理7.8萬張照片,能頂10顆GPU】
今天的杭州雲棲大會上,達摩院院長張建鋒現場展示了這款全球最強的AI芯片——含光800。
作為一款主要用於雲端視覺處理場景的推理芯片,含光800采用12納米制程工藝,集成了170億個晶體管,性能和能效比都做到了全球最強。
張建鋒說:“在全球芯片領域,阿里巴巴是一個新人。阿里巴巴去年成立了半導體公司‘平頭哥’,此前發布的玄鐵和今天發布的含光800是平頭哥的萬里長征第一步,我們還有很長的路要走。”
過去半年,平頭哥先後發布玄鐵910、無劍SoC平臺等產品。隨著含光800的發布,平頭哥端雲一體全棧產品系列初步成型,涵蓋處理器IP、一站式芯片設計平臺和AI芯片,實現了芯片設計鏈路的全覆蓋。
#每秒處理7.8萬張照片
“含光”得名於傳說中的上古三大神劍之一,該劍含而不露,光而不耀,正如含光800帶來的無形卻強勁的算力。
在業界標準的ResNet-50測試中,含光800推理性能達到78563 IPS(每秒能處理78563張照片),比目前業界最好的AI芯片性能高4倍;能效比500 IPS/W,是第二名的3.3倍。
含光800性能的突破得益於軟硬件的協同創新:硬件層面采用自研芯片架構,通過推理加速等技術有效解決芯片性能瓶頸問題;軟件層面集成了達摩院先進算法,針對CNN及視覺類算法深度優化計算、存儲密度,可實現大網絡模型在一顆NPU上完成計算。
我們知道,芯片設計是一個十分復雜的系統工程,流片失敗是所有芯片設計企業的噩夢,數以億計的巨額流片費用白白燒掉不說,還意味著所有硬件設計需要推倒重來,這遠比軟件出BUG問題更加嚴重。一般芯片公司需要做兩次或多次才能流片成功。
即便流片成功,也不代表芯片可以直接商用,它還需要經過復雜的測試驗證,在各項指標都符合實際場景需求後才到了真正的商用階段。
值得註意的是,平頭哥卻很生猛,用最短的時間完成了芯片的設計、流片整個過程,7個月完成前端設計,之後僅用了3個月就成功流片。這背後主要得益於阿裏軟硬件的深厚積累,以及豐富的驗證場景。
#含光AI雲服務已上線
在人工智能行業,AI芯片雖是最重要的硬件基礎設施,卻總因雷聲大雨點小而遭人詬病,歸根結底,初創公司缺乏將芯片落地的場景和能力。
阿里巴巴就不存在這個問題,阿里巴巴自己就是全球最大的人工智能應用者之一,淘寶等等一系列豐富的場景是就是研發人工智能芯片的絕佳土壤,他們擁有豐富的人工智能應用場景,圖像視頻分析、搜索、推薦這些業務場景都需要AI專用芯片提供算力,而圖像、視頻對算力的需求量最大。
目前,含光800已應用在阿裏巴巴內部核心業務中。
根據雲棲大會的現場演示,在城市大腦中實時處理杭州主城區交通視頻,使用傳統GPU需要40顆,延時為300ms,單路視頻功耗2.8W;而使用含光800僅需4顆,延時降至150ms,單路視頻功耗1W,有效節約了硬件和時間成本。
另外還有拍立淘商品庫,每天新增10億商品圖片,為了讓用戶快速從海量圖片中精準搜索到商品,需要強大的計算力支撐,使用含光800搜索效率可提升12倍,時間從傳統GPU的1小時縮減至5分鐘。
含光800的算力不僅可以滿足阿裏內部場景的需求,還會通過全球前三、亞太第一的阿裏雲對外輸出,幫助企業用更低的成本獲取高性能算力,加速業務創新。
基於含光800的AI雲服務已於當天正式上線,相比傳統GPU算力,性價比提升100%。對於受限於算力瓶頸的企業而言,含光800可以更高效地運行更復雜、更先進的算法。
#做面向AIoT時代的普惠算力
過去半年,平頭哥先後發布了玄鐵910、無劍SoC平臺。隨著含光800的發布,平頭哥端雲一體全棧產品系列初步成型,涵蓋處理器IP、一站式芯片設計平臺和AI芯片,實現了芯片設計鏈路的全覆蓋。
不同於絕大多數芯片商,平頭哥的目的並非賣芯片,而是延續了阿里巴巴“讓天下沒有難做生意”的願景,開辟了全新的商業模式(平頭哥模式)。
平頭哥認為,AIoT場景需要新的計算架構,這必將在芯片行業將引起一波全新技術革命和產業浪潮。但AIoT市場有強應用驅動和場景碎片化等特點,平頭哥希望通過端雲一體芯片生態為各行業提供普惠算力。
從平頭哥全系列產品的名字和定位,就可以看出他們做普惠算力的良苦用心。
玄鐵系列致力於為AIoT終端芯片提供高性價比IP,外部合作夥伴可以在玄鐵的IP(知識產權)核上,根據場景需要增添擴展指令,設計出自己的芯片。過程類似於高通(75.230,-2.60%)和華為在ARM的Cortex-A系列處理器的基礎上,設計出驍龍和麒麟。
這也是阿里將其取名為玄鐵的原因:“玄鐵重劍”由楊過交給郭靖夫婦後,熔化鑄成了倚天劍和屠龍刀。
玄鐵系列可用於5G基站、人工智能加速、自動駕駛等領域。平頭哥承諾,玄鐵910的授權價格將比競爭對手降低一半以上。
同樣能夠幫助企業降低芯片設計門檻的,還有無劍SoC平臺。
無劍是面向AIoT時代的一站式芯片設計平臺,提供集芯片架構、基礎軟件、算法與開發工具於一體的整體解決方案,能幫芯片設計企業將設計成本降低50%,周期壓縮50%。
獨孤求敗四十歲前使用玄鐵重劍,四十歲後,草木竹石均可為劍,漸進於無劍勝有劍之境。正如平頭哥無劍平臺,自己能夠沒有芯片,但可幫助各路芯片設計企業“鑄劍”。
此外,平頭哥還將成立芯片開放社區,進一步為芯片產業提供開放協作的平臺,爭取將操作系統、軟硬件融合的算法和核心IP等具有共性的技術做好做精做出競爭力,並形成生態,然後開放給合作夥伴,幫助他們基於高質量的基礎設施打造芯片產品,提升產業整體競爭力。
每秒處理7 在 Beginneros Facebook 的最佳解答
【#科技企業資訊︱7個有關Google的數據】
找不到路,問Google!找資料,問Google!不知自己有什麼病,問Google!Google已經成為大家生活中的一部分,以下是一些有關Google的有趣數字分享。
-
1. Google佔全球74.54%搜索引擎的使用率
-
2. Google平均每秒處理超過4萬個搜索,每日處理35億次搜索,相當於全球每年1.2萬億次搜索
-
3. Google搜索使用者多達11.7億個用戶
-
4. 自2003年,Google已回答了4500億次不重覆的查詢,從未查詢過的問題佔每日查詢15%
-
5. 到2014年,Google 已經索引超過130,000,000,000,000(130兆)個網頁
-
6. Google的數據中心使用全球0.01%的電力
-
7. DeepMind (人工智能程式)將Google的製冷消耗用量降低40%,電量總使用降低15%
-
如果沒有Google,大家的生活會變成怎樣?
-
資料來源:brandwatch.com
------------------------
延伸閱讀:
【經典遊戲打磚塊|#Google彩蛋系列】
【請勿在Google搜尋Zerg Rush|#Google彩蛋系列】
------------------------
<想每日閱讀冷知識?將專頁設為搶先看吧!>
◆ 每日分享知識、每月推出課程
◆ 網站:https://www.beginneros.com/
◆ Youtube:https://goo.gl/OEJrGt
◆ Instagram:@beginneros
◆ Medium:@beginneros
每秒處理7 在 每日幣研 Desmond Youtube 的最佳貼文
Desmond 於去年九月在 Coinlist 未成名前投資了 USD 1,000 購買新幣 FLOW,如今已變成了 USD 170,000,足夠在香港買樓付首期。話雖如此,但今集他不止會講解 Coinlist 的回報率和值博率,同時亦會講解其風險和缺點,喜歡以小博大的投資者不得不看。
*片尾問答環節,Desmond 提及 RUNE 正處於適合購入的低價,但其實是講 7 月 27 日錄影當日的情況。如今高價低價與否,請各位投資者自行考慮。
推薦影片:Solana (SOL) 每秒處理 50000 筆交易 拋離以太坊及幣安智能鏈
https://youtu.be/VqJSwhWQLwA
使用我們的 Coinlist 優惠碼 "XAA6MR",可獲贈等值10美元的 BTC。連結如下:
https://coinlist.co/clt?referral_code=XAA6MR
#Coinlist #Coinlist教學 #Coinlist介紹 #買樓 #首期 #置業 #六合彩 #Solana #SOL幣 #Filecoin #FIL幣 #FLOW幣 #MINA幣 #CASPER幣 #CLOVER幣
_______________________________________________
【每日幣研新書公開發售了!🥳】
新書「加密貨幣投資實戰」中匯集了每日幣研的兩位創辦人多年以來研究加密貨幣的心得以及投資技巧,新手老手都適合閱讀。🤓此外,書中更有不同交易所的開戶優惠碼,高達20%交易費折扣優惠,千萬不要錯過!
📣香港網上訂購
大家可用 $108 HKD 的優惠價購買(香港免運費!)🌏
👉🏻https://www.iglobe.hk/products/cryptowesearch-cryptocurrency
📣台灣團購
大家可以在8月2日前填妥下方的訂購表格,即可以優惠價 TWD 360 (原價 TWD 499) 購入新書!✈️
https://forms.gle/ExJFJpEkQBHRqaPu8
_______________________________________________
幣安教學
幣安交易所(Binance) 完整文本教學,附獨家 20%永久交易折扣優惠碼(W4MX4PT8)
https://www.cryptowesearch.com/binancespecialoffer_yt
幣安開戶影片教學:3 分鐘開戶即享 20% 永久交易費折扣
https://youtu.be/boLIAwwETcA
_______________________________________________
新手教學
PancakeSwap教學:如何流動性挖礦和收息理財
https://youtu.be/WGiCorMqHSw
_______________________________________________
基本理論
比特幣是甚麼?分析挖礦、礦工和礦場的運作原理!
https://youtu.be/MTAZj9lNJ_c
比特幣、以太幣大跌 整合零碎幣市資訊和歷史分析崩盤原因
https://youtu.be/GHkUfLMofTE
_______________________________________________
幣種介紹
潛力公鏈 Fantom!代幣 FTM 有望在 Coinbase 上市集資
https://youtu.be/oiE1sIXT8LY
穩定幣USDT或成幣圈最大黑天鵝?
https://youtu.be/T_mKCuct46g
升值潛力媲美幣安幣(BNB)的平台幣FTT
https://youtu.be/91xQ0mx9FsE
狗狗幣之父清倉退市 錯失購買500架法拉利機會
https://youtu.be/F9ghi5PFn64
潛力幣Blocto即將開售 升值潛力媲美 UNI代幣
https://youtu.be/ThJgV1X9eks
_______________________________________________
追蹤每日幣研,獲取更多比特幣和以太幣等加密貨幣的分析,以及區塊鏈行業的最新情報和教學。
官方網站:https://cryptowesearch.com/
Instagram:https://www.instagram.com/crypto_wesearch/
Facebook:https://www.facebook.com/cryptowesearch
Telegram 群組 (HK):https://t.me/cryptowesearch
Telegram 群組 (TW):https://t.me/cryptowesearchtw
Telegram 頻道:https://t.me/cryptowesearch_news
每秒處理7 在 Nikon D7500 每秒連拍8張-RAW檔連拍50張 的美食出口停車場
Nikon D7500 每秒 連拍8張□ 搭載最新的EXPEED5 影像 處理 引擎的D7500,能連續拍攝14-bit RAW檔高達50張! ... Last commented on: 2017年 7 月25日. ... <看更多>
每秒處理7 在 預付卡儲值| 中華電信網路門市CHT.com.tw 的美食出口停車場
等)不得轉至其他中華電信門號使用或退費;(3)門號逾期回收6個月內,未提出餘額處理之申請,本公司得自逾期第7個月起,每月酌收固定保管費,直至逾期餘額抵扣完畢為止。 ... <看更多>
每秒處理7 在 Pi幣最新消息 - YouTube 的美食出口停車場
[Pi Network]Pi幣最新消息:Pi Network 每秒 可 處理7 萬筆交易,全球轉帳速度3-5秒,Pi幣擴容是比特幣的10000倍! 一、歡迎訂閱,把握最新最快速的訊息 Pi ... ... <看更多>