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
Programming RbBCC
Search
KONDO Uchio
July 17, 2020
Technology
0
540
Programming RbBCC
@ Ruby Association Activity Report
https://rubyassociation.doorkeeper.jp/events/107156
KONDO Uchio
July 17, 2020
Tweet
Share
More Decks by KONDO Uchio
See All by KONDO Uchio
大規模レガシーテストを 倒すための CI基盤の作り方 / #CICD2023
udzura
5
2.1k
Ruby x BPF in Action / RubyKaigi 2022
udzura
0
130
Narrative of Ruby & Rust
udzura
0
140
開発者生産性指標の可視化 / pepabo-four-keys
udzura
3
1.4k
Talk of RBS
udzura
0
320
Re: みなさん最近どうですか? / FGN tech meetup in 2021
udzura
0
650
Dockerとやわらかい仮想化 - ProSec-IT/SECKUN 2021 edition -
udzura
2
580
Device access filtering in cgroup v2
udzura
1
670
"Story of Rucy" on RubyKaigi takeout 2021
udzura
0
570
Other Decks in Technology
See All in Technology
家族アルバム みてねにおけるGrafana活用術 / Grafana Meetup Japan Vol.1 LT
isaoshimizu
1
900
How to do well in consulting–Balkan Ruby 2024
irinanazarova
0
120
MapLibreとAmazon Location Service
dayjournal
1
170
「スニダン」開発組織の構造に込めた意図 ~組織作りはパッションや政治ではない!~
rinchsan
4
610
自己改善からチームを動かす! 「セルフエンジニアリングマネージャー」のすゝめ
shoota
6
1k
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
2
140
MixIT 2024 - Pulumi : Gérer son infra avec son langage de programmation préféré
ju_hnny5
1
120
データベース02: データベースの概念
trycycle
0
180
ルーターでプレゼンする
puhitaku
1
3.2k
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
450
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
5
680
Building a RAG-poweredAI chat appwith Python and VS Code
pamelafox
0
140
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
261
12k
Visualization
eitanlees
137
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
660
120k
Happy Clients
brianwarren
92
6.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
228
130k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Scaling GitHub
holman
457
140k
Designing for humans not robots
tammielis
248
25k
Bash Introduction
62gerente
605
210k
Raft: Consensus for Rubyists
vanstee
133
6.3k
Thoughts on Productivity
jonyablonski
59
3.9k
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.2k
Transcript
-JOVYͷτϨʔγϯάٕज़Λ $3VCZ͔Βར༻͢Δڥͷඋ 6DIJP,POEP(.01FQBCP *OD !3VCZ"TTPDJBUJPO"DUJWJUZ3FQPSU 1SPHSBNNJOH3C#$$
େࣄͳ͓Βͤ
3C#$$ຊϦϦʔε 3C#$$ 3VCZͰಈ͖·ͤΜ pEEMF** charܕʹͳ͍ͬͯΔҾʹ ۭจࣈΛ͢ͱɺ0,ɺ4&(7
wۙ౻Ӊஐ࿕,POEP6DIJP w(.0ϖύϘٕज़ج൫νʔϜ wຊۀ%VPMJOHPͱ0WFSDPPLFE wझຯ-JOVYɺ$POUBJOFSTɺγεϓϩ w3VCZ,BJHJ
ΞδΣϯμ wF#1'ͱ3C#$$ͷհʢdNʣ wຊॿʹΑΔՌͷհʢdNʣ w؆୯ͳ3C#$$ͷϥΠϒίʔσΟϯάʢNdʣ w·ͱΊɺࠓޙʢdNʣ
F#1'ͷ
F#1'ͱ w#FSLFMFZ1BDLFU'JMUFS wຊདྷɺύέοτϑΟϧλͷͨΊͷΞϧΰϦζϜɾٕज़ͷ໊લ wʹ-JOVYʹҠ২͞ΕɺMJCQDBQͷதͳͲͰར༻ wঃʑʹTFDDPNQɺΧʔωϧΠϕϯττϨʔεʹར༻͞ΕΔ
Ͱ͖Δ͜ͱ wF#1'ɺಠࣗͷ໋ྩηοτΛ࣋ͭ7.ͱߟ͑ͯྑ͍ɻ wΧʔωϧͷதͰಈ͍ͯɺߴʹ༷ʑͳͷΛϑΟϧλϦϯά͢Δ wύέοτϑΟϧλʔʢUDQEVNQɺUDɺ9%1ʣ wγεςϜίʔϧͷϑΟϧλʔʢTFDDPNQʣ wΧʔωϧΠϕϯτͷϑΟϧλʔʢ#$$CQGUSBDFʣ wͦͷଞʢDHSPVQͷσόΠεΞΫηε੍ޚͰͬͨΓʣ
IUUQXXXCSFOEBOHSFHHDPNCMPHCQGQFSGPSNBODFUPPMTCPPLIUNM
#$$ͱʁ wF#1'ͷϓϩάϥϜΛಈ͔͢ʹɺCQG γεςϜίʔϧʹόΠτ ίʔυΛ͢ܗʹͳΔɻόΠτίʔυΛਓ͕ॻ͘ͷ͍͠ wͦ͜Ͱ#1'$PNQJMFS$PMMFDUJPO w$ϕʔεͷҰछͷ%4-ʴεΫϦϓτݴޠʢ1ZUIPOɺ-VBͷϥΠϒϥϦ ΛಉࠝʣͰF#1'ͷπʔϧΛॻ͘͜ͱ͕Ͱ͖Δ
طଘٕज़ͱͷҧ͍ wطଘͷτϨʔγϯάٕज़͕͍͔ͭ͋͘Δ wTUSBDF HECQUSBDF ϕʔεͷͷɺҰॠࢭΊͯݕࠪ͢ΔΞʔΩςΫνϟ ͳͷͰɺΦʔόʔϔου͕ແࢹͰ͖ͳ͍ϨϕϧʹͳΔ wQFSGجຊతʹूܭ͕ϢʔβϥϯυͳͷͰɺෛՙʹͳΔ͜ͱ͕͋Δ wTZUFNUBQ GUSBDFF#1'ͱಉͷιʔεΛ͍ΠϕϯτΛऔΔɻͨͩɺ
F#1'ͷ࣋ͭόϦσʔγϣϯʹΑΔ҆શੑɺΧʔωϧଆͰͷूܭʹΑΔߴੑ ͳͲϝϦοτ͔
ൺֱਤ 5PPMT 3FMBUFETZTDBMMT 4JEF&⒎FDU /PUF gdb strace ptrace(2) େ ରΛҰ࣌తʹࢭΊͯɺ
ใΛऔಘ͠࠶։͢Δ perf perf_event_open(2) தʙখ جຊతʹूܭ͔Βઌ Ϣʔβϥϯυ systemtap ftrace (kern module) (tracefs) தʙখ F#1'ΑΓݹΊͷΧʔωϧ Ͱར༻Մೳ bpftrace BCC bpf(2) perf_event_open(2) খ WBMJEBUPSɺ#1'NBQͳͲ ར༻ՄɺݴޠόΠϯσΟϯάଟ
طଘٕज़ͱͷҧ͍ wF#1'ΧʔωϧͰϓϩάϥϜΛಈ͔͢Έ wΧʔωϧͰϓϩάϥϜΛಈ͔͢ͱ͍͏ҙຯͰૉʹϞδϡʔϧΛॻ ͘͜ͱͰ͖Δ wΧʔωϧϞδϡʔϧવɺඇৗʹଟ͘ͷ͜ͱ͕Մೳ͕ͩɺόά ةݥͳίʔυ࣮ߦՄೳͰɺΧʔωϧύχοΫͷڪΕ͕͋Δ wF#1'ͷ࣮ߦػߏʹWFSJpFS͕ଘࡏ͠ɺةݥͳίʔυΛݕ͢Δ ʢFHແݶϧʔϓʣ
IUUQXXXCSFOEBOHSFHHDPNCMPHCQGBOFXUZQFPGTPGUXBSFIUNM
F#1'ࣗମͷઆ໌ࢿྉʢࢀߟʣ wIUUQTTQFBLFSEFDLDPNDIJLVXBJUMFBSOFCQG
Ϟνϕʔγϣϯ
#$$ͱʢ࠶ܝʣ wF#1'ͷϓϩάϥϜΛಈ͔͢ʹɺCQG γεςϜίʔϧʹόΠτ ίʔυΛ͢ܗʹͳΔɻόΠτίʔυΛਓ͕ॻ͘ͷ͍͠ wͦ͜Ͱ#1'$PNQJMFS$PMMFDUJPO w$ϕʔεͷҰछͷ%4-ʴεΫϦϓτݴޠʢ1ZUIPOɺ-VBͷϥΠϒϥϦ ΛಉࠝʣͰF#1'ͷπʔϧΛॻ͘͜ͱ͕Ͱ͖Δ
͑ͬ3VCZ
ॻ͔͘͠ͳ͍ ʢ͍ͭͰʹษڧ͠Α͏ʣ
F#1'Y3VCZͷϞνϕʔγϣϯ w3VCZΛಈ͔͢04ͱͯ͠ॏཁͳɺ-JOVYͷਐԽͷԸܙΛɺ3VCZ։ൃऀ ʢݴޠίΞ։ൃऀɺϢʔβ྆ํʣ͕ڗडͰ͖ΔΑ͏ʹ͍ͨ͠ w3C#$$Ͱɺ3VCZίΞ։ൃऀͷڞ௨ݴޠͰ͋Δ$ݴޠͱ3VCZͷ ͚ࣝͩͰෳࡶͳτϨʔγϯά͕Ͱ͖ΔΑ͏ʹͳΔ w%4-ͷΑ͏ͳΈͱΈ߹ΘͤΔ͜ͱͰɺτϨʔγϯάΛͬͱ &OKPZBCMFͳͷʹͰ͖ͳ͍͔
Ռ
ୡͨ͜͠ͱ w#$$ͷ1ZUIPO࣮Λ࣮༻ʹेͳػೳʹ͍ͭͯ3VCZʹҠ২ͨ͠ wαϯϓϧϓϩάϥϜɺԿΑΓνϡʔτϦΞϧΛ࡞ͨ͠ wຊޠ൛νϡʔτϦΞϧؚΉ w3C#$$Λར༻ͨ͠1P$Ϩϕϧͷ࣮ྫɾπʔϧΛ։ൃ
#$$3C#$$ w#$$ جຊతʹ MJCCDDͷ''*
#$$3C#$$ w3VCZඪ४ͷ pEEMFͰ 1ZUIPOͷ DUZQFTΛஔ
pEEMFͷར༻ w3C#$$3VCZͷඪ४ϥΠϒϥϦͷΈͰಈ࡞͢Δ ʢͪΖΜMJCCDDTP͕ೖ͍ͬͯΔલఏͰ͋Δɻϔομෆཁʣ
1ZUIPO൛ͷϦϑΝϨϯεʹ͋Δؔཏ
αϯϓϧ͍͔ͭ͘ɺνϡʔτϦΞϧ
ຊޠνϡʔτϦΞϧ
1ZUIPO൛ͱͷൺֱ wఏग़ͨ͠࠷ऴใࠂΛ͝ཡ͍ͩ͘͞
։ൃͨ͠πʔϧ#1'2- wCQGUSBDFͷ͋ͷݴޠͰͳ͘:".-3VCZͰτϨʔεͰ͖ΔίϚϯυ CQGUSBDF #1'2-3VCZ%4-
ಈը
։ൃͨ͠πʔϧ3BDL' w64%5ʢޙड़ʣΛར༻͠ɺ3BDL.JEEMFXBSFʹ1SPCFΛࠐΈܭଌ ूܭ͢Δαϯϓϧ
3BDL'ͷಈ࡞ݪཧ w੍ݶεϨουʹϦΫΤετͱ͍͏લఏ͕͋Δ
ಈը
3C#$$ͷ ར༻ʹ͋ͨͬͯ
ϙΠϯτ͍͔ͭ͘ wΠϕϯτιʔεͰओཁͳͷͭ͋Δɺ͓ͬͯ͘ wLQSPCFɺUSBDFQPJOUɺVQSPCFɺ64%5 wΠϯετʔϧखॱͳͲ(FUUJOH4UBSUFEͰ6CVOUVָ͕ wMJCCDDͷόʔδϣϯɹਪ0, wιϑτΣΞͷੑ্࣭ɺ୯७ʹ%PDLFSԽͮ͠Β͍ w݁ہΓ͍ͨͷϗετ͕Ͳ͏ͳͬͯΔ͔ͩͬͨΓ͢ΔΜͰ
LQSPCFLSFUQSPCF wΧʔωϧ෦ͷؔΛѻ͏QSPCFɻ wόʔδϣϯͰΠϯλϑΣʔε͕มΘΔ͔͠Εͳ͍ɻ wLQSPCF͕ؔΤϯλʔ࣌ɺLSFUQSPCF͕Ϧλʔϯ࣌ wͲͷΑ͏ͳLQSPCF͕ԿʹΘΕ͍ͯΔ͔αϯϓϧͰษڧ
USBDFQPJOU w3VCZͷ5SBDF1PJOUͱҧ͏֓೦Ͱɺ-JOVYͷQSPCFͷ͜ͱ wΧʔωϧʹ੩తʹΈࠐ·Εɺ໊લҾجຊతʹมΘΒͳ͍ wυΩϡϝϯτ͕ίϝϯτʹ͋Δ߹͋Δ wαϯϓϧͰͷΘΕํΛݟΔ΄͏͕ૣ͍͜ͱ͕ଟ͍ wྫ wTZTDBMMTTZT@FOUFS@ cTZT@FYJU@ γεςϜίʔϧͷ͍͔͚ wSBOEPNVSBOEPN@SFBEVSBOEPNͷಡΈऔΓ
wTDIFETDIFE@QSPDFTT@FYJUϓϩηεͷऴྃͳͲ
VQSPCFVSFUQSPCF wϢʔβϓϩάϥϜͷؔͳͲʹϑοΫͨ͠ΠϕϯτΛɺΧʔωϧͰ ͍͔͚ΒΕΔػೳɻ wجຊతʹFYQPSU͞ΕͯΔγϯϘϧΛQSPCF͢Δ wͪ͜ΒVQSPCF͕ΤϯλʔɺVSFUQSPCF͕Ϧλʔϯ
64%5 wϢʔβϓϩάϥϜͷҙͷՕॴʹQSPCFΛຒΊࠐΉػೳɻ wͲ͜ʹຒΊࠐ·Ε͍ͯΔ͔&-'ϔομͰ֬ೝͰ͖Δɻ wτϨʔε༗ޮ࣌ʹॳΊͯτϨʔε໋ྩ͕ಈ࡞͠ɺීஈOPQ໋ྩʹ ͳ͍ͬͯΔɻ͕ͨͬͯ͠ແޮ࣌Φʔόϔου͕ͳ͍ɻ
3VCZͷ64%5 w--enable-dtraceΦϓγϣϯΛ༗ޮʹͯ͠Ϗϧυ͢Ε༗ޮʹ wSCFOWͳΒɺ36#:@$0/'*(63&@0154ڥมͰࢦఆ wԿ͕ຒ·͍ͬͯΔ͔%5SBDFଆͷυΩϡϝϯτΛࢀর wTFFʮ3VCZͷ%5SBDFͷհʯ w IUUQTNBHB[JOFSVCZJTUOFUBSUJDMFT4QFDJBMEUSBDFIUNM w 8JLJIUUQTCVHTSVCZMBOHPSHQSPKFDUTSVCZXJLJ%5SBDF1SPCFT
3VCZͷ64%5
ϥΠϒͰͷ πʔϧ࡞σϞ
Ͳ͏ʂ VE[VSBͰ͢
ࠓޙͷల ʢ͕࣌ؒ͋Εʣ
3FE%BUB5PPMT࿈ܞ w۩ମతʹɺ$IBSUZͷσʔλߏʹɺ3C#$$ʹ͓͚Δ#1'NBQΛ දݱͨ͠ΫϥεΛରԠ͍ͤͨ͞ w$IBSUZ5BCMF"EBQUFST#$$తͳΞμϓλΛ࣮͢ΔͱΑ͍ w$IBSUZͷࢿ࢈Λͦͷ··ͬͯʢFHVOJDPEF@QMPUSCʣ τϨʔε݁ՌͷՄࢹԽ͕Ͱ͖Δ
ωοτϫʔΫτϨʔεपล wຊՈͷFYBNQMFTOFUXPSLJOHԼʹ͋ΔΑ͏ͳαϯϓϧͷҠ২ wগ͚ͩ͠։͍࢝ͯ͠Δ w9%1ྲྀߦͬͯΔͷͰ wطͷQZSPVUF૬ͷHFN͕3VCZʹͳ͍ͷͰɺҰ෦ͷαϯ ϓϧ؆୯ͳҠ২ͱ͍͏Θ͚ʹ͍͔ͣ·͍͠ɻ wOFUMJOLTPDLFUͱ͓͠ΌΓ͢ΔHFN͕ཉ͍͠ɻ
ͬͱকདྷVQTUSFBNͷߩݙ wকདྷJPWJTPSϓϩδΣΫτʹدଃ͠ɺ #$$։ൃίΞͱาௐΛ߹ΘͤΔͳͲ͍ͨ͠ wͦͷલʹ࣭Λ্͍͛ͨʢݴ͍༁ʣ wͲ͏͍͏खଓ͖ΛͱΕ͍͍ͷͩΖ͏ʁ w͜ͷࢿྉΛݟͨํͰॿݴ͕͋Εͱࢥ͍·͢
ँࣙ
ँࣙ wϝϯλʔͷాߞҰ͞Μ w͘͞ΒΠϯλʔωοτͷদຊ྄հ͞Μɺभେֶใج൫ݚڀ։ൃ ηϯλʔͷౢ٢ོઌੜɺּݪٛߊઌੜ wಛʹɺ#1'2-ౢ٢ઌੜͷΞυόΠεΛԼෑ͖ʹ͍ͯ͠·͢
&OKPZ 5SBDJOH