perfmonger 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/NEWS +11 -0
- data/Rakefile +1 -0
- data/core/Makefile +43 -15
- data/core/build.sh +43 -7
- data/core/perfmonger-player.go +1 -2
- data/core/perfmonger-recorder.go +54 -0
- data/core/perfmonger-summarizer.go +18 -5
- data/core/subsystem/usage.go +11 -0
- data/lib/perfmonger/command/plot.rb +10 -0
- data/lib/perfmonger/command/record.rb +13 -3
- data/lib/perfmonger/command/record_option.rb +12 -0
- data/lib/perfmonger/command/summary.rb +10 -0
- data/lib/perfmonger/version.rb +1 -1
- data/perfmonger.gemspec +4 -2
- metadata +5 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0b02aaea69043dcf1560fd042e2af5f571c88e06
|
|
4
|
+
data.tar.gz: 07081ebc86aa30f921b360cc0c2d82fd958d3c7f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3d4c1d36d69a8d010574985ef3ca8e1760c715b9eb079d87cc4eab5de9adf6a05373a01d351e5286e8000f7fe90148e2af7ac3036abc9eab3bc9a0c329bd18d0
|
|
7
|
+
data.tar.gz: 98347d85d24cdbd38ee6cf39cf1a6961a957a56da0d4c17700a2a8dfeb93c2e9438c9953f9bcd5233644249c2f659f1f6c4e4ec9c785bc3cb3835051efa04f98
|
data/NEWS
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
## XXXX-XX-XX: PerfMonger 0.9.0
|
|
2
|
+
* ...
|
|
3
|
+
|
|
4
|
+
## 2016-11-22: PerfMonger 0.8.0
|
|
5
|
+
* New features
|
|
6
|
+
* [record] subcommand:
|
|
7
|
+
* Implemented "session" for preventing double start
|
|
8
|
+
* Add --background and --kill option for running perfmonger in background (useful for scripting)
|
|
9
|
+
* [summary] subcommand:
|
|
10
|
+
* Add --disk-only option to filter results of not interesting disks
|
|
11
|
+
|
|
1
12
|
## 2016-10-02: PerfMonger 0.7.1 released
|
|
2
13
|
|
|
3
14
|
* Bug fix
|
data/Rakefile
CHANGED
data/core/Makefile
CHANGED
|
@@ -1,23 +1,51 @@
|
|
|
1
|
+
# DO NOT EDIT MANUALLY
|
|
2
|
+
# generated by build.sh
|
|
1
3
|
|
|
2
|
-
GOSRC :=
|
|
3
|
-
subsystem/perfmonger.go \
|
|
4
|
-
subsystem/perfmonger_linux.go \
|
|
5
|
-
subsystem/stat.go \
|
|
6
|
-
subsystem/usage.go
|
|
4
|
+
GOSRC := subsystem/perfmonger_darwin.go subsystem/perfmonger.go subsystem/perfmonger_linux.go subsystem/perfmonger_linux_test.go subsystem/stat.go subsystem/stat_test.go subsystem/usage.go subsystem/usage_test.go
|
|
7
5
|
|
|
8
|
-
.PHONY: all clean
|
|
6
|
+
.PHONY: all build clean
|
|
9
7
|
|
|
10
|
-
all:
|
|
8
|
+
all: build
|
|
11
9
|
|
|
12
|
-
clean:
|
|
13
|
-
rm -f perfmonger-recorder perfmonger-player perfmonger-summarizer
|
|
14
10
|
|
|
15
|
-
perfmonger-
|
|
16
|
-
go build
|
|
11
|
+
../lib/exec/perfmonger-recorder_linux_386: perfmonger-recorder.go $(GOSRC)
|
|
12
|
+
go build -o $@ perfmonger-recorder.go
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
../lib/exec/perfmonger-player_linux_386: perfmonger-player.go $(GOSRC)
|
|
16
|
+
go build -o $@ perfmonger-player.go
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
../lib/exec/perfmonger-summarizer_linux_386: perfmonger-summarizer.go $(GOSRC)
|
|
20
|
+
go build -o $@ perfmonger-summarizer.go
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
../lib/exec/perfmonger-recorder_linux_amd64: perfmonger-recorder.go $(GOSRC)
|
|
24
|
+
go build -o $@ perfmonger-recorder.go
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
../lib/exec/perfmonger-player_linux_amd64: perfmonger-player.go $(GOSRC)
|
|
28
|
+
go build -o $@ perfmonger-player.go
|
|
29
|
+
|
|
17
30
|
|
|
18
|
-
perfmonger-
|
|
19
|
-
go build
|
|
31
|
+
../lib/exec/perfmonger-summarizer_linux_amd64: perfmonger-summarizer.go $(GOSRC)
|
|
32
|
+
go build -o $@ perfmonger-summarizer.go
|
|
20
33
|
|
|
21
|
-
|
|
22
|
-
|
|
34
|
+
|
|
35
|
+
../lib/exec/perfmonger-recorder_darwin_amd64: perfmonger-recorder.go $(GOSRC)
|
|
36
|
+
go build -o $@ perfmonger-recorder.go
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
../lib/exec/perfmonger-player_darwin_amd64: perfmonger-player.go $(GOSRC)
|
|
40
|
+
go build -o $@ perfmonger-player.go
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
../lib/exec/perfmonger-summarizer_darwin_amd64: perfmonger-summarizer.go $(GOSRC)
|
|
44
|
+
go build -o $@ perfmonger-summarizer.go
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
build: ../lib/exec/perfmonger-recorder_linux_386 ../lib/exec/perfmonger-player_linux_386 ../lib/exec/perfmonger-summarizer_linux_386 ../lib/exec/perfmonger-recorder_linux_amd64 ../lib/exec/perfmonger-player_linux_amd64 ../lib/exec/perfmonger-summarizer_linux_amd64 ../lib/exec/perfmonger-recorder_darwin_amd64 ../lib/exec/perfmonger-player_darwin_amd64 ../lib/exec/perfmonger-summarizer_darwin_amd64
|
|
48
|
+
|
|
49
|
+
clean:
|
|
50
|
+
rm -f ../lib/exec/perfmonger-recorder_linux_386 ../lib/exec/perfmonger-player_linux_386 ../lib/exec/perfmonger-summarizer_linux_386 ../lib/exec/perfmonger-recorder_linux_amd64 ../lib/exec/perfmonger-player_linux_amd64 ../lib/exec/perfmonger-summarizer_linux_amd64 ../lib/exec/perfmonger-recorder_darwin_amd64 ../lib/exec/perfmonger-player_darwin_amd64 ../lib/exec/perfmonger-summarizer_darwin_amd64
|
|
23
51
|
|
data/core/build.sh
CHANGED
|
@@ -31,18 +31,54 @@ else
|
|
|
31
31
|
TARGET=("linux 386" "linux amd64" "darwin amd64")
|
|
32
32
|
fi
|
|
33
33
|
|
|
34
|
-
set -
|
|
34
|
+
set -e
|
|
35
|
+
|
|
36
|
+
GO_FILES=$(ls subsystem/*.go)
|
|
37
|
+
|
|
38
|
+
cat <<EOF > Makefile
|
|
39
|
+
# DO NOT EDIT MANUALLY
|
|
40
|
+
# generated by build.sh
|
|
41
|
+
|
|
42
|
+
GOSRC := $(echo ${GO_FILES})
|
|
43
|
+
|
|
44
|
+
.PHONY: all build clean
|
|
45
|
+
|
|
46
|
+
all: build
|
|
47
|
+
|
|
48
|
+
EOF
|
|
49
|
+
|
|
50
|
+
TARGETS=()
|
|
35
51
|
|
|
36
52
|
for idx in $(seq 0 $((${#TARGET[@]}-1))); do
|
|
37
53
|
set -- ${TARGET[$idx]}
|
|
38
54
|
export GOOS=$1
|
|
39
55
|
export GOARCH=$2
|
|
40
56
|
|
|
41
|
-
|
|
42
|
-
perfmonger
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
57
|
+
for subcmd in recorder player summarizer; do
|
|
58
|
+
TARGETS+=(../lib/exec/perfmonger-${subcmd}_${GOOS}_${GOARCH})
|
|
59
|
+
|
|
60
|
+
cat <<EOF >> Makefile
|
|
61
|
+
|
|
62
|
+
../lib/exec/perfmonger-${subcmd}_${GOOS}_${GOARCH}: perfmonger-${subcmd}.go \$(GOSRC)
|
|
63
|
+
go build -o \$@ perfmonger-$subcmd.go
|
|
64
|
+
|
|
65
|
+
EOF
|
|
66
|
+
done
|
|
67
|
+
|
|
68
|
+
# go build -o ../lib/exec/perfmonger-recorder_${GOOS}_${GOARCH} \
|
|
69
|
+
# perfmonger-recorder.go &
|
|
70
|
+
# go build -o ../lib/exec/perfmonger-player_${GOOS}_${GOARCH} \
|
|
71
|
+
# perfmonger-player.go &
|
|
72
|
+
# go build -o ../lib/exec/perfmonger-summarizer_${GOOS}_${GOARCH} \
|
|
73
|
+
# perfmonger-summarizer.go &
|
|
74
|
+
|
|
47
75
|
done
|
|
48
76
|
|
|
77
|
+
cat <<EOF >> Makefile
|
|
78
|
+
|
|
79
|
+
build: ${TARGETS[*]}
|
|
80
|
+
|
|
81
|
+
clean:
|
|
82
|
+
rm -f ${TARGETS[*]}
|
|
83
|
+
|
|
84
|
+
EOF
|
data/core/perfmonger-player.go
CHANGED
|
@@ -27,8 +27,7 @@ func showCpuStat(buffer *bytes.Buffer, prev_rec *ss.StatRecord, cur_rec *ss.Stat
|
|
|
27
27
|
func showDiskStat(buffer *bytes.Buffer, prev_rec *ss.StatRecord, cur_rec *ss.StatRecord) error {
|
|
28
28
|
dusage, err := ss.GetDiskUsage(
|
|
29
29
|
prev_rec.Time, prev_rec.Disk,
|
|
30
|
-
cur_rec.Time, cur_rec.Disk
|
|
31
|
-
)
|
|
30
|
+
cur_rec.Time, cur_rec.Disk)
|
|
32
31
|
if err != nil {
|
|
33
32
|
return err
|
|
34
33
|
}
|
data/core/perfmonger-recorder.go
CHANGED
|
@@ -8,10 +8,15 @@ import (
|
|
|
8
8
|
"flag"
|
|
9
9
|
"fmt"
|
|
10
10
|
"io"
|
|
11
|
+
"io/ioutil"
|
|
11
12
|
"os"
|
|
12
13
|
"os/exec"
|
|
13
14
|
"os/signal"
|
|
15
|
+
"os/user"
|
|
16
|
+
"path"
|
|
17
|
+
"strconv"
|
|
14
18
|
"strings"
|
|
19
|
+
"syscall"
|
|
15
20
|
"time"
|
|
16
21
|
|
|
17
22
|
"golang.org/x/crypto/ssh/terminal"
|
|
@@ -111,6 +116,55 @@ func main() {
|
|
|
111
116
|
var out *bufio.Writer
|
|
112
117
|
var err error
|
|
113
118
|
|
|
119
|
+
// Find existing session, or create new one
|
|
120
|
+
user, err := user.Current()
|
|
121
|
+
if err != nil {
|
|
122
|
+
panic(err)
|
|
123
|
+
}
|
|
124
|
+
session_file := path.Join(os.TempDir(),
|
|
125
|
+
fmt.Sprintf("perfmonger-%s-session.pid", user.Username))
|
|
126
|
+
|
|
127
|
+
lockfile := path.Join(os.TempDir(), ".perfmonger.lock")
|
|
128
|
+
|
|
129
|
+
// make lock file if not exists
|
|
130
|
+
session_exists := false
|
|
131
|
+
|
|
132
|
+
if _, err := os.Stat(lockfile); err != nil {
|
|
133
|
+
ioutil.WriteFile(lockfile, []byte(""), 0644)
|
|
134
|
+
}
|
|
135
|
+
fd, _ := syscall.Open("lock", syscall.O_RDONLY, 0000)
|
|
136
|
+
defer syscall.Close(fd)
|
|
137
|
+
syscall.Flock(fd, syscall.LOCK_EX)
|
|
138
|
+
|
|
139
|
+
if _, err := os.Stat(session_file); err == nil {
|
|
140
|
+
pidstr, err := ioutil.ReadFile(session_file)
|
|
141
|
+
pid, err := strconv.Atoi(string(pidstr))
|
|
142
|
+
if err != nil {
|
|
143
|
+
goto MakeNewSession
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
proc, err := os.FindProcess(pid)
|
|
147
|
+
err = proc.Signal(syscall.Signal(0))
|
|
148
|
+
|
|
149
|
+
if err == nil {
|
|
150
|
+
session_exists = true
|
|
151
|
+
goto Unlock
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
MakeNewSession:
|
|
155
|
+
err = ioutil.WriteFile(session_file, []byte(strconv.Itoa(os.Getpid())), 0644)
|
|
156
|
+
if err != nil {
|
|
157
|
+
panic(err)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
Unlock:
|
|
161
|
+
syscall.Flock(fd, syscall.LOCK_UN)
|
|
162
|
+
|
|
163
|
+
if session_exists {
|
|
164
|
+
fmt.Fprintf(os.Stderr, "[ERROR] another perfmonger is already running.\n")
|
|
165
|
+
return
|
|
166
|
+
}
|
|
167
|
+
|
|
114
168
|
parseArgs()
|
|
115
169
|
|
|
116
170
|
hostname, _ := os.Hostname()
|
|
@@ -9,24 +9,31 @@ import (
|
|
|
9
9
|
"fmt"
|
|
10
10
|
"io"
|
|
11
11
|
"os"
|
|
12
|
+
"regexp"
|
|
12
13
|
"sort"
|
|
13
14
|
|
|
14
15
|
ss "github.com/hayamiz/perfmonger/core/subsystem"
|
|
15
16
|
)
|
|
16
17
|
|
|
17
18
|
type SummaryOption struct {
|
|
18
|
-
logfile
|
|
19
|
-
title
|
|
20
|
-
json
|
|
19
|
+
logfile string
|
|
20
|
+
title string
|
|
21
|
+
json bool
|
|
22
|
+
disk_only string
|
|
23
|
+
disk_only_regex *regexp.Regexp
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
var option SummaryOption
|
|
24
27
|
|
|
25
28
|
func parseArgs() {
|
|
29
|
+
var err error
|
|
30
|
+
|
|
26
31
|
flag.BoolVar(&option.json, "json",
|
|
27
32
|
false, "Show summary in JSON")
|
|
28
33
|
flag.StringVar(&option.title, "title",
|
|
29
34
|
"", "Title of summary")
|
|
35
|
+
flag.StringVar(&option.disk_only, "disk-only",
|
|
36
|
+
"", "Select disk devices by regex")
|
|
30
37
|
|
|
31
38
|
flag.Parse()
|
|
32
39
|
|
|
@@ -34,6 +41,11 @@ func parseArgs() {
|
|
|
34
41
|
os.Exit(1)
|
|
35
42
|
}
|
|
36
43
|
|
|
44
|
+
option.disk_only_regex, err = regexp.Compile(option.disk_only)
|
|
45
|
+
if err != nil {
|
|
46
|
+
panic(err)
|
|
47
|
+
}
|
|
48
|
+
|
|
37
49
|
option.logfile = flag.Args()[0]
|
|
38
50
|
}
|
|
39
51
|
|
|
@@ -99,9 +111,10 @@ func main() {
|
|
|
99
111
|
}
|
|
100
112
|
|
|
101
113
|
if fst_record.Disk != nil && lst_record.Disk != nil {
|
|
102
|
-
disk_usage, err = ss.
|
|
114
|
+
disk_usage, err = ss.GetDiskUsage1(
|
|
103
115
|
fst_record.Time, fst_record.Disk,
|
|
104
|
-
lst_record.Time, lst_record.Disk
|
|
116
|
+
lst_record.Time, lst_record.Disk,
|
|
117
|
+
option.disk_only_regex)
|
|
105
118
|
}
|
|
106
119
|
|
|
107
120
|
if fst_record.Disk != nil && lst_record.Disk != nil {
|
data/core/subsystem/usage.go
CHANGED
|
@@ -5,6 +5,7 @@ import (
|
|
|
5
5
|
"encoding/json"
|
|
6
6
|
"errors"
|
|
7
7
|
"fmt"
|
|
8
|
+
"regexp"
|
|
8
9
|
"sort"
|
|
9
10
|
"time"
|
|
10
11
|
)
|
|
@@ -199,6 +200,11 @@ func avgDelta(v int64, w int64, interval float64) float64 {
|
|
|
199
200
|
}
|
|
200
201
|
|
|
201
202
|
func GetDiskUsage(t1 time.Time, d1 *DiskStat, t2 time.Time, d2 *DiskStat) (*DiskUsage, error) {
|
|
203
|
+
return GetDiskUsage1(t1, d1, t2, d2, nil)
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
func GetDiskUsage1(t1 time.Time, d1 *DiskStat, t2 time.Time, d2 *DiskStat,
|
|
207
|
+
filter *regexp.Regexp) (*DiskUsage, error) {
|
|
202
208
|
interval := t2.Sub(t1)
|
|
203
209
|
itv := interval.Seconds()
|
|
204
210
|
|
|
@@ -219,6 +225,11 @@ func GetDiskUsage(t1 time.Time, d1 *DiskStat, t2 time.Time, d2 *DiskStat) (*Disk
|
|
|
219
225
|
|
|
220
226
|
for _, entry1 := range d1.Entries {
|
|
221
227
|
name := entry1.Name
|
|
228
|
+
if filter != nil {
|
|
229
|
+
if !filter.MatchString(name) {
|
|
230
|
+
continue
|
|
231
|
+
}
|
|
232
|
+
}
|
|
222
233
|
var entry2 *DiskStatEntry = nil
|
|
223
234
|
for _, e := range d2.Entries {
|
|
224
235
|
if e.Name == entry1.Name {
|
|
@@ -24,6 +24,7 @@ EOS
|
|
|
24
24
|
@output_type = 'pdf'
|
|
25
25
|
@output_prefix = ''
|
|
26
26
|
@save_gpfiles = false
|
|
27
|
+
@disk_only_regex = nil
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
def parse_args(argv)
|
|
@@ -72,6 +73,9 @@ EOS
|
|
|
72
73
|
@save_gpfiles = true
|
|
73
74
|
end
|
|
74
75
|
|
|
76
|
+
@parser.on('--disk-only REGEX', "Select disk devices that matches REGEX") do |regex|
|
|
77
|
+
@disk_only_regex = Regexp.compile(regex)
|
|
78
|
+
end
|
|
75
79
|
|
|
76
80
|
@parser.parse!(argv)
|
|
77
81
|
|
|
@@ -143,6 +147,12 @@ EOS
|
|
|
143
147
|
start_time ||= time
|
|
144
148
|
devices ||= diskinfo["devices"]
|
|
145
149
|
|
|
150
|
+
if @disk_only_regex
|
|
151
|
+
devices = devices.select do |devname|
|
|
152
|
+
devname =~ @disk_only_regex
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
146
156
|
datafile.puts([time - start_time,
|
|
147
157
|
devices.map{|device|
|
|
148
158
|
[diskinfo[device]["riops"], diskinfo[device]["wiops"],
|
|
@@ -2,6 +2,7 @@ require 'optparse'
|
|
|
2
2
|
require 'tempfile'
|
|
3
3
|
require 'tmpdir'
|
|
4
4
|
require 'json'
|
|
5
|
+
require 'etc'
|
|
5
6
|
|
|
6
7
|
module PerfMonger
|
|
7
8
|
module Command
|
|
@@ -16,15 +17,24 @@ class RecordCommand < BaseCommand
|
|
|
16
17
|
def run(argv)
|
|
17
18
|
@argv, @option = PerfMonger::Command::RecordOption.parse(argv)
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
if @option.kill
|
|
21
|
+
session_file = File.expand_path(sprintf("perfmonger-%s-session.pid", Etc.getlogin),
|
|
22
|
+
Dir.tmpdir)
|
|
23
|
+
Process.kill(:INT, File.read(session_file).to_i)
|
|
24
|
+
else
|
|
25
|
+
exec_record_cmd()
|
|
26
|
+
end
|
|
20
27
|
end
|
|
21
28
|
|
|
22
29
|
private
|
|
23
30
|
def exec_record_cmd()
|
|
24
31
|
cmd = @option.make_command
|
|
25
32
|
|
|
26
|
-
|
|
27
|
-
|
|
33
|
+
if @option.background
|
|
34
|
+
Process.daemon(true)
|
|
35
|
+
else
|
|
36
|
+
$stdout.puts("[recording to #{@option.logfile}]")
|
|
37
|
+
end
|
|
28
38
|
Process.exec(*cmd)
|
|
29
39
|
end
|
|
30
40
|
end
|
|
@@ -9,6 +9,8 @@ class RecordOption
|
|
|
9
9
|
attr_reader :report_cpu
|
|
10
10
|
attr_reader :no_disk
|
|
11
11
|
attr_reader :logfile
|
|
12
|
+
attr_reader :background
|
|
13
|
+
attr_reader :kill
|
|
12
14
|
|
|
13
15
|
attr_reader :parser
|
|
14
16
|
attr_accessor :record_bin
|
|
@@ -83,6 +85,8 @@ class RecordOption
|
|
|
83
85
|
@no_disk = false
|
|
84
86
|
@devices = []
|
|
85
87
|
@logfile = "perfmonger.pgr"
|
|
88
|
+
@background = false
|
|
89
|
+
@kill = false
|
|
86
90
|
|
|
87
91
|
@parser = OptionParser.new
|
|
88
92
|
|
|
@@ -120,6 +124,14 @@ class RecordOption
|
|
|
120
124
|
@logfile = file
|
|
121
125
|
end
|
|
122
126
|
|
|
127
|
+
@parser.on('--background', 'Run in background') do
|
|
128
|
+
@background = true
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
@parser.on('--kill', 'Stop currently running perfmonger-reocrd') do
|
|
132
|
+
@kill = true
|
|
133
|
+
end
|
|
134
|
+
|
|
123
135
|
@parser.on('-v', '--verbose') do
|
|
124
136
|
@verbose = true
|
|
125
137
|
end
|
|
@@ -18,6 +18,7 @@ EOS
|
|
|
18
18
|
|
|
19
19
|
@json = false
|
|
20
20
|
@pager = nil
|
|
21
|
+
@disk_only_regex = nil
|
|
21
22
|
|
|
22
23
|
@parser.on('--json', "Output summary in JSON") do
|
|
23
24
|
@json = true
|
|
@@ -37,6 +38,10 @@ EOS
|
|
|
37
38
|
@pager = pager
|
|
38
39
|
end
|
|
39
40
|
end
|
|
41
|
+
|
|
42
|
+
@parser.on('--disk-only REGEX', "Select disk devices that matches REGEX") do |regex|
|
|
43
|
+
@disk_only_regex = regex
|
|
44
|
+
end
|
|
40
45
|
end
|
|
41
46
|
|
|
42
47
|
def parse_args(argv)
|
|
@@ -74,6 +79,11 @@ EOS
|
|
|
74
79
|
cmd << "-json"
|
|
75
80
|
end
|
|
76
81
|
|
|
82
|
+
if @disk_only_regex
|
|
83
|
+
cmd << "-disk-only"
|
|
84
|
+
cmd << @disk_only_regex
|
|
85
|
+
end
|
|
86
|
+
|
|
77
87
|
cmd << "-title"
|
|
78
88
|
cmd << summary_title
|
|
79
89
|
|
data/lib/perfmonger/version.rb
CHANGED
data/perfmonger.gemspec
CHANGED
|
@@ -22,7 +22,9 @@ Gem::Specification.new do |s|
|
|
|
22
22
|
s.add_development_dependency "guard-rspec"
|
|
23
23
|
s.add_development_dependency "aruba"
|
|
24
24
|
|
|
25
|
-
s.files = `git ls-files`.split("\n")
|
|
25
|
+
s.files = `git ls-files`.split("\n").select do |file|
|
|
26
|
+
! (file =~ /^dbg\//)
|
|
27
|
+
end
|
|
26
28
|
s.files += Dir.glob("lib/exec/*")
|
|
27
29
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
28
30
|
s.executables = `git ls-files -- bin/*`.split("\n").map{|f| File.basename(f)}
|
|
@@ -34,7 +36,7 @@ Gem::Specification.new do |s|
|
|
|
34
36
|
Thank you for installing perfmonger.
|
|
35
37
|
Try to start performance monitoring with:
|
|
36
38
|
|
|
37
|
-
perfmonger
|
|
39
|
+
perfmonger live
|
|
38
40
|
|
|
39
41
|
Enjoy.
|
|
40
42
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: perfmonger
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yuto HAYAMIZU
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-
|
|
11
|
+
date: 2016-11-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -195,7 +195,7 @@ post_install_message: |2+
|
|
|
195
195
|
Thank you for installing perfmonger.
|
|
196
196
|
Try to start performance monitoring with:
|
|
197
197
|
|
|
198
|
-
perfmonger
|
|
198
|
+
perfmonger live
|
|
199
199
|
|
|
200
200
|
Enjoy.
|
|
201
201
|
|
|
@@ -216,19 +216,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
216
216
|
version: '0'
|
|
217
217
|
requirements: []
|
|
218
218
|
rubyforge_project:
|
|
219
|
-
rubygems_version: 2.
|
|
219
|
+
rubygems_version: 2.5.1
|
|
220
220
|
signing_key:
|
|
221
221
|
specification_version: 4
|
|
222
222
|
summary: yet anothor performance measurement/monitoring tool
|
|
223
|
-
test_files:
|
|
224
|
-
- spec/data/busy100.pgr
|
|
225
|
-
- spec/fingerprint_spec.rb
|
|
226
|
-
- spec/live_spec.rb
|
|
227
|
-
- spec/perfmonger_spec.rb
|
|
228
|
-
- spec/play_spec.rb
|
|
229
|
-
- spec/plot_spec.rb
|
|
230
|
-
- spec/record_spec.rb
|
|
231
|
-
- spec/spec_helper.rb
|
|
232
|
-
- spec/stat_spec.rb
|
|
233
|
-
- spec/summary_spec.rb
|
|
234
|
-
- spec/support/aruba.rb
|
|
223
|
+
test_files: []
|