本篇文章是個經驗談,作者想要聊聊是如何將一個 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/
同時也有32部Youtube影片,追蹤數超過47萬的網紅Hapa 英会話,也在其Youtube影片中提到,今回はネットで使われているGOATの意味について話します。 📝今日のレッスンのまとめ📝 =================================== 1. GOATの意味は? 0:20 2. みんなにとってのGOATって誰? 1:42 3. GOATは過去形でも使える? 3:44 <動...
「profile用法」的推薦目錄:
- 關於profile用法 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於profile用法 在 素顏天使 PLAINFACE ANGEL Facebook 的最佳貼文
- 關於profile用法 在 Charlotte Mak.夏洛特 Facebook 的精選貼文
- 關於profile用法 在 Hapa 英会話 Youtube 的精選貼文
- 關於profile用法 在 Eruru/えるるぅ Youtube 的最讚貼文
- 關於profile用法 在 Change Youtube 的最佳貼文
- 關於profile用法 在 看板Eng-Class - [請益] 請問profile的用法。 - 批踢踢實業坊 的評價
- 關於profile用法 在 HOPE English 希平方學英文- 【早晨一片語 】 「保持低調」 的評價
- 關於profile用法 在 High profile 用法2023-在Facebook/IG/Youtube上的焦點新聞和 ... 的評價
- 關於profile用法 在 High profile 用法2023-在Facebook/IG/Youtube上的焦點新聞和 ... 的評價
- 關於profile用法 在 profile是什么意思?怎么读?它的用法你知道吗? - YouTube 的評價
- 關於profile用法 在 【Facebook】按讚打卡戳一下,28個臉書英文必用詞彙通通教 ... 的評價
profile用法 在 素顏天使 PLAINFACE ANGEL Facebook 的最佳貼文
MeWe 用法混亂,暫時任何人 Add 我我都會 Accept,如果睇 Profile Pic / 名我認得嘅/真係識得嘅就會轉 Close Friend,其他任何人改到啲名唔知係邊個嘅當公海處理,見諒。
即日起,Facebook Page / MeWe 同步更新。直至可以完全捨棄 Facebook 為止。
https://mewe.com/i/plainfaceangel
profile用法 在 Charlotte Mak.夏洛特 Facebook 的精選貼文
▫️Kikitrade.開拓你投資新領域▫️
⠀⠀⠀⠀⠀⠀⠀⠀⠀
Bitcoin呢個名對於大家應該唔陌生,但係又有冇諗過去投資一下呢?原來投資Bitcoin已經唔係想像中咁遙遠嘅事,原來Bitcoin已經進化到不分年紀、工作、教育水平、投資經驗同金額,甚或你係咩身份都好都唔成問題。只要你想投資,Kikitrade就幫到你💓
⠀⠀⠀⠀⠀⠀⠀⠀⠀
Kikitrade係一個零佣金嘅資產投資平台,仲絕無隱藏任何手續費。你亦唔需要用好多資金去投資,令到成件事真係變得更大眾化,輕鬆又易用,仲好安全同可靠添呀!
⠀⠀⠀⠀⠀⠀⠀⠀⠀
用法好簡單🤗 喺@Kikitrade_official 嘅Profile頁面Bio link🔗位置下載返Kikitrade Apps,只須輸入電郵地址,完成簡單嘅註冊程序就可以用啦~ 連我呢啲唔識投資都易上手,大家有興趣都可以一齊研究吓🤪
×
×
🌟提提你呀而家申請仲可以有優惠💁🏻♀️💰
註冊之後點選首頁嘅免費換領bitcoin禮品卡,輸入兌換碼「getKIKI 」後,就可以免費獲得比特幣(價值$20港幣)啦!
____________________________________________
#kiki #kikitrade #CryptoForEveryone #YourFirstBitcoin
#第一桶幣 #投資 #菜鳥 #無難度 #mybussiness
.
#hkig #hkgirl #hkblogger #lifestyle #hklifestyleblogger #hkmicroinfluencer #hkinfluencer #hkdiscovery #portrait #hkportrait #chill #relax #photooftheday #ootd #写真 #instagood #like4like #follow4follow @ D ‧ PARK 愉景新城
profile用法 在 Hapa 英会話 Youtube 的精選貼文
今回はネットで使われているGOATの意味について話します。
📝今日のレッスンのまとめ📝
===================================
1. GOATの意味は? 0:20
2. みんなにとってのGOATって誰? 1:42
3. GOATは過去形でも使える? 3:44
<動画に協力してくれた先生の紹介>
👨 Christian先生
https://cafetalk.com/tutor/profile/?id=127788
**全問正解できたらネイティブ級!英語で〇〇の数え方**
日本語は数を数える時に「1本」や「1人」「1冊」のように数字の後に付け足す言葉が変わるため少し複雑で、逆に英語は数の数え方に関しては比較的シンプルで簡単だと言われていますが、実際はどうなんでしょうか?今日は、Dana先生と一緒に英語の数の数え方について話し合います。https://youtu.be/sH7P1H1W6CQ
===================================
☆【Hapa Buddies】Hapa英会話オンラインコミュニティ
英語が好きな仲間と一緒に楽しく英語を学びませんか?
https://hapaeikaiwa.com/buddies/
☆インスタやツイッターでも日常会話で使える実践的なフレーズを毎日投稿しています!
・インスタ: https://www.instagram.com/hapaeikaiwa
・ツイッター:https://twitter.com/hapaeikaiwa
☆ Spotifyオリジナル番組「English Mindset」
英語力ゼロで海外に飛び出したアスリートやクリエーター、留学経験なしの経営者などをゲストに迎え、インタビューを通して英語習得のカギとなった彼らの思考ロジックに迫る番組。 http://spoti.fi/HapaENGLISHMINDSET
☆【Hapa英会話Podcast】生の英語を楽しく学べる
毎週金曜日、台本を一切使わないアメリカ人のリアルな日常英会話を配信。
http://hapaeikaiwa.com/podcast/
☆【Hapa英会話メルマガ】1日1フレーズ!生英語
通勤中ちょとした合間を利用して無理なく英語が学べるメルマガ『1日1フレーズ!生英語』平日の毎朝6時に配信。http://hapaeikaiwa.com/mailmagazine/
#Hapa英会話
#日常英会話
#ロサンゼルス

