Last active
August 29, 2018 18:37
-
-
Save Dieterbe/bea4524ebcba54fddec1b4d723688b7e to your computer and use it in GitHub Desktop.
mem heap/sys tester
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"os" | |
"runtime" | |
"time" | |
"github.com/prometheus/procfs" | |
) | |
type data struct { | |
d []byte | |
prev *data | |
} | |
func newData(prev *data, size int) *data { | |
d := data{ | |
d: make([]byte, size), | |
prev: prev, | |
} | |
for i := range d.d { | |
d.d[i] = byte(i % 255) | |
} | |
return &d | |
} | |
func main() { | |
Mi := uint64(1024 * 1024) | |
go func() { | |
pid := os.Getpid() | |
p, err := procfs.NewProc(pid) | |
if err != nil { | |
panic(err) | |
} | |
m := &runtime.MemStats{} | |
tick := time.NewTicker(10 * time.Second) | |
fmt.Println(time.Now(), "in MiB: HeapAlloc Sys HeapSys HeapReleased HeapIdle VSZ RSS") | |
for range tick.C { | |
stat, err := p.NewStat() | |
if err != nil { | |
panic(err) | |
} | |
vsz := uint64(stat.VirtualMemory()) | |
rss := uint64(stat.ResidentMemory()) | |
runtime.ReadMemStats(m) | |
fmt.Printf("%-60s%13d%8d%8d%13d%9d%8d%8d\n", time.Now(), m.HeapAlloc/Mi, m.Sys/Mi, m.HeapSys/Mi, m.HeapReleased/Mi, m.HeapIdle/Mi, vsz/Mi, rss/Mi) | |
} | |
}() | |
fmt.Println("starting to allocate 1GiB.. this will take about a minute") | |
first := newData(nil, int(Mi)) | |
prev := first | |
for i := 0; i < 1023; i++ { | |
prev = newData(prev, int(Mi)) | |
time.Sleep(60 * time.Millisecond) | |
} | |
fmt.Println(time.Now(), "done allocating") | |
time.Sleep(time.Duration(30) * time.Second) | |
fmt.Println(time.Now(), "freeing") | |
first = nil | |
prev = nil | |
fmt.Println(time.Now(), "runtime.GC()") | |
runtime.GC() // can be uncommented if desired if you're okay waiting for a "regular" GC cycle | |
// keep program alive | |
time.Sleep(time.Duration(10) * time.Minute) | |
} |
Author
Dieterbe
commented
Aug 27, 2018
•
while sleep 10; do echo "`date` `ps aux | grep 'tmp.dieter.go-build' | grep -v grep`"; done
Wed Aug 29 20:14:32 CEST 2018 dieter 16343 8.6 0.3 1020864 129988 pts/12 Sl+ 20:14 0:00 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:14:42 CEST 2018 dieter 16343 8.2 0.8 1257628 292608 pts/12 Sl+ 20:14 0:01 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:14:52 CEST 2018 dieter 16343 8.0 1.3 1421464 456280 pts/12 Sl+ 20:14 0:02 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:15:02 CEST 2018 dieter 16343 7.7 1.8 1586356 621008 pts/12 Sl+ 20:14 0:02 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:15:12 CEST 2018 dieter 16343 7.6 2.3 1750192 784688 pts/12 Sl+ 20:14 0:03 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:15:22 CEST 2018 dieter 16343 7.6 2.8 1914028 948628 pts/12 Sl+ 20:14 0:04 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:15:32 CEST 2018 dieter 16343 7.5 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:15:42 CEST 2018 dieter 16343 6.5 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:15:52 CEST 2018 dieter 16343 5.8 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:16:02 CEST 2018 dieter 16343 5.2 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
lWed Aug 29 20:16:12 CEST 2018 dieter 16343 4.7 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:16:22 CEST 2018 dieter 16343 4.3 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:16:32 CEST 2018 dieter 16343 4.0 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:16:42 CEST 2018 dieter 16343 3.7 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:16:52 CEST 2018 dieter 16343 3.4 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:17:02 CEST 2018 dieter 16343 3.2 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:17:12 CEST 2018 dieter 16343 3.0 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:17:22 CEST 2018 dieter 16343 2.8 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:17:32 CEST 2018 dieter 16343 2.7 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:17:42 CEST 2018 dieter 16343 2.5 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:17:52 CEST 2018 dieter 16343 2.4 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:18:02 CEST 2018 dieter 16343 2.3 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:18:13 CEST 2018 dieter 16343 2.2 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:18:23 CEST 2018 dieter 16343 2.1 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:18:33 CEST 2018 dieter 16343 2.0 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:18:43 CEST 2018 dieter 16343 1.9 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:18:53 CEST 2018 dieter 16343 1.9 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:19:03 CEST 2018 dieter 16343 1.8 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:19:13 CEST 2018 dieter 16343 1.7 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:19:23 CEST 2018 dieter 16343 1.7 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:19:33 CEST 2018 dieter 16343 1.6 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:19:43 CEST 2018 dieter 16343 1.6 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:19:53 CEST 2018 dieter 16343 1.5 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:20:03 CEST 2018 dieter 16343 1.5 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:20:13 CEST 2018 dieter 16343 1.4 3.3 2050380 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:20:23 CEST 2018 dieter 16343 1.4 3.3 2124112 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:20:33 CEST 2018 dieter 16343 1.3 3.3 2124112 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:20:43 CEST 2018 dieter 16343 1.3 3.3 2124112 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:20:53 CEST 2018 dieter 16343 1.3 3.3 2124112 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:21:03 CEST 2018 dieter 16343 1.2 3.3 2124112 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:21:13 CEST 2018 dieter 16343 1.2 3.3 2124112 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:21:23 CEST 2018 dieter 16343 1.2 3.3 2124112 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:21:33 CEST 2018 dieter 16343 1.1 3.3 2124112 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:21:43 CEST 2018 dieter 16343 1.1 3.3 2124112 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:21:53 CEST 2018 dieter 16343 1.1 3.3 2124112 1084852 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:22:03 CEST 2018 dieter 16343 1.1 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:22:13 CEST 2018 dieter 16343 1.1 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:22:23 CEST 2018 dieter 16343 1.0 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:22:33 CEST 2018 dieter 16343 1.0 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:22:43 CEST 2018 dieter 16343 1.0 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:22:53 CEST 2018 dieter 16343 1.0 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:23:03 CEST 2018 dieter 16343 1.0 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:23:13 CEST 2018 dieter 16343 0.9 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:23:23 CEST 2018 dieter 16343 0.9 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:23:33 CEST 2018 dieter 16343 0.9 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:23:43 CEST 2018 dieter 16343 0.9 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:23:53 CEST 2018 dieter 16343 0.9 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:24:03 CEST 2018 dieter 16343 0.8 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:24:13 CEST 2018 dieter 16343 0.8 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:24:23 CEST 2018 dieter 16343 0.8 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:24:33 CEST 2018 dieter 16343 0.8 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:24:43 CEST 2018 dieter 16343 0.8 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:24:53 CEST 2018 dieter 16343 0.8 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:25:03 CEST 2018 dieter 16343 0.8 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:25:13 CEST 2018 dieter 16343 0.7 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:25:24 CEST 2018 dieter 16343 0.7 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:25:34 CEST 2018 dieter 16343 0.7 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:25:44 CEST 2018 dieter 16343 0.7 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Wed Aug 29 20:25:54 CEST 2018 dieter 16343 0.7 0.1 2124112 37208 pts/12 Sl+ 20:14 0:05 /tmp/dieter/go-build480692448/b001/exe/main
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment