Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Rustで作るLinuxトレーサ / libbpf-core-with-rust
Search
KONDO Uchio
April 27, 2021
Technology
1.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rustで作るLinuxトレーサ / libbpf-core-with-rust
@RustのLT会 Shinjuku.rs #15
https://forcia.connpass.com/event/206698/
KONDO Uchio
April 27, 2021
More Decks by KONDO Uchio
See All by KONDO Uchio
大規模レガシーテストを 倒すための CI基盤の作り方 / #CICD2023
udzura
5
2.6k
Ruby x BPF in Action / RubyKaigi 2022
udzura
0
340
Narrative of Ruby & Rust
udzura
0
290
開発者生産性指標の可視化 / pepabo-four-keys
udzura
3
1.9k
Talk of RBS
udzura
0
520
Re: みなさん最近どうですか? / FGN tech meetup in 2021
udzura
0
880
Dockerとやわらかい仮想化 - ProSec-IT/SECKUN 2021 edition -
udzura
2
840
Device access filtering in cgroup v2
udzura
1
1.1k
"Story of Rucy" on RubyKaigi takeout 2021
udzura
0
960
Other Decks in Technology
See All in Technology
SLOを阻む不安
sraku2159
0
230
Microsoft Entra Kerberos で実現するクラウド デバイス管理
tamaiyutaro
2
650
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
0
630
eBPF 簡介 2026 版
shunghsiyu
0
190
Software Engineering in an AI-Driven World
erikjhordan_rey
0
130
Sizing, Benchmarking and Performance Tuning Apache Flink Clusters
rmetzger
0
130
慶應義塾大学 AI実践05 論文執筆の仕組み化
keio_smilab
PRO
7
3.8k
Shared Signals Framework 仕様解説
oidfj
0
220
FinOpsを導入してマルチプロダクトのコスト最適化を実現する
kworkdev
PRO
0
140
ライフワーク「猫でもわかるDirectConnect」
kentapapa
0
280
Technical Project Manager の役割とやりがい、少しだけ AI
yoshiiryo1
0
600
BALLAS Technology Deck
ballas_inc
0
230
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Prompt Engineering for Job Search
mfonobong
0
580
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
520
The Mindset for Success: Future Career Progression
greggifford
PRO
0
560
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
470
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
330
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Deep Space Network (abreviated)
tonyrice
0
410
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
280
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Transcript
F#1'ͱ͔͍͏ࠓྲྀߦͬͯΔͭ 6DIJP,POEP(.01FQBCP *OD 4IJOKVLVST 3VTUͰ࡞Δ-JOVYτϨʔα 1IPUPCZ)FSCFSU#JFTFSIUUQTQJYBCBZDPNJNBHFTJE
γχΞɾϓϦϯγύϧΤϯδχΞ ۙ౻ Ӊஐ࿕ / @udzura https://blog.udzura.jp/ Uchio Kondo ٕज़෦ ٕज़ج൫νʔϜ
@ GMOϖύϘ / Ԭ ΤϯδχΞΧϑΣʢԬࢢẂנจԽձؗʣ αϙʔλʔ Duolingo Diamond Leaguer 💎 #Rust #Ruby #mruby #Containers #eBPF #CRIU #Seccomp #RubyKaigi #CloudNativeDays #Zumba #γϨϯ #FitBoxing2
ࠓճ͢ͷҎ֎ʹ࡞ͬͨͷ •octx wίϚϯυҰൃͰࡶʹ(JU)VCͷBDUJWJUZΛ$47ʹͯ͘͠ΕΔͭ ͦͷ··#JH2VFSZͰϩʔυՄೳɻ wPDUPDSBC SFRXFTU UPLJP
5P$ w࡞Ζ͏ͱ͍ͯ͠Δπʔϧͷ wF#1'ͱ wࠓࠓͰ͖͍ͯΔͷ wMJCCQGSTͷ͍ํ w3VTUͰΑ͔ͬͨ
F#1'
F#1' wFYUFOEFE#FSLMFZ1BLFU'JMUFS w͔Β-JOVYͰಋೖʢݩͷ࣮-JOVYͰ͔Βʣ wMJCQDBQͰΘΕ͍͕ͯͨɺTFDDPNQͦͷଞΧʔωϧػೳͰར༻ w-JOVYΧʔωϧ෦Ͱಈ͘ϓϩάϥϜΛɺϢʔβϥϯυͰهड़ wػೳʹ੍ݶ͕͋ΓɺϑΟϧλϦϯάूܭ͕ओͳׂ wৄࡉʮ͓͍ͯͭ͘͠Α͘ͳΔF#1'ʯͰݕࡧ
F#1'ʹΑΔτϨʔα wF#1'ͷେ͖ͳ༻్ͷҰͭʹɺΧʔωϧ෦Ͱͷؔݺͼग़͠ ੩తͳΠϕϯτͳͲΛτϨʔε͠ɺूܭ͢Δ͜ͱ͕͋Δɻ w #4%4PMBSJTͰ͍͏%5SBDF wCQGUSBDFίϚϯυ #$$ #1'$PNQJMFS$PMMFDUJPO ͷ։ൃ IUUQXXXCSFOEBOHSFHHDPNCMPHCQGQFSGPSNBODFUPPMTCPPLIUNM
#1'$03& wͦΕ·Ͱͷ#1'πʔϧɺͦͷͰ#1'ϓϩάϥϜΛੜɺίϯύΠ ϧ͢ΔͳͲʢॊೈͰ͋Δ͕ʣΦʔόʔϔου͕͋ͬͨɻ wͦͷ݁Ռɺಈ࡞ʹDMBOHόΠφϦ͕ඞཁͩͬͨΓɺಋೖ͕ϋʔυ w͏গ͠खܰʹಈ͔ͤΔΑ͏ɺΧʔωϧͷܕใΛऔಘ͢Δ#5'ɺ $03& $PNQJMF0ODF 3VO&WFSZXIFSF ͳͲͷٕज़͕ग़ͯ͘Δ w$03&ʹͳΔͱϫϯόΠφϦπʔϧ
Χʔωϧͷઃఆ͍͔ͭ͘ ΛΠ ϯετʔϧ͢ΕτϨʔε͕Ͱ͖ΔΑ͏ʹɻ
࣮ͷྫ w#1'ͷϓϩάϥϜΛϏϧυ͢Δ $Ͱॻ͘ඞཁ͕͋ΔɻϓϩάϥϜͷҰ෦ ίϯύΠϧ࣌ͷΦϓγϣϯ
࣮ͷྫ w#1'ϓϩάϥϜͷΦϒδΣΫτ͔ΒTLFMʢϔομʣΛੜ͠ɺ Ϣʔβϥϯυͷ$ϓϩάϥϜ͔Β͑ΔΑ͏ʹ͢Δ CQGUPPMͱ͍͏ίϚϯυͰੜ ϓϩάϥϜͷόΠφϦࣗମ͕ϔομʹຒΊࠐ·ΕΔ
࣮ͷྫ wͦͷϔομΛͬͯόΠφϦπʔϧΛ࡞Δɻ w$ݴޠͰɻ wͪͳΈʹCDDͰͷSFGFSFODF࣮ w IUUQTHJUIVCDPNJPWJTPSCDDUSFFNBTUFSMJCCQGUPPMT
ग़དྷ্͕ͬͨόΠφϦͷΠϝʔδ Ϣʔβϥϯυ Χʔωϧ෦ ϓϩάϥϜʢϫϯόΠφϦʣ #1'ϓϩάϥϜ ϩʔυ σʔλΓऔΓ ϓϩάϥϜ ࣮ߦɾूܭ Φϓγϣϯͷղੳ
ग़ྗ Ճ #1' ࣮ߦ࣌ݕࠪ #1'.BQ 1FSGCV⒎FS ར༻ऀ
͜͜·Ͱͷͬ͘͟Γͨ͠·ͱΊ wF#1'͍ͬͯ͏-JOVYͷτϨʔαͳͲΛ࡞Δศརٕज़͕͋Δ wF#1'πʔϧɺҎલDMBOHͰͦͷͰίϯύΠϧ͍͕ͯͨ͠ɺ ࠷ۙϫϯόΠφϦͰΕΔΑ͏ʹͳͬͨ ཁ৽͍͠Χʔωϧ wͦ͏͢ΔͱίϚϯυϥΠϯπʔϧ෦ؚΊͯϫϯόΠφϦʹ͍ͨ͠ wͦͷSFGFSFODF࣮$ݴޠɻ$ݴޠɻ ʮ1SPEVDUJPOͰ#$$ΑΓMJCCQG #1'$03&Λ͏ํ͕ྑ͍ʯ
IUUQTJUJTLKIBUFOBCMPHDPNFOUSZͳͲࢀর
Ϣʔβϥϯυ$ݴޠͰ͋Δඞཁ wͬͯɺຊʹ͋Δʁ w$ݴޠͷ͠͞ wΦϓγϣϯύʔεҰͭͰจࣈྻͷѻ͍ʹۤ࿑͢Δ wͪΐͬͱͨ͜͠ͱͰෆ҆શͳίʔυ͕ wϝϞϦͷѻ͍͕ϝϞϦ͕ w#1'ϓϩάϥϜํͳ͍ʢWFSJpFS͋Δʣ͚ͲɺϢʔβϥϯυ $ͬͯେม͡Όͳ͍ʁ
ͦ͜Ͱ3VTU
ͭͬͨ͘ͷ
DPOUBJOFSUSBDFST wίϯςφؔͷτϨʔεʹಛԽͨ͠πʔϧ܈Λ࡞Ζ͏ͱ͍ͯ͠Δ w൚༻తͳͷ͢Ͱʹ͋ΔͷͰ w3VTU MJCCQGST w$03&ͳͷͰΧʔωϧ͕ ͔ͳΓ৽͘͠ͳ͍ͱͰ͕͢ IUUQTHJUIVCDPNVE[VSBDPOUBJOFSUSBDFSTɹ
DPOTUBU wίϯςφ୯ҐͰͷ γεςϜίʔϧݺͼग़͠ͷ ౷ܭΛදࣔ͢Δ
VOTIBSFTOPPQ wVOTIBSF ͱ͍͏ɺίϯςφΛ࡞͢Δ্ͰॏཁͳγεςϜίʔϧ ͷݺͼग़͠ͱɺͦͷϑϥάΛτϨʔε͢Δ
DPOCJPHSBQI wίϯςφ୯ҐͰɺCMPDL*0ͷঢ়گΛՄࢹԽ͢Δɻ wάϥϑදࣔͰͬͪΌ͚͗ͨ͢ͷͰɺ͏গ͠ݟ͍͢දࣔΛࠓޙ࣮ ͍ͨ͠ʜ
%FNP wDPOTUBU ࠓࢥ͏ͱQFSGͰͰ͖Δؾ ҰԠύϑΥʔϚϯεʹ༏ΕΔ ͣ ˞ಈըͲ͔͜ʹΞοϓ͠·͢
MJCCQGST
MJCCQGSTͱ wF#1'ͷػೳΛ͏গ͠ΞΫηε͘͢͠ϥοϓͨ͠ϥΠϒϥϦͱ͠ ͯMJCCQGͱ͍͏ͷ͕͋Δɻ w#1'ϓϩάϥϜͷϩʔυ w#1'.BQQFSGCV⒎FSͳͲσʔλͷΓऔΓͷΠϯλϑΣʔε wMJCCQG$ϥΠϒϥϦͳͷͰɺ3VTU͔Β͍ͨ͘͢͠ͷ͕ MJCCQGSTɻ
جຊతͳ͍ํ wCQGϓϩάϥϜΛॻ͘ w cargo libbpf buildͰίϯύΠϧͰ͖Δ w cargo libbpf genͰ3VTUͷTLFMΛੜ
w͋ͱͦͷTLFMΛͬͯ3VTUϓϩάϥϜΛॻ͘ wMJCCQGSTͷػೳʹՃ͑ͯɺTUSVDUPQU DUSMD BOZIPX ͦͷଞී௨ͷ 3VTUͷίϚϯυϥΠϯπʔϧͱͯ͠ϓϩάϥϜΛॻ͚0,
NBJOͷྫ ϏϧμʔΛܦ༝ͯ͠ TLFMΛ։͘ ύϥϝʔλΛೖΕͯ TLFMΛϩʔυɺΞλον F#1'ͷΠϯλϑΣʔε͔Β σʔλΛऔಘɺදࣔ
σʔλදࣔͷྫʢQFSGCV⒎FSʣ wσʔλදࣔ༻ͷίʔϧόοΫؔΛఆٛɻσʔλࣗମ&[u8]Ͱ ͬͯ͘ΔͷͰɺQMBJODSBUFͰมͷඞཁ͕͋Δɻ SFQS D ͳߏମʹ1MBJOΛ࣮
σʔλදࣔͷྫʢ#1'.BQʣ w#1'.BQͱ͍͏σʔλूੵମΛܦ༝ͯ͠ɺΧʔωϧͰूΊͨσʔλ ʹϢʔβϥϯυ͔ΒΞΫηεɺදࣔͰ͖Δɻ ߏମఆٛΛ$3VTUͰ߹ΘͤΔ LFZWBMVFͱʹ&[u8]ͳͷͰɺ͜͜Ͱม
Ϣʔβϥϯυ͔Β#1'.BQΛߋ৽ wඵຖʹΧϯλϦηοτ͢ΔΑ͏ͳϓϩάϥϜΛॻ͚Δɻ ॻ͚Δ͚ͲɺMap::update()͕LFZWBMVFͱʹ&[u8]Λཁٻ͢Δͷ Ͱɺ͜͜ม͔͠VOTBGF plain::as_bytes()ͰͰ͖Δ͚Ͳ
<3VTUϨΠϠϝϦοτ>
θϩίετநԽͷڧ͞ w؆ܿʹએݴతʹॻ͍ͯɺεϐʔυͷ͜ͱΛؾʹ͠ͳ͍͍ͯ͘ɺͱ͍ ͏ͷ͍͍ମݧɻ wΤϥʔΛResult<T, E>Ͱѻ͑Δ͚ͩͰੜ࢈ੑΊͬͪΌߴ͍ wͪΖΜϝϞϦʢجຊతʹʣ҆શ wίϚϯυϥΠϯπʔϧͰTUSVDUPQU͕͍͍ wͱʹ͔͘TUSVDUPQU͕͍͍ʢճʣ
๛ͳDSBUFΛ͑Δ wίΞͰͳ͍෦ͷ࠶ൃ໌ਏ͍ͷͰɺ͍͍ײ͡ͷ࣮ʹ͔ͬΓ͍ͨ wΦϓγϣϯύʔαɺ''*ɺՄࢹԽ wUFYUQMPUT͍͍ wDBSHP͕ͦͦ ͍͍ɺXZDBUT
''*ʹڧ͍ wࠓճͷMJCCQGͷΑ͏ʹɺ$ݴޠϕʔεʢ͔͠-JOVYΧʔωϧͱҰॹʹ ϝϯς͞Ε͍ͯΔʣͷͰ͔͍ϥΠϒϥϦΛૉʹ͑Δͷ͍͍ w3VTU$ͰߏମɺϙΠϯλΛΓͱΓ͍͢͠ͷॿ͔Δ w࣌ʹVOTBGFʹͳΔ͚Ͳ
ࠔͬͯΔ͜ͱͱ͔ࠓޙ
ࠓޙͷ՝ wͱ͍͑VOTBGF͕ଟ͍ؾ͕͢ΔɺͳΜͱ͔ͳΒͳ͍͔ͳ w1MBJODSBUFʹཔ͍ͬͯΔͱ͜ΖΛͬͱ͏·͘Ӆ͢ͱ͍͍ͷ͔ wͱ͍͏͔ɺMJCCQG@ST͕&[u8]Λཁٻ͗͢͠ w''*पΓͷػೳ·ͩௐ࢝Ί͔ͨΓͰɺ$ݴޠΈ͍ͨͳॻ͖ํʹ ͳͬͯ͠·͏ɻཁݚڀɻ
ͦͷଞΓ͍ͨ͜ͱ wπʔϧͱͯ͠͏গ͠খճΓΛྑ͍ͨ͘͠ɻ wΦϓγϣϯ૿ͨ͠Γɺͬͱ৭ʑͳϝτϦοΫΛऔΓ͍ͨ wӳޠͱ͔ͰهࣄΛॻ͍ͨํ͕ड͚ͦ͏ɻॻ͘ɻ w͋ͱɺࣗͰ͋·Γ͑ͯͳ͍ͷͰͬͯΈΔɻ