Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
はてなにおけるLinuxネットワークスタックパフォーマンス改善 / Linux network...
Search
Yuuki Tsubouchi (yuuk1)
July 02, 2016
Technology
46
19k
はてなにおけるLinuxネットワークスタックパフォーマンス改善 / Linux network performance improvement at hatena
はてな・ペパボ技術大会〜インフラ技術基盤〜@京都
Yuuki Tsubouchi (yuuk1)
July 02, 2016
Tweet
Share
More Decks by Yuuki Tsubouchi (yuuk1)
See All by Yuuki Tsubouchi (yuuk1)
博士学位論文予備審査 / Scaling Telemetry Workloads in Cloud Applications: Techniques for Instrumentation, Storage, and Mining
yuukit
1
1.6k
MetricSifter:クラウドアプリケーションにおける故障箇所特定の効率化のための多変量時系列データの特徴量削減 / FIT 2024
yuukit
2
160
工学としてのSRE再訪 / Revisiting SRE as Engineering
yuukit
19
12k
Cloudless Computingの論文紹介
yuukit
2
470
#SRE論文紹介 Detection is Better Than Cure: A Cloud Incidents Perspective V. Ganatra et. al., ESEC/FSE’23
yuukit
3
1.7k
エンジニアのためのSRE論文への招待 / Introduction to SRE Papers for Engineers
yuukit
2
11k
博士課程での研究まとめ 2023年1月版 / Summary of my research in the PhD course
yuukit
1
270
AI時代に向けたクラウドにおける信頼性エンジニアリングの未来構想 / DICOMO2022 6A-1
yuukit
7
2.9k
AIOps研究録―SREのための システム障害の自動原因診断 / SRE NEXT 2022
yuukit
10
12k
Other Decks in Technology
See All in Technology
Re:Define 可用性を支える モニタリング、パフォーマンス最適化、そしてセキュリティ
pyama86
9
3.6k
TSのコードをRustで書き直した話
askua
4
960
AWS Community Builderのススメ - みんなもCommunity Builderに応募しよう! -
smt7174
0
220
コロプラのオンボーディングを採用から語りたい
colopl
6
1.5k
色々なAWSサービス名の由来を調べてみた
iriikeita
0
140
インシデントキーメトリクスによるインシデント対応の改善 / Improving Incident Response using Incident Key Metrics
nari_ex
0
1.8k
実践!生成AIのビジネス活用 / How to utilize Generative AI in your own business
gakumura
1
170
サーバレスの未来〜The Key to Simplifying Everything〜
kawaji_scratch
2
300
JuliaTokaiとJuliaLangJaの紹介 for NGK2025S
antimon2
1
150
Goで実践するBFP
hiroyaterui
1
130
ドメイン駆動設計によるdodaダイレクトのリビルド実践 / Rebuild practice of doda direct with domain-driven design
techtekt
0
240
Plants vs thieves: Automated Tests in the World of Web Security
leichteckig
0
140
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
3k
It's Worth the Effort
3n
184
28k
Embracing the Ebb and Flow
colly
84
4.5k
Unsuck your backbone
ammeep
669
57k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
880
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
39
1.9k
Typedesign – Prime Four
hannesfritz
40
2.5k
Writing Fast Ruby
sferik
628
61k
Visualization
eitanlees
146
15k
Transcript
ͯͳʹ͓͚Δ -JOVYωοτϫʔΫελοΫ ύϑΥʔϚϯεվળ JEZ@VVLJ ͯͳɾϖύϘٕज़େձ ʙΠϯϑϥٕज़ج൫ʙ!ژ
!Z@VVL JEZ@VVLJ ΣϒΦϖϨʔγϣϯΤϯδχΞ !ͯͳ ೖࣾ
৽ଔͷࣄ Λհ
1 ΣϒγεςϜͷ ύϑΥʔϚϯε
ΣϒγεςϜͷయܕߏ LB Proxy Application Database
ϘτϧωοΫ Ͳ͔͜ʹ͋Δ
LB Proxy Web App Database ϘτϧωοΫʢϩʔϧʣ
LB Proxy Web App Database ϘτϧωοΫʢϦιʔεʣ $16 .FN %JTL /8
$16 .FN %JTL $16 .FN %JTL /8 /8 $16 .FN %JTL /8
ϘτϧωοΫʢϦιʔεৄࡉʣ $16 .FN %JTL /8 )PTU VTFS TZT JPXBJU ʜ
VTFE DBDIFE CVGGFS ʜ XSJUF *014 SFBE *014 SFBE MBUFODZ ʜ UY CQT SY CQT UY QQT ʜ
$16VTSOJDFTZTJPXBJUJSRTPGUTUFBMHVFTUJEMF BMM ιϑτׂΓࠐΈʢύέοτड৴ʣ ෛՙ͕ߴ͍
CPU %irq %softirq
େྔύέοτ ͱͷઓ͍
2 ωοτϫʔΫ ελοΫ
ωοτϫʔΫελοΫ w ωοτϫʔΫ*0Λ࣮ݱ͢ΔͨΊʹඞཁ ͳཁૉ܈ w /*$ɺΧʔωϧͷ/*$υϥΠόɺΧʔ ωϧͷ5$1*1ελοΫɺιέοτͳͲ w ύέοτૹड৴ɺύέοτόοϑΝཧɺ ϓϩτίϧॲཧͳͲΛؚΉ
w ड৴ଆͷෛՙ͕ߴ͍͜ͱ͕ଟ͍
ωοτϫʔΫ*0ߴԽ w (C&ͳͲʹΑΔωοτϫʔΫଳҬ෯্ʹ ΑΓɺҰఆ࣌ؒʹॲཧ͢Δύέοτ͕૿େ w (CQT.QQT #ZUFTQBDLFU w ωοτϫʔΫελοΫॲཧͷ$16ෛՙ͕ߴ͘
ͳΔ w $16ΫϩοΫ্͕ΒͣϚϧνίΞ࣌ʹ ಥೖ w ͞·͟·ͳߴԽख๏͕࣮͞Ε͍ͯΔ
NIC Kernel Process ύέοτड৴ϑϩʔ ؆қ
NIC Kernel Process ύέοτड৴ ύέοτసૹ ϓϩτίϧॲཧ σʔλίϐʔ SFBE SFDW
ύέοτड৴ϑϩʔ ؆қ 5$1*1ͷύέοτϔομղੳɺνΣοΫαϜܭࢉͳͲ ΞϓϦέʔγϣϯϓϩηεγεςϜίʔϧͰͪड͚
NIC Process ύέοτड৴ϑϩʔ ৄղ ύέοτ ड৴ ϓϩτίϧ ॲཧ σʔλड৴ ॲཧ
,FSOFM 3JOH #VGGFS 4PDLFU #VGGFS ΧʔωϧͷॲཧΛղ
NIC Process ύέοτड৴ϑϩʔ ৄղ ύέοτ ड৴ ϓϩτίϧ ॲཧ σʔλड৴ ॲཧ
,FSOFM 3JOH #VGGFS 4PDLFU #VGGFS ϋʔυ ׂΓࠐΈ ιϑτ ׂΓࠐΈ ΓͷॲཧιϑτׂΓࠐΈͰඇಉظॲཧ Ԇॲཧ ϋʔυׂΓࠐΈͰϦϯάόοϑΝʹύέοτΛੵΉ·Ͱ
ͳͥछྨͷׂΓࠐΈʁ w ड৴ύέοτ૿ׂΓࠐΈ૿ίϯςΩ ετεΠον૿ߴ$16ෛՙ w ϋʔυׂΓࠐΈ͚ͩͩͱύέοτड৴ͷͨͼ ʹϓϩτίϧॲཧ·Ͱଈ࣮ߦ͞ΕΔ w ϋʔυׂΓࠐΈͰύέοτΛόοϑΝʹੵ Ή͚ͩʹͯ͠ɺճͷׂΓࠐΈॲཧͷ$16ෛ
ՙΛԼ͛Δ w ιϑτׂΓࠐΈʹΑΓɺϝΠϯͷϓϩτίϧ ॲཧΛඇಉظॲཧ
/"1* /FX"1* w ޙճ͠ʹͯ͠ड৴ύέοτ͕૿͑ΕιϑτׂΓࠐΈ ͷ૿͑Δ w ෳͷύέοτΛ·ͱΊͯͭͷιϑτׂΓࠐΈͰॲཧ ͍ͨ͠ w ϋʔυׂΓࠐΈΛҰ୴ͱΊͯɺϙʔϦϯάʹΑΓϦϯά
όοϑΝ͔Βಉ࣌ʹύέοτΛऔΓग़͢ w ͨͩ͠ύέοτ͕গͳ͍߹ʹಛʹϨΠςϯγ͕େ͖ ͘ͳͬͯ͠·͏ͷͰɺड৴ύέοτ͕ଟ͍ͱ͖ͷΈ༗ޮ
NIC Process /"1* ύέοτ ड৴ ϓϩτίϧ ॲཧ σʔλड৴ ॲཧ ,FSOFM
3JOH #VGGFS 4PDLFU #VGGFS ϋʔυׂΓࠐΈΛͱΊͯɺϙʔϦϯά QPMMJOH
͜͜·Ͱ -JOVYωοτϫʔΫ ελοΫͷجຊతͳ
3 ͯͳͰͷࣄྫ
)"1SPYZͷ૿ w )"1SPYZΛ&$Ͱͷϩʔυόϥϯαͱͯ͠༻ w ιϑτׂΓࠐΈෛՙʹΑΓίΞͰ w $16ίΞ༨͍ͬͯΔͷʹɺ)"1SPYZͷεέʔϧ Ξτ͕ඞཁ w %/4ϥϯυϩϏϯʹΑΓɺෳͷ)"1SPYZ
ࢀরΛৼΓ͚ w ϩʔυόϥϯαΛϩʔυόϥϯε͠ͳ͍ͱ͍͚ͳ ͍ࣄଶ
)"1SPYZ ʜʜ EC ʜʜ BQQ ʜʜ TVHPJIBQSPYZQSJWBUF
ʜʜ EC ʜʜ BQQ ʜʜ )"1SPYZ
ׂΓࠐΈ͕ଟ͍ͳΒ ׂΓࠐΈࣗମΛݮΒ͢
NIC Process *OUFSSVQU$PBMFTDJOH ύέοτ ड৴ ϓϩτίϧ ॲཧ σʔλड৴ ॲཧ ,FSOFM
3JOH #VGGFS 4PDLFU #VGGFS /*$͕ͭͷϋʔυׂΓࠐΈͰෳͷύέοτΛ·ͱΊͯసૹ ϋʔυ ׂΓࠐΈ ෳύέοτἧ͏·Ͱ౸ணΛͭͨΊϨΠςϯγ্͕Δ
/*$υϥΠόͷύϥϝʔλݕূ w ༻/*$*OUFMͷJYHCF*OUFSSVQU5ISPUUMF3BUFΦ ϓγϣϯ w DYMBSHF͔ΒDYMBSHFʹ5$1ଓ w σϑΥϧτͰΣϒαʔϏεͷΑ͏ͳγϣʔτύ έοτ͕ࢧతͳঢ়گͰɺׂΓࠐΈ͕ߴ͘ͳΔ w
ΣϒαʔϏεͰͦ͜·ͰϨΠςϯγʹγϏΞͰ ͳ͍ w ݕূͷ݁ՌɺιϑτׂΓࠐΈͷ$16ར༻ TPGU ͕࠷େ·Ͱվળ l&$Ͱ43*07Λ͏ͱ͖ͷ/*$υϥΠόύϥϝʔλݕূz IUUQCMPHZVVLJPFOUSZ
ׂΓࠐΈॲཧΛෳͷ ίΞʹࢄͤ͞Δ
NIC Process ύέοτ ड৴ ϓϩτίϧ ॲཧ σʔλड৴ ॲཧ ͳͥෳͷίΞΛ͑ͳ͍ͷ͔ $16
ϋʔυׂΓࠐΈ͕͔͔ͬͨ$16ίΞͱಉ͡$16ίΞ͕ ιϑτׂΓࠐΈΛ࣮ߦ͢ΔͨΊ ϋʔυ ׂΓࠐΈ ιϑτ ׂΓࠐΈ
NIC Process ύέοτ ड৴ ϓϩτίϧ ॲཧ σʔλड৴ ॲཧ $16 314
3FDFJWF1BDLFU4UFFSJOH NIC Process ύέοτ ड৴ ϓϩτίϧ ॲཧ σʔλड৴ ॲཧ $16 NIC Process ύέοτ ड৴ ϓϩτίϧ ॲཧ σʔλड৴ ॲཧ $16 ίΞׂؒΓࠐΈ
314 3FDFJWF1BDLFU4UFFSJOH w ௨ৗϋʔυׂΓࠐΈ͕͔ͬͨ$16ͱಉ͡$16Ͱ ιϑτׂΓࠐΈΛ࣮ߦ w 314ɺଞͷ$16ʹίΞׂؒΓࠐΈͯ͠ɺϓϩτ ίϧॲཧΛଞͷ$16ʹͤΔ w 5$1ϔομͷ
TBEES TQPSU EBEES EQPSU ͷʹ ର͠$POTJTUFOU)BTIJOHʹΑΔࢄ w ݪଇಉ͡5$1ϑϩʔͳΒಉ͡$16ʹࢄ͞Ε ΔΑ͏ʹ w $16ΩϟογϡώοτΛߴΊͨ3'4 3FDFJWF 'MPX4UFFSJOH ͱ͍͏ͷ͋Δ l-JOVYͰϩʔυόϥϯαΩϟογϡαʔόΛϚϧνίΞεέʔϧͤ͞ΔͨΊͷΧʔωϧνϡʔχϯάz IUUQ CMPHZVVLJPFOUSZMJOVYOFUXPSLTUBDLUVOJOHSGT
ࣾͷ࠷ۙͷ ωοτϫʔΫαʔόʹ ͘ద༻ࡁ
314Ͱ3FEJTνϡʔχϯά w 3FEJTεϨουಈ࡞͢ΔͨΊɺϚϧν ίΞεέʔϧ͠ͳ͍ w ΧʔωϧͷωοτϫʔΫ*0ॲཧ͢ΔεϨο υͱɺ3FEJTεϨουͷࢄͰ͖Δ w 314ࢄઌ$16൪߸ΛࢦఆͰ͖Δ w
$16 ʹࢄͤ͞Δ w UBTLTFUͰ$16ΞϑΟχςΟΛઃఆ͠ɺ 3FEJTεϨουΛ$16 Ҏ֎ʹݻఆ IUUQSFEJTJPUPQJDTCFODINBSLT
$16ˋݮ
ଞʹଟ͘ͷ ߴԽख๏͕͋Δ νΣοΫαϜΦϑϩʔυ 540 5$14FHNFOUBUJPO0⒐PBE -30 -BSHF3FDFJWF0⒐PBE 50&
5$10⒐PBE&OHJOF 344 3FDFJWF4JEF4DBMJOH "DDFMFSBUFE3'4 914 1$*QBTTUISPVHI 43*07 *OUFM%BUB%JSFDU*0
4 ωοτϫʔΫελο Ϋͷઌٕज़
ͦͦΧʔωϧʹ ॲཧͤ͞ͳ͍ protocol process NIC process hardirq packet receive consistent
hashing forward
Ϣʔβϥϯυθϩίϐʔ w ύέοτΛ/*$͔ΒϢʔβϥϯυόΠύε w ࣮ w OFUNBQ w *OUFM%1%, w
ϢʔβϥϯυͰ5$1*1࣮ w ΔݶΓͰ࣮༻ஈ֊ͷωοτϫʔΫαʔό ·ͩͳ͍
ιέοτ"1*ͷݶք w େͷωοτϫʔΫαʔόͷ࣮104*9ͷι έοτ"1*ϕʔε w ιέοτ"1*ͰθϩίϐʔʹͰ͖ͳ͍ w ΧʔωϧͷιέοτόοϑΝʹੵΉඞཁ͕͋Δ w طଘͷωοτϫʔΫαʔόͷιέοτ"1*Λஔ͖
͑Δͷେม w Χʔωϧ͕ϋʔυͷਐԽʹ͍͔ͭͳ͘ͳΕɺ ීٴ͢Δ͔͠Εͳ͍
5 ·ͱΊ
·ͱΊ w ΣϒγεςϜʹ͓͚ΔωοτϫʔΫ*0ෛՙͷҐஔ͚ͮ w -JOVYͷωοτϫʔΫελοΫͷΈΛհ w ͯͳͰ࣮ફͨ͠ωοτϫʔΫελοΫͷߴԽख๏ w ׂΓࠐΈΛ·ͱΊΔ*OUFSSVQU$PBMFTDJOH w
ϓϩτίϧॲཧΛϚϧνίΞεέʔϧͤ͞ΔͨΊͷ 3143'4 w )"1SPYZɺ3FEJTͷྫ w ઌٕज़ͱͯ͠ɺ/*$͔ΒϢʔβϥϯυόΠύε͢Δ ٕज़͕͋Δ
04 ΞΠσΞͷๅݿ
04෦ͷٕज़ͷ֎ग़͠ w ιϑτׂΓࠐΈʹΑΔԆॲཧ w δϣϒΩϡʔͷΑ͏ͳඇಉظॲཧ w ׂΓࠐΈͱϙʔϦϯά w ϑϩϯτΤϯυʹ͓͚ΔϩϯάϙʔϦϯά 4FSWFS4FOU&WFOUT
w ϓϩηεεέδϡʔϥ w ྲྀߦΓͷ7.ίϯςφͷΦʔέετϨʔγϣ ϯ
04ͷٕज़Λ ࣗͷιϑτΣΞʹ ͱΓ͍Ε͍ͨ
04γεςϜιϑτΣΞ ͕͖ͳਓ IUUQIBUFOBDPSQKQSFDSVJUGSFTIPQFSBUJPOFOHJOFFS