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コマンドでボトルネックを調べる
Search
Kazuhiko Yamashita
March 20, 2018
Technology
17
9k
Linuxコマンドでボトルネックを調べる
俺の話を聞け!!LT大会 #8でトークした資料です
Kazuhiko Yamashita
March 20, 2018
Tweet
Share
More Decks by Kazuhiko Yamashita
See All by Kazuhiko Yamashita
新しい職場の CI が 20 分かかっていたらあなたならどうする?
pyama86
1
1.3k
事業を差別化する技術を生み出す技術
pyama86
4
1.7k
Re:Define 可用性を支える モニタリング、パフォーマンス最適化、そしてセキュリティ
pyama86
9
8.3k
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.7k
Tuning GraphQL on Rails
pyama86
2
2k
ttlcacheのここがスゴい
pyama86
1
160
クラウドサービスの 利用コストを削減する技術 - 円安の真南風を感じて -
pyama86
3
620
実践ARMアーキテクチャ移行
pyama86
2
2.5k
リモートワーク時代の守護神 PHP開発者のためのセキュリティ強化術
pyama86
3
1.3k
Other Decks in Technology
See All in Technology
面倒な作業はAIにおまかせ。Flutter開発をスマートに効率化
ruideengineer
0
250
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
960
AWS認定を取る中で感じたこと
siromi
1
190
React開発にStorybookとCopilotを導入して、爆速でUIを編集・確認する方法
yu_kod
1
270
fukabori.fm 出張版: 売上高617億円と高稼働率を陰で支えた社内ツール開発のあれこれ話 / 20250704 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
2
7.6k
高速なプロダクト開発を実現、創業期から掲げるエンタープライズアーキテクチャ
kawauso
2
9.2k
Core Audio tapを使ったリアルタイム音声処理のお話
yuta0306
0
190
Lazy application authentication with Tailscale
bluehatbrit
0
210
american airlines®️ USA Contact Numbers: Complete 2025 Support Guide
supportflight
1
110
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
0
110
NewSQLや分散データベースを支えるRaftの仕組み - 仕組みを理解して知る得意不得意
hacomono
PRO
2
130
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Unsuck your backbone
ammeep
671
58k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Side Projects
sachag
455
42k
Bash Introduction
62gerente
613
210k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Facilitating Awesome Meetings
lara
54
6.4k
RailsConf 2023
tenderlove
30
1.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
690
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