perfmonger 0.8.2 → 0.9.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/.gitignore +3 -0
- data/NEWS +10 -2
- data/core/Makefile +14 -2
- data/core/build.sh +1 -1
- data/core/perfmonger-plot-formatter.go +325 -0
- data/core/subsystem/usage.go +13 -1
- data/lib/perfmonger.rb +1 -0
- data/lib/perfmonger/command/core.rb +4 -0
- data/lib/perfmonger/command/fingerprint.rb +48 -0
- data/lib/perfmonger/command/init-shell.rb +51 -0
- data/lib/perfmonger/command/plot.rb +241 -195
- data/lib/perfmonger/command/summary.rb +1 -1
- data/lib/perfmonger/version.rb +1 -1
- data/misc/{perfmonger-completion.bash → perfmonger.bash} +0 -0
- data/misc/{_perfmonger → perfmonger.zsh} +24 -8
- data/perfmonger.gemspec +0 -1
- data/spec/fingerprint_spec.rb +7 -7
- data/spec/live_spec.rb +5 -4
- data/spec/perfmonger_spec.rb +7 -7
- data/spec/play_spec.rb +4 -3
- data/spec/plot_spec.rb +18 -17
- data/spec/record_spec.rb +3 -3
- data/spec/stat_spec.rb +2 -2
- data/spec/summary_spec.rb +4 -4
- data/spec/support/aruba.rb +1 -2
- metadata +9 -18
data/lib/perfmonger/version.rb
CHANGED
File without changes
|
@@ -1,4 +1,3 @@
|
|
1
|
-
#compdef perfmonger
|
2
1
|
|
3
2
|
_perfmonger-record() {
|
4
3
|
local curcontext=$curcontext state line ret=1
|
@@ -6,15 +5,16 @@ _perfmonger-record() {
|
|
6
5
|
|
7
6
|
# TODO: match -d,--device multiple times
|
8
7
|
_arguments -w -C -S \
|
9
|
-
'
|
10
|
-
'
|
8
|
+
'--background[run in background mode]' \
|
9
|
+
'--status[show running perfmonger recording session]' \
|
10
|
+
'--kill[kill running perfmonger recording session]' \
|
11
|
+
{-d,--device}'[device name to be monitored]: :__perfmonger_devices' \
|
11
12
|
'(-i --interval)'{-i,--interval}'[measurement interval]: interval in sec' \
|
12
|
-
{-l,--logfile}'[log file name]:_files' \
|
13
|
+
{-l,--logfile}'[log file name]: :_files' \
|
13
14
|
{-B,--no-interval-backoff}'[prevent interval backoff]' \
|
14
15
|
{-s,--start-delay}'[wait specified time before starting measurement]: wait time in sec' \
|
15
16
|
{-t,--timeout}'[length of measurement time]: timeout in sec' \
|
16
|
-
|
17
|
-
{-S,--context-switch}'[report context switches per sec]' \
|
17
|
+
'--no-cpu[Do not monitor CPU usage]' \
|
18
18
|
{-v,--verbose}'[verbose]' \
|
19
19
|
{-h,--help}'[show help]' \
|
20
20
|
&& return
|
@@ -26,6 +26,16 @@ _perfmonger-stat() {
|
|
26
26
|
return ret
|
27
27
|
}
|
28
28
|
|
29
|
+
_perfmonger-play() {
|
30
|
+
local curcontext=$curcontext state line ret=1
|
31
|
+
declare -A opt_args
|
32
|
+
|
33
|
+
_arguments -w -C -S \
|
34
|
+
'*:: :_files' \
|
35
|
+
{-h,--help}'[show help]' \
|
36
|
+
&& return
|
37
|
+
}
|
38
|
+
|
29
39
|
_perfmonger-summary() {
|
30
40
|
local curcontext=$curcontext state line ret=1
|
31
41
|
declare -A opt_args
|
@@ -33,9 +43,9 @@ _perfmonger-summary() {
|
|
33
43
|
# TODO: accept only 1 file
|
34
44
|
_arguments -w -C -S \
|
35
45
|
'--json[output summary in JSON format]' \
|
46
|
+
'--disk-only[select disk devices that matches regexp]: regular expression for target devices' \
|
36
47
|
{-p,--pager}'[use pager to see summary output]: pager program' \
|
37
48
|
{-h,--help}'[show help]' \
|
38
|
-
{-h,--help}'[show help]' \
|
39
49
|
'*:: :_files' \
|
40
50
|
&& return
|
41
51
|
}
|
@@ -51,6 +61,10 @@ _perfmonger-plot() {
|
|
51
61
|
{-T,--output-type}'[output image type]:output type:(pdf png)' \
|
52
62
|
{-p,--prefix}'[output file name prefix]:prefix' \
|
53
63
|
{-s,--save}'[save gnuplot script and data files]' \
|
64
|
+
'--disk-only[select disk devices that matches regexp]: regular expression for target devices' \
|
65
|
+
'--disk-read-only[plot only read performance for disks]' \
|
66
|
+
'--disk-write-only[plot only write performance for disks]' \
|
67
|
+
'--disk-read-write[plot read and write performance for disks]' \
|
54
68
|
{-h,--help}'[show help]' \
|
55
69
|
'*:: :_files' \
|
56
70
|
&& return
|
@@ -117,7 +131,9 @@ _perfmonger() {
|
|
117
131
|
|
118
132
|
_perfmonger_commands() {
|
119
133
|
_values 'command' \
|
120
|
-
'record[record system performance]' \
|
134
|
+
'record[record system performance into a log file]' \
|
135
|
+
'play[play a recorded performance log in JSON]' \
|
136
|
+
'live[iostat and mpstat equivalent speaking JSON]' \
|
121
137
|
'stat[run a command and record system performance during execution]' \
|
122
138
|
'plot[plot system performance graphs from a perfmonger log file]' \
|
123
139
|
'fingerprint[gather all possible system config information]' \
|
data/perfmonger.gemspec
CHANGED
@@ -19,7 +19,6 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_development_dependency "rake"
|
20
20
|
s.add_development_dependency "rspec"
|
21
21
|
s.add_development_dependency "rake-compiler"
|
22
|
-
s.add_development_dependency "guard-rspec"
|
23
22
|
s.add_development_dependency "aruba"
|
24
23
|
|
25
24
|
s.files = `git ls-files`.split("\n").select do |file|
|
data/spec/fingerprint_spec.rb
CHANGED
@@ -15,21 +15,21 @@ describe '[fingerprint] subcommand' do
|
|
15
15
|
|
16
16
|
it 'should create output tgz successfully' do
|
17
17
|
run("#{perfmonger_bin} fingerprint output.tgz", 20)
|
18
|
-
|
19
|
-
|
18
|
+
expect(last_command_started).to be_successfully_executed
|
19
|
+
expect("output.tgz").to be_an_existing_file
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'should create output tgz successfully with alias invocation' do
|
23
23
|
run("#{perfmonger_bin} fp output.tgz", 20)
|
24
|
-
|
25
|
-
|
24
|
+
expect(last_command_started).to be_successfully_executed
|
25
|
+
expect("output.tgz").to be_an_existing_file
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should create output tgz successfully with content" do
|
29
29
|
run("#{perfmonger_bin} fingerprint output.tgz", 20)
|
30
|
-
|
30
|
+
expect(last_command_started).to be_successfully_executed
|
31
31
|
run("tar xf output.tgz")
|
32
|
-
|
33
|
-
|
32
|
+
expect(last_command_started).to be_successfully_executed
|
33
|
+
expect("output").to be_an_existing_directory
|
34
34
|
end
|
35
35
|
end
|
data/spec/live_spec.rb
CHANGED
@@ -8,10 +8,11 @@ describe '[live] subcommand' do
|
|
8
8
|
it 'should print JSON records for 3 seconds and exit successfully.' do
|
9
9
|
cmd = "#{perfmonger_bin} live --timeout 3"
|
10
10
|
run(cmd, 5)
|
11
|
-
|
12
|
-
expect(
|
11
|
+
expect(last_command_started).to be_successfully_executed
|
12
|
+
expect(last_command_started.stdout.lines.to_a.size).to eq 3
|
13
13
|
|
14
|
-
|
14
|
+
run(cmd)
|
15
|
+
last_command_started.stdout.each_line do |line|
|
15
16
|
expect do
|
16
17
|
JSON.parse(line)
|
17
18
|
end.not_to raise_error
|
@@ -20,6 +21,6 @@ describe '[live] subcommand' do
|
|
20
21
|
expect(json.keys.sort).to eq %w{time cpu disk net}.sort
|
21
22
|
end
|
22
23
|
|
23
|
-
|
24
|
+
expect("perfmonger.pgr").to be_an_existing_file
|
24
25
|
end
|
25
26
|
end
|
data/spec/perfmonger_spec.rb
CHANGED
@@ -9,29 +9,29 @@ describe "perfmonger command" do
|
|
9
9
|
it 'should print help and exit with failure when no arguments given' do
|
10
10
|
cmd = "#{perfmonger_bin}"
|
11
11
|
run(cmd)
|
12
|
-
|
13
|
-
expect(
|
12
|
+
expect(last_command_started).not_to be_successfully_executed
|
13
|
+
expect(last_command_started.stdout).to match(/^Usage: perfmonger/)
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'should print help and exit with success when --help is given' do
|
17
17
|
["-h", "--help"].each do |arg|
|
18
18
|
cmd = "#{perfmonger_bin} #{arg}"
|
19
19
|
run(cmd)
|
20
|
-
|
21
|
-
expect(
|
20
|
+
expect(last_command_started).to be_successfully_executed
|
21
|
+
expect(last_command_started.stdout).to match(/^Usage: perfmonger/)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'should print version number if --version given' do
|
26
26
|
cmd = "#{perfmonger_bin} --version"
|
27
27
|
run(cmd)
|
28
|
-
|
29
|
-
expect(
|
28
|
+
expect(last_command_started).to be_successfully_executed
|
29
|
+
expect(last_command_started.stdout).to include(PerfMonger::VERSION)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'fails if unknown subcommand given' do
|
33
33
|
cmd = "#{perfmonger_bin} piyo"
|
34
34
|
run(cmd)
|
35
|
-
|
35
|
+
expect(last_command_started).not_to be_successfully_executed
|
36
36
|
end
|
37
37
|
end
|
data/spec/play_spec.rb
CHANGED
@@ -6,10 +6,11 @@ describe '[play] subcommand' do
|
|
6
6
|
busy100 = data_file "busy100.pgr"
|
7
7
|
cmd = "#{perfmonger_bin} play #{busy100}"
|
8
8
|
run(cmd)
|
9
|
-
|
10
|
-
expect(
|
9
|
+
expect(last_command_started).to be_successfully_executed
|
10
|
+
expect(last_command_started.stdout.lines.to_a.size).to eq 3
|
11
11
|
|
12
|
-
|
12
|
+
run(cmd)
|
13
|
+
last_command_started.stdout.each_line do |line|
|
13
14
|
expect do
|
14
15
|
JSON.parse(line)
|
15
16
|
end.not_to raise_error
|
data/spec/plot_spec.rb
CHANGED
@@ -14,11 +14,11 @@ describe '[plot] subcommand' do
|
|
14
14
|
|
15
15
|
cmd = "#{perfmonger_bin} plot #{busy100}"
|
16
16
|
run(cmd, 30)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
expect(last_command_started).to be_successfully_executed
|
18
|
+
expect("iops.pdf").to be_an_existing_file
|
19
|
+
expect("transfer.pdf").to be_an_existing_file
|
20
|
+
expect("cpu.pdf").to be_an_existing_file
|
21
|
+
expect("allcpu.pdf").to be_an_existing_file
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'should create PDFs, data and gnuplot files when --save is given' do
|
@@ -26,17 +26,18 @@ describe '[plot] subcommand' do
|
|
26
26
|
|
27
27
|
cmd = "#{perfmonger_bin} plot --save #{busy100}"
|
28
28
|
run(cmd, 30)
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
29
|
+
expect(last_command_started).to be_successfully_executed
|
30
|
+
|
31
|
+
expect("iops.pdf").to be_an_existing_file
|
32
|
+
expect("transfer.pdf").to be_an_existing_file
|
33
|
+
expect("cpu.pdf").to be_an_existing_file
|
34
|
+
expect("allcpu.pdf").to be_an_existing_file
|
35
|
+
|
36
|
+
expect("io.gp").to be_an_existing_file
|
37
|
+
expect("io.dat").to be_an_existing_file
|
38
|
+
expect("cpu.gp").to be_an_existing_file
|
39
|
+
expect("cpu.dat").to be_an_existing_file
|
40
|
+
expect("allcpu.gp").to be_an_existing_file
|
41
|
+
expect("allcpu.dat").to be_an_existing_file
|
41
42
|
end
|
42
43
|
end
|
data/spec/record_spec.rb
CHANGED
@@ -8,8 +8,8 @@ describe '[record] subcommand' do
|
|
8
8
|
it 'should create a valid logfile with no output to stdout' do
|
9
9
|
cmd = "#{perfmonger_bin} record --timeout 1"
|
10
10
|
run(cmd)
|
11
|
-
|
12
|
-
|
13
|
-
expect(
|
11
|
+
expect(last_command_started).to be_successfully_executed
|
12
|
+
expect("perfmonger.pgr").to be_an_existing_file # default file name
|
13
|
+
expect(last_command_started.stdout).to be_empty
|
14
14
|
end
|
15
15
|
end
|
data/spec/stat_spec.rb
CHANGED
@@ -9,7 +9,7 @@ describe '[stat] subcommand' do
|
|
9
9
|
it 'should print "Execution time: XXX.XXX"' do
|
10
10
|
cmd = "#{perfmonger_bin} stat -- sleep 1"
|
11
11
|
run(cmd)
|
12
|
-
|
13
|
-
|
12
|
+
expect(last_command_started).to be_successfully_executed
|
13
|
+
expect("perfmonger.pgr").to be_an_existing_file
|
14
14
|
end
|
15
15
|
end
|
data/spec/summary_spec.rb
CHANGED
@@ -6,8 +6,8 @@ describe '[summary] subcommand' do
|
|
6
6
|
busy100 = data_file "busy100.pgr"
|
7
7
|
cmd = "#{perfmonger_bin} summary #{busy100}"
|
8
8
|
run(cmd)
|
9
|
-
|
10
|
-
output =
|
9
|
+
expect(last_command_started).to be_successfully_executed
|
10
|
+
output = last_command_started.stdout
|
11
11
|
|
12
12
|
# measurement duration
|
13
13
|
expect(output).to match(/^Duration: (\d+\.\d+) sec$/)
|
@@ -37,8 +37,8 @@ describe '[summary] subcommand' do
|
|
37
37
|
busy100 = data_file "busy100.pgr"
|
38
38
|
cmd = "#{perfmonger_bin} summary --json #{busy100}"
|
39
39
|
run(cmd)
|
40
|
-
|
41
|
-
output =
|
40
|
+
expect(last_command_started).to be_successfully_executed
|
41
|
+
output = last_command_started.stdout
|
42
42
|
|
43
43
|
expect do
|
44
44
|
JSON.parse(output)
|
data/spec/support/aruba.rb
CHANGED
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.9.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-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,20 +66,6 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: guard-rspec
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: aruba
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -117,6 +103,7 @@ files:
|
|
117
103
|
- core/Makefile
|
118
104
|
- core/build.sh
|
119
105
|
- core/perfmonger-player.go
|
106
|
+
- core/perfmonger-plot-formatter.go
|
120
107
|
- core/perfmonger-recorder.go
|
121
108
|
- core/perfmonger-summarizer.go
|
122
109
|
- core/subsystem/Makefile
|
@@ -144,6 +131,9 @@ files:
|
|
144
131
|
- lib/exec/perfmonger-player_darwin_amd64
|
145
132
|
- lib/exec/perfmonger-player_linux_386
|
146
133
|
- lib/exec/perfmonger-player_linux_amd64
|
134
|
+
- lib/exec/perfmonger-plot-formatter_darwin_amd64
|
135
|
+
- lib/exec/perfmonger-plot-formatter_linux_386
|
136
|
+
- lib/exec/perfmonger-plot-formatter_linux_amd64
|
147
137
|
- lib/exec/perfmonger-recorder_darwin_amd64
|
148
138
|
- lib/exec/perfmonger-recorder_linux_386
|
149
139
|
- lib/exec/perfmonger-recorder_linux_amd64
|
@@ -155,6 +145,7 @@ files:
|
|
155
145
|
- lib/perfmonger/command/base_command.rb
|
156
146
|
- lib/perfmonger/command/core.rb
|
157
147
|
- lib/perfmonger/command/fingerprint.rb
|
148
|
+
- lib/perfmonger/command/init-shell.rb
|
158
149
|
- lib/perfmonger/command/live.rb
|
159
150
|
- lib/perfmonger/command/play.rb
|
160
151
|
- lib/perfmonger/command/plot.rb
|
@@ -166,8 +157,8 @@ files:
|
|
166
157
|
- lib/perfmonger/command/summary.rb
|
167
158
|
- lib/perfmonger/config.rb
|
168
159
|
- lib/perfmonger/version.rb
|
169
|
-
- misc/
|
170
|
-
- misc/perfmonger
|
160
|
+
- misc/perfmonger.bash
|
161
|
+
- misc/perfmonger.zsh
|
171
162
|
- misc/release-howto.txt
|
172
163
|
- misc/sample-cpu.png
|
173
164
|
- misc/sample-read-iops.png
|