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
$ go tool traceを使ってみよう/ Let's use go tool trace
Search
nametake
December 11, 2017
Technology
2
2.9k
$ go tool traceを使ってみよう/ Let's use go tool trace
golang.tokyo #11(
https://techplay.jp/event/641403
)での発表資料です。
nametake
December 11, 2017
Tweet
Share
More Decks by nametake
See All by nametake
実例マッピングで要件のレビューサイクルを回してる話 / Example Mapping Review Cycle
nametake
1
1.5k
アルプ T-QAオンボーディング資料(2022年9月版) / Alp T-QA onboarding 2022-09
nametake
0
1.6k
定式化と自動化に取り組みますという話 / Work on formulation and automation
nametake
0
1.1k
QAエンジニアが実例マッピングを2ヶ月運用した話 / Example Mapping for 2 months
nametake
3
7.1k
1人目QAエンジニアよもやま話 / QA Test Talk Vol.1
nametake
4
740
アルプでのAgile Testing / Alp Agile Testing
nametake
1
2.5k
CFD-Editorというツールを作ってみた話 / Made CFD-Editor
nametake
1
410
スタートアップで1人目QAエンジニアになった話 / Startup first QA
nametake
3
1.4k
テスト技法の話 / Testing techniques
nametake
5
4.9k
Other Decks in Technology
See All in Technology
Java 25に至る道
skrb
3
130
製造業から学んだ「本質を守り現場に合わせるアジャイル実践」
kamitokusari
0
160
SES向け、生成AI時代におけるエンジニアリングとセキュリティ
longbowxxx
0
290
松尾研LLM講座2025 応用編Day3「軽量化」 講義資料
aratako
15
4.8k
_第4回__AIxIoTビジネス共創ラボ紹介資料_20251203.pdf
iotcomjpadmin
0
170
歴史から学ぶ、Goのメモリ管理基礎
logica0419
9
1.7k
ソフトウェアエンジニアとAIエンジニアの役割分担についてのある事例
kworkdev
PRO
1
360
AI: The stuff that nobody shows you
jnunemaker
PRO
1
130
AWS re:Invent 2025 を振り返る
kazzpapa3
2
110
「アウトプット脳からユーザー価値脳へ」がそんなに簡単にできたら苦労しない #RSGT2026
aki_iinuma
6
2.8k
AWS re:Inventre:cap ~AmazonNova 2 Omniのワークショップを体験してきた~
nrinetcom
PRO
0
120
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.5k
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
35
WCS-LA-2024
lcolladotor
0
400
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
Building the Perfect Custom Keyboard
takai
2
670
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
140
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
110
Done Done
chrislema
186
16k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
260
First, design no harm
axbom
PRO
1
1.1k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
220
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
Transcript
$ go tool trace ͬͯΈΑ͏ גࣜձࣾωΫετΧϨϯγʔ @nametake
ࣗݾհ
@nametake
Goྺ1ͪΐͬͱ
ύϑΥʔϚϯεܭଌ
runtime/pprof net/http/pprof
package main import ( "log" "net/http" _ "net/http/pprof" "runtime" )
func main() { runtime.SetBlockProfileRate(1) log.Println( http.ListenAndServe("0.0.0.0:6060", nil), ) }
localhost:6060/debug/pprof/
None
None
None
None
None
$ go tool trace
None
͍ํઆ໌
runtime/trace
package main import ( "os" "runtime/trace" ) func main() {
f, err := os.Create("trace.out") if err != nil { panic(err) } defer f.Close() err = trace.Start(f) if err != nil { panic(err) } defer trace.Stop() }
$ go tool trace trace.out
ϑΝΠϧॻ͖ࠐΈ
f, err := os.Create("test.txt") if err != nil { panic(err)
} defer f.Close() for i := 0; i < 100; i++ { fmt.Fprintf(f, "line number: %d\n", i) }
None
ॲཧ࣌ؒ
ॲཧ࣌ؒ
ϓϩάϥϜ͕֬อͨ͠ώʔϓྖҬ
goroutineͷͱ࣮ߦ࣌ؒ
OSͷThreadͷͱ࣮ߦ࣌ؒ
Proc(CPU)Ͱॲཧ͍ͯ͠Δ༰
ͳΜ͔৭ʑͳใ
Goݴޠ ׂΓͱؾܰʹ syscallΛݺͿ
None
syscallͷݺͼग़͠
ͱ͍ͯ͋͠
syscallΛݺΜͰΔ
f, err := os.Create("test.txt") if err != nil { panic(err)
} defer f.Close() for i := 0; i < 100; i++ { fmt.Fprintf(f, "line number: %d\n", i) }
f, err := os.Create("test.txt") if err != nil { panic(err)
} defer f.Close() for i := 0; i < 100; i++ { fmt.Fprintf(f, "line number: %d\n", i) }
bufio
f, err := os.Create("test.txt") if err != nil { panic(err)
} defer f.Close() w := bufio.NewWriter(f) defer w.Flush() for i := 0; i < 100; i++ { fmt.Fprintf(w, "line number: %d\n", i) }
None
None
None
None
None
GUIͰ֬ೝग़དྷΔʂ
GC
None
GC
None
GCຖʹ֬อ͍ͯ͠͠Δ
n := 400000 list := []int{} for i := 0;
i < n; i++ { list = append(list, i) }
n := 400000 list := []int{} for i := 0;
i < n; i++ { list = append(list, i) }
n := 400000 list := make([]int, n) for i :=
0; i < n; i++ { list[i] = i }
None
GC͕ൃੜ͍ͯ͠ͳ͍
࠷ॳʹΨοπϦྖҬ֬อ
6ms → 2ms
ฒྻԽ
https://making.pusher.com/go-tool-trace/ Connʹॻ͖ࠐΈ
https://making.pusher.com/go-tool-trace/ ͜ͷ෦Ͱॻ͖ࠐΜͰ͍Δ
https://making.pusher.com/go-tool-trace/
https://making.pusher.com/go-tool-trace/ ଞͷϓϩηεͬͯͳ͍
https://making.pusher.com/go-tool-trace/
https://making.pusher.com/go-tool-trace/
https://making.pusher.com/go-tool-trace/ CPUΛແବͳ͘ར༻
͍Ζ͍ΖΘ͔Δ
શ෦ͷ͕ Θ͔ΔΘ͚Ͱͳ͍
CPUͷ༻ pprofͱ͔Λ ݟͨ΄͏͕͍͍
ϓϩάϥϜͷ ྲྀΕΛΔ
ͱΓ͋͑ͣ ݟͯΈΔ͚ͩͰ ͍͍͔
go traceͷ͜ͱɺ ࣌ʑͰ͍͍͔Β……ɹ ࢥ͍ग़͍ͯͩ͘͠͞