Skip to content

Commit 208da8b

Browse files
committed
support allocat memory by percentage
Signed-off-by: FingerLeader <[email protected]>
1 parent cb17a9b commit 208da8b

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

main.go

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ import (
44
"flag"
55
"fmt"
66
"os"
7+
"strconv"
78
"syscall"
89
"time"
910

1011
humanize "github.com/dustin/go-humanize"
12+
psutil "github.com/shirou/gopsutil/mem"
1113
)
1214

1315
var (
@@ -56,7 +58,7 @@ func run(length uint64, timeLine time.Duration) {
5658
data, err := syscall.Mmap(-1, 0, int(length), syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_PRIVATE|syscall.MAP_ANONYMOUS)
5759
if err != nil {
5860
// TODO
59-
fmt.Println(err.Error())
61+
fmt.Println(err)
6062
os.Exit(1)
6163
}
6264

@@ -75,10 +77,22 @@ func run(length uint64, timeLine time.Duration) {
7577
}
7678

7779
func main() {
78-
length, err := humanize.ParseBytes(memSize)
79-
if err != nil {
80-
// TODO
81-
fmt.Println(err.Error())
80+
memInfo, _ := psutil.VirtualMemory()
81+
var length uint64
82+
83+
if memSize[len(memSize)-1] != '%' {
84+
var err error
85+
length, err = humanize.ParseBytes(memSize)
86+
if err != nil {
87+
// TODO
88+
fmt.Println(err)
89+
}
90+
} else {
91+
percentage, err := strconv.ParseFloat(memSize[0:len(memSize)-1], 64)
92+
if err != nil {
93+
fmt.Println(err)
94+
}
95+
length = uint64(float64(memInfo.Total) / 100.0 * percentage)
8296
}
8397

8498
timeLine, err := time.ParseDuration(growthTime)
@@ -89,6 +103,7 @@ func main() {
89103
for i := 0; i < workers; i++ {
90104
go run(length, timeLine)
91105
}
106+
92107
for {
93108
time.Sleep(time.Second * 2)
94109
}

0 commit comments

Comments
 (0)