Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linuxコマンドでボトルネックを調べる
Search
Kazuhiko Yamashita
March 20, 2018
Technology
17
9.1k
Linuxコマンドでボトルネックを調べる
俺の話を聞け!!LT大会 #8でトークした資料です
Kazuhiko Yamashita
March 20, 2018
Tweet
Share
More Decks by Kazuhiko Yamashita
See All by Kazuhiko Yamashita
Stay Hacker 〜九州で生まれ、Perlに出会い、コミュニティで育つ〜
pyama86
2
3k
Managing Database Migrations in Go Backend Systems
pyama86
0
130
新しい職場の CI が 20 分かかっていたらあなたならどうする?
pyama86
2
1.4k
事業を差別化する技術を生み出す技術
pyama86
4
1.8k
Re:Define 可用性を支える モニタリング、パフォーマンス最適化、そしてセキュリティ
pyama86
9
9.5k
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.8k
Tuning GraphQL on Rails
pyama86
2
2.3k
ttlcacheのここがスゴい
pyama86
1
210
クラウドサービスの 利用コストを削減する技術 - 円安の真南風を感じて -
pyama86
3
680
Other Decks in Technology
See All in Technology
『ソフトウェア』で『リアル』を動かす:クレーンゲームからデータ基盤までの統一アーキテクチャ / アーキテクチャConference 2025
genda
0
2k
事業部のプロジェクト進行と開発チームの改善の “時間軸" のすり合わせ
konifar
6
1.2k
type-challenges を全問解いたのでエッセンスと推し問題を紹介してみる
kworkdev
PRO
0
140
レガシーシステム刷新における TypeSpec スキーマ駆動開発のすゝめ
tsukuha
4
870
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
15k
なぜフロントエンド技術を追うのか?なぜカンファレンスに参加するのか?
sakito
3
470
AIで加速する次世代のBill Oneアーキテクチャ〜成長の先にある軌道修正〜
sansantech
PRO
1
150
私も懇親会は苦手でした ~苦手だからこそ懇親会を楽しむ方法~ / 20251127 Masaki Okuda
shift_evolve
PRO
4
380
Symfony AI in Action
el_stoffel
2
230
生成AIシステムとAIエージェントに関する性能や安全性の評価
shibuiwilliam
2
270
Introduction to Bill One Development Engineer
sansan33
PRO
0
320
.NET 10のEntity Framework Coreの新機能
htkym
0
140
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
Rails Girls Zürich Keynote
gr2m
95
14k
Faster Mobile Websites
deanohume
310
31k
Statistics for Hackers
jakevdp
799
230k
Git: the NoSQL Database
bkeepers
PRO
432
66k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Become a Pro
speakerdeck
PRO
30
5.6k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
How to Ace a Technical Interview
jacobian
280
24k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
ʙय़ͩʂՖคͩʂ-5େձͩ͊͊͊͋͋͋͋ʂʂʂ̍ʙ !QZBNB(.01FQBCP *OD ԶͷΛฉ͚ʂʂ-5େձ -JOVYίϚϯυͰϘτϧωοΫ ΛௐΔ
ϗεςΟϯάࣄۀ෦νʔϑςΫχΧϧϦʔυ ࢁԼ!QZBNB
ϖύϘԬ
αʔόαΠυɺϑϩϯτΤϯυɺ ΠϯϑϥΤϯδχΞશһདྷͯ͘Εʂʂʂʂ̍ ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU
Ϙτϧωο Ϋௐࠪ
ʮͳΜ͔Θ͔ΒΜ͚Ͳɺ Կ͔͕ͯ͘ ॲཧ͕ॏ͍ʯ
಄ѱͦ͏
ύϑΥʔϚϯεղੳʹ ͍͔ͭ͘ͷखஈ͕͋Δ
ͳΜ͔͍͍ͩͨͲͷձࣾʹ͍Δ͍͢͝ਓʹฉ͘ w͍͢͝ਓʹฉ͘ͱɺ͍͍ͩͨղܾͯ͘͠ΕΔ w͍͢͝ਓ͍͢͝ͷͰɺͦͷͰΘ͔Βͳͯ͘ɺ͍͍ͩͨ࣍ͷʹ ʮࡢͷ͋ΕΘ͔ͬͨΑʂʂʂʯͱ͔ௐ͖ͯͯ͘ΕΔ w͍͢͝ਓʹฉ͘ͱɺ͍͢͝ਓ͕ؤுΔ͚ͩͰɺ͕ࣗؤுΒͳ͍͔Β ͕ࣗ͠ͳ͍
ϓϩϑΝΠϦϯά wIUUQTHJUIVCDPNUNNTUBDLQSPG ݴޠ໊ϓϩϑΝΠϥ<ݕࡧ>
-JOVYͷίϚϯυͰௐΔ wHEC5IF(/6%FCVHHFS wTUSBDF5SBDFTZTUFNDBMMTBOETJHOBMT wQFSG1FSGPSNBODFBOBMZTJTUPPMTGPS-JOVY wWBMHSJOEBTVJUFPGUPPMTGPSEFCVHHJOHBOEQSPpMJOHQSPHSBNT
ࣄྫ
NSVCZͷ"1*ΞΫηε͕ NSVCZ DMJFOU "1*4FSWFS SFTPVSDFFYBNQMF NSVCZͷ$MJFOU͔Β͋Δ"1*Λ࣮ߦͯ͠ .#ͷϨεϙϯεΛऔಘ͢Δ߹ +40/
ࣄྫ ॠؒతʹ(CZUF͘Β͍ ϝϞϦ͏
WBMHSJOEͰϝϞϦͷΞϩέʔγϣϯΛݟΔ # valgrind curl http://localhost/resource/example > /dev/null … ==18619== HEAP
SUMMARY: ==18619== in use at exit: 0 bytes in 0 blocks ==18619== total heap usage: 1,863 allocs, 1,863 frees, 211,125 bytes allocated # valgrind /home/pyama/mruby test.rb … ==12811== HEAP SUMMARY: ==12811== in use at exit: 0 bytes in 0 blocks ==12811== total heap usage: 51,721 allocs, 51,721 frees, 12,028,345,116 bytes allocated
ʗ ?P? ʘ(
TUSBDFͰγεςϜίʔϧͷ౷ܭΛऔΔ # strace -fc /home/pyama/mruby test.rb % time seconds usecs/call
calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 73.00 0.006317 2 3361 munmap 23.27 0.002014 11 183 brk 2.62 0.000227 0 1734 read 1.11 0.000096 0 3380 mmap 0.00 0.000000 0 3 write 0.00 0.000000 0 16 open 0.00 0.000000 0 23 close NVONBQ͕ࢧత IUUQTMJOVYKNPTEOKQIUNM-%1@NBOQBHFTNBONNBQIUNM
QFSGΛར༻ͯ͠ίʔϧάϥϑΛऔಘ͢Δ IUUQNSVCZPSHEPDTBQJIFBEFSTNSVCZ@'TUSJOHIIUNMNSC@TUS@QMVTGVODUJPO # perf record --call-graph dwarf -- /home/pyama/mruby test.rb
# perf report -g -G —stdio 94.35% 0.03% mruby mruby [.] mrb_str_plus | ---mrb_str_plus | --20.06%-- mrb_vm_exec mrb_vm_run … NSC@TUS@QMVT͕ࢧత
ใ͔ΒԾઆΛཱͯΔ wॲཧ)551ϦΫΤετͰϨεϙϯεϘσΟαΠζ͕େ͖͍ wϝϞϦ(#ͬͯΔΦϫλ wNVONBQ͕ࢧతͰճଟ͍͜ͱ͔ΒɺϝϞϦͷ֬อɺղ์͕ଟ ͍ͷͰͳ͍͔ʁ wNSC@TUS@QMVT͕ࢧతͰ͋Δ͜ͱ͔Βɺจࣈྻ݁߹͕ଟ͍͜ͱ͕ݪ ҼͬΆ͍ͳʁ NSC@TUS@QMVTSVCZFbDlBz lCz`
ΧΫΧΫ γΧδΧ
ݪҼ)551ϦΫΤετͷόοϑΝαΠζ IUUQTHJUIVCDPNNBUTVNPUPSZNSVCZTJNQMFIUUQQVMM NSVCZ DMJFOU "1*4FSWFS SFTPVSDFFYBNQMF +40/ ιέοτ͔Β+40/Λड͚औΔࡍͷόοϑΝαΠζ͕CZUFͰ͋ͬͨ͜ͱ͔Βɺ ಡࠐͷϧʔϓճ͕ଟ͘ͳ͍ͬͯͨɻόοϑΝͷαΠζΛCZUFมߋ͢Δ͜ͱͰ ݁Ռͱͯ͠ϧʔϓճΛݮΒͯ͠จࣈྻ݁߹ͷճΛݮΒͨ͠
NSVCZTJNQMFIUUQ while (t = socket.read(1024)) if block_given? yield t next
end ɹ #όοϑΝ͕গͳ͍ͱϧʔϓճ͕૿͑ͯɺ݁߹ճ͕૿͑ͯແବʹϝϞϦ֬อ response_text += t end ͔͠ɺ($͕Δ·Ͱ։์͞Εͳ͍
͏Ұา ౿ΈࠐΉ
NSC@TUS@QMVT NSVCZͰจࣈྻ݁߹ͷࡍʹ݁߹݁Ռจࣈྻͷ ϝϞϦΛ֬อ͢Δ
NSVCZTJNQMFIUUQ while (t = socket.read(1024)) if block_given? yield t next
end response_text << t end ͞ΒʹDPODBUʹ͢Δ͜ͱͰɺແବͳྖҬ֬อΛΊΔ
NSC@TUS@QMVT74NSC@TUS@DBU TUSJOHlBCz TUSJOHlBz TUSJOHlCz TUSJOHlBz TUSJOHlCz TUSJOHlBz TUSJOHlCz
TUSJOHlBCz
IUUQTUFOTOBQPODPNBSDIJWFT
·ͱΊ wϓϩϑΝΠϥίϚϯυΛར༻ͯ͠ใΛूΊΑ͏ wूΊͨใ͔ΒԾઆΛཱͯΑ͏ wԾઆΛݕূ͠Α͏ wσόοάίʔυͰ͋Ε͜Εࢼ͢ wਂ͘ίʔυΛಡΉɺ࣮ʹഭΔ
5IBOLZPV ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU