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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
330
Narrative of Ruby & Rust
udzura
0
280
開発者生産性指標の可視化 / pepabo-four-keys
udzura
3
1.9k
Talk of RBS
udzura
0
520
Re: みなさん最近どうですか? / FGN tech meetup in 2021
udzura
0
870
Dockerとやわらかい仮想化 - ProSec-IT/SECKUN 2021 edition -
udzura
2
830
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
生成AIで高い生産性を求められて、 悩み、乗り越えた話
mot_techtalk
2
150
Essential architectural thinking (revised edition)
ufried
0
110
オンラインゲームのシステム全体像 - コロプラ 2026年度 新卒研修
colopl
0
1.1k
パッチ更新でterraform initが落ちた日
grimoh
1
110
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
140
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
570
AI時代のAPI開発を加速する品質ガードレール / API Quality Guardrails in the AI Era
yokawasa
0
170
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
420
継続的なAIコスト最適化
bgpat
1
280
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
330
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
360
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
160
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
560
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
560
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
450
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
260
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Building an army of robots
kneath
307
47k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
350
We Are The Robots
honzajavorek
0
390
The Limits of Empathy - UXLibs8
cassininazir
2
710
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Faster Mobile Websites
deanohume
310
32k
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͋ͱɺࣗͰ͋·Γ͑ͯͳ͍ͷͰͬͯΈΔɻ