@@ -2,6 +2,7 @@ package main
2
2
3
3
import (
4
4
"flag"
5
+ "fmt"
5
6
"os"
6
7
"syscall"
7
8
"time"
@@ -12,11 +13,13 @@ import (
12
13
var (
13
14
memSize string
14
15
growthTime string
16
+ workers int
15
17
)
16
18
17
19
func init () {
18
20
flag .StringVar (& memSize , "size" , "0KB" , "" )
19
21
flag .StringVar (& growthTime , "time" , "0s" , "" )
22
+ flag .IntVar (& workers , "workers" , 1 , "" )
20
23
flag .Parse ()
21
24
}
22
25
@@ -49,22 +52,12 @@ func linearGrow(data []byte, length uint64, timeLine time.Duration) {
49
52
50
53
}
51
54
52
- func main () {
53
- length , err := humanize .ParseBytes (memSize )
54
- if err != nil {
55
- // TODO
56
- print (err )
57
- }
58
-
59
- timeLine , err := time .ParseDuration (growthTime )
60
- if err != nil {
61
- // TODO
62
- }
63
-
55
+ func run (length uint64 , timeLine time.Duration ) {
64
56
data , err := syscall .Mmap (- 1 , 0 , int (length ), syscall .PROT_READ | syscall .PROT_WRITE , syscall .MAP_PRIVATE | syscall .MAP_ANONYMOUS )
65
57
if err != nil {
66
58
// TODO
67
- print (err )
59
+ fmt .Println (err .Error ())
60
+ os .Exit (1 )
68
61
}
69
62
70
63
if timeLine > time .Nanosecond {
@@ -80,3 +73,23 @@ func main() {
80
73
time .Sleep (time .Second * 2 )
81
74
}
82
75
}
76
+
77
+ func main () {
78
+ length , err := humanize .ParseBytes (memSize )
79
+ if err != nil {
80
+ // TODO
81
+ fmt .Println (err .Error ())
82
+ }
83
+
84
+ timeLine , err := time .ParseDuration (growthTime )
85
+ if err != nil {
86
+ // TODO
87
+ }
88
+
89
+ for i := 0 ; i < workers ; i ++ {
90
+ go run (length , timeLine )
91
+ }
92
+ for {
93
+ time .Sleep (time .Second * 2 )
94
+ }
95
+ }
0 commit comments