profile用法 在 Eruru/えるるぅ Youtube 的最讚貼文
LINEスタンプもボイス付きで可愛いぞ!スタンプ送る相手は付属していません
チャンネル登録よろしくお願いします!→http://u0u0.net/KmNR
えるるぅと申します!
本日クランチャットのスタンプが大量追加!
プリコネリリース依頼、3年半たってようやく追加された大量のスタンプを1回だけでも堪能しておきましょう!
前回→https://youtu.be/55MuUMmueFg
Hi, I'm Eruru. I'm making "game play" videos. I love [Princess Connect Re:Dive] [THE IDOLM@STER CINDERELLA GIRLS] [BanG Dream! Girls Band Party!] [Granblue Fantasy]. I'm looking forward to seeing you in my videos or Live broadcast.
【基本的なこと】
初心者向け講座Part1から→https://youtu.be/D-vXmcrHtgE
クランバトル基礎知識→https://youtu.be/8Gwapnve0-c →https://youtu.be/iYJzy6Lx8oY
見たら始めたくなる動画→https://youtu.be/aYb1gQcN_0A
【キャラ育成関連】
キャラ育成優先度→https://youtu.be/4asOXdYY_wo
→https://youtu.be/1_Yn-YUlDLUHARD
回るべき場所解説→https://youtu.be/IF25xESGsvw
→https://youtu.be/Dmont82nFYg
各種コインの交換優先度→https://youtu.be/xe7sLWmIJqw
女神の秘石の賢い使い方→https://youtu.be/mco9nen_90E
専用装備について→https://youtu.be/bqcq6wUpRKg
→https://youtu.be/ZUHy1NyalO0
タンクとヒーラーについて→https://youtu.be/9-f0e1N3zIk
キャラの星上げについて→https://youtu.be/bzlc-XetBAc
【攻略関連】
ダンジョンEXⅡ解説→https://youtu.be/E6rsuwqIUKU
効率的なイベント攻略→https://youtu.be/E5jpIKouJbQ
イベントHARDボスワンパンの考え方→https://youtu.be/W-0Y9hzYCug
ルナの塔解説→https://youtu.be/5zldcsipwN8
ドロップ3倍・イベント・聖跡どれやる?→https://youtu.be/Nvazz4Vprws
【知っておくと良いこと等】
絶対ぶち当たる疑問ランキングTOP5→https://youtu.be/0z0jGl29A9Y
知っておきたい知識・小技5選→https://youtu.be/xfOp9Sd2Ca4
後悔しない装備集め講座→https://youtu.be/zSDH4J7NNqM
用語・略語解説→https://youtu.be/zQ1KHvJDVI0
マナの稼ぎ方について→https://youtu.be/zQX8b9j4s7Q
プリコネR動画リスト:https://youtu.be/3VOmg3PGj9g?list=PL_ygR7-1_wn1EaMt2RBokzLJVPE2SHNqv
プリンセスコネクト!Re:Dive公式サイト:https://priconne-redive.jp/
★ご連絡
eruru.urure☆gmail.com
※☆→@にしてください
★ Twitter
https://twitter.com/_eruru_
★Mildom
https://www.mildom.com/profile/10394665
ミルダムでも生放送やってます!
よければフォローよろしくお願いします。
★Twitch
https://www.twitch.tv/eruru
#プリコネR #PrincessConnect #プリンセスコネクト

profile用法 在 Change Youtube 的最佳貼文
Path of Exile 3.15 Announcement REACTIONS!
先說這是流亡黯道完整的吐槽大會吧
GGG直接不演了,我們直接砍爆你們喜歡的內容,壓戰力上限
官方改版影片 : https://www.youtube.com/watch?v=mT_aoGoMm50&ab_channel=PathofExile
1、新聯盟Expedition
2、19種技能對應19種昇華
3、預告大砍平衡與挑戰性
4、砍藥劑充能與新藥劑使用法
5、砍過度強大輔助寶石來平衡
6、大逃殺回歸
早起腦袋還在熱機中請見諒~
晚點會製作懶人包,想要看完整地以此部影片為主。
成為天雷信徒支持我 : https://www.youtube.com/channel/UCr67bMjpQW6D63VZnRwmfgw/join
3.14流派 : https://www.youtube.com/watch?v=IVoAYBJ2pQI&list=PLtFbYRPBhJExm9lXVY2CvCgLyjRt8OGGI&ab_channel=Change
3.13流派 : https://www.youtube.com/watch?v=ccplz8_VRk0&list=PLtFbYRPBhJEzy3VyO9VJoMh7g5euFxU5b&ab_channel=Change
----------------------------------------------------------
角色伸展台 : https://web.poe.garena.tw/account/view-profile/B012010005/characters
pob簡易使用介紹 : https://www.youtube.com/watch?v=AlDHn5a8Y-Y&t=6s
博學家FB : https://www.facebook.com/pg/%E5%8D%9A%E5%AD%B8%E5%AE%B6Change-113246213369127/posts/?ref=page_internal
#流亡黯道 #POE

profile用法 在 HOPE English 希平方學英文- 【早晨一片語 】 「保持低調」 的美食出口停車場
【早晨一片語 】 「保持低調」- Keep A Low Profile↓ https://www.hopenglish.com/keep-a-low-profile 注意片語在例句中的用法,然後試著自己造個句子吧! ... <看更多>
profile用法 在 High profile 用法2023-在Facebook/IG/Youtube上的焦點新聞和 ... 的美食出口停車場
high profile 中文的意思、翻譯及用法:鮮明的姿態;引人注目的高姿態;明確的立場。英漢詞典提供【high profile】的詳盡中文翻譯、用法、例句等. ... <看更多>
profile用法 在 看板Eng-Class - [請益] 請問profile的用法。 - 批踢踢實業坊 的美食出口停車場
No matter how well-intentioned you might be, you will always be remembered as
that little [N-word] who runs with so-and-so.
That's how profiling starts.
第二句的profiling是動名詞嗎?
若改成profile,That's how profile starts.,這句話對嗎?
謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 74.192.213.83
謝謝指導。^^。
※ 編輯: eebarry 來自: 74.192.213.83 (03/23 01:46)
... <看更多>