perfmonger 0.9.0 → 0.10.1
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 +29 -2
- data/core/Makefile +26 -25
- data/core/build.sh +20 -13
- data/core/perfmonger-player.go +34 -2
- data/core/perfmonger-plot-formatter.go +2 -4
- data/core/perfmonger-recorder.go +69 -39
- data/core/perfmonger-summarizer.go +17 -1
- data/core/subsystem/perfmonger_linux.go +108 -2
- data/core/subsystem/stat.go +30 -6
- data/core/subsystem/usage.go +76 -0
- data/core/subsystem/usage_test.go +34 -22
- data/core/utils.go +31 -0
- data/lib/perfmonger/command/fingerprint.rb +107 -23
- data/lib/perfmonger/command/plot.rb +18 -7
- data/lib/perfmonger/command/record.rb +17 -6
- data/lib/perfmonger/command/record_option.rb +25 -0
- data/lib/perfmonger/version.rb +1 -1
- data/spec/data/busy100.pgr.gz +0 -0
- data/spec/data/busy100.pgr.played +3 -0
- data/spec/data/busy100.pgr.plot-formatted.cpu.dat +21 -0
- data/spec/data/busy100.pgr.plot-formatted.disk.dat +32 -0
- data/spec/data/busy100.pgr.summary +55 -0
- data/spec/data/busy100.pgr.summary.json +1 -0
- data/spec/play_spec.rb +16 -0
- data/spec/plot_spec.rb +41 -7
- data/spec/summary_spec.rb +30 -0
- metadata +9 -2
@@ -101,9 +101,18 @@ EOS
|
|
101
101
|
save_dmidecode_info()
|
102
102
|
end
|
103
103
|
|
104
|
+
do_with_message("Saving biosdecode info") do
|
105
|
+
save_biosdecode_info()
|
106
|
+
end
|
107
|
+
|
108
|
+
do_with_message("Saving nvme info") do
|
109
|
+
save_nvme_info()
|
110
|
+
end
|
111
|
+
|
104
112
|
|
105
113
|
## Collect vendor specific info
|
106
114
|
|
115
|
+
|
107
116
|
# LSI MegaRAID
|
108
117
|
megacli_bin = "/opt/MegaRAID/MegaCli/MegaCli64"
|
109
118
|
if File.executable?(megacli_bin) && Process::UID.rid == 0
|
@@ -271,31 +280,79 @@ EOS
|
|
271
280
|
end
|
272
281
|
|
273
282
|
def save_device_info()
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
283
|
+
# list of file pattern regexps which cannot be read
|
284
|
+
blacklists = [
|
285
|
+
%r|device/sw_activity$|,
|
286
|
+
%r|trace/pid$|,
|
287
|
+
%r|trace/end_lba$|,
|
288
|
+
%r|trace/enable$|,
|
289
|
+
%r|trace/act_mask$|,
|
290
|
+
%r|trace/start_lba$|,
|
291
|
+
%r|trace/pid$|,
|
292
|
+
%r|trace/end_lba$|,
|
293
|
+
%r|trace/act_mask$|,
|
294
|
+
%r|power/autosuspend_delay_ms$|,
|
295
|
+
%r|device/unload_heads$|,
|
296
|
+
%r|device/vpd_pg80$|,
|
297
|
+
%r|device/vpd_pg83$|,
|
298
|
+
]
|
299
|
+
|
300
|
+
Dir.glob('/sys/block/*').each do |blockdev|
|
301
|
+
if File.basename(blockdev) =~ /^(loop|ram)/
|
302
|
+
next
|
303
|
+
end
|
304
|
+
|
305
|
+
devname = File.basename(blockdev)
|
306
|
+
|
307
|
+
File.open("#{@output_dir}/block-#{File.basename(blockdev)}.log", "w") do |f|
|
308
|
+
f.puts("## ls -l #{blockdev}")
|
309
|
+
f.puts(`ls -l #{blockdev}`)
|
279
310
|
f.puts("")
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
'queue/max_hw_sectors_kb',
|
291
|
-
'queue/physical_block_size',
|
292
|
-
'queue/optimal_io_size',
|
293
|
-
].each do |entity|
|
294
|
-
path = "#{sd_dev}/#{entity}"
|
295
|
-
if File.exists?(path)
|
296
|
-
f.puts("## #{path}")
|
297
|
-
f.puts(`cat #{path}`)
|
311
|
+
|
312
|
+
dirs = []
|
313
|
+
Dir.glob(blockdev + "/*").each do |entry|
|
314
|
+
next if blacklists.any?{|r| r =~ entry}
|
315
|
+
|
316
|
+
st = File::Stat.new(entry)
|
317
|
+
|
318
|
+
if st.ftype == "file" && st.readable? && st.mode & 0444 > 0
|
319
|
+
f.puts("## #{entry}")
|
320
|
+
f.puts(`cat #{entry}`)
|
298
321
|
f.puts("")
|
322
|
+
elsif st.ftype == "link" && st.readable? && st.mode & 0444 > 0
|
323
|
+
f.puts("## #{entry}")
|
324
|
+
f.puts(`ls -l #{entry}`)
|
325
|
+
f.puts("")
|
326
|
+
elsif st.ftype == "directory" && st.readable? && st.mode & 0444 > 0
|
327
|
+
dirs.push(entry)
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
331
|
+
while (dir = dirs.shift) != nil
|
332
|
+
Dir.glob(dir + "/*").each do |entry|
|
333
|
+
next if blacklists.any?{|r| r =~ entry}
|
334
|
+
|
335
|
+
st = File::Stat.new(entry)
|
336
|
+
|
337
|
+
if st.ftype == "file" && st.readable? && st.mode & 0444 > 0
|
338
|
+
f.puts("## #{entry}")
|
339
|
+
f.puts(`cat #{entry}`)
|
340
|
+
f.puts("")
|
341
|
+
elsif st.ftype == "link" && st.readable? && st.mode & 0444 > 0
|
342
|
+
f.puts("## #{entry}")
|
343
|
+
f.puts(`ls -l #{entry}`)
|
344
|
+
f.puts("")
|
345
|
+
elsif st.ftype == "directory" && st.readable? && st.mode & 0444 > 0
|
346
|
+
f.puts("## #{entry}")
|
347
|
+
f.puts(`ls -l #{entry}/`)
|
348
|
+
f.puts("")
|
349
|
+
end
|
350
|
+
|
351
|
+
if devname =~ /^nvme/
|
352
|
+
if entry =~ /device\/device$/
|
353
|
+
dirs.push(entry)
|
354
|
+
end
|
355
|
+
end
|
299
356
|
end
|
300
357
|
end
|
301
358
|
end
|
@@ -480,6 +537,33 @@ EOS
|
|
480
537
|
end
|
481
538
|
end
|
482
539
|
|
540
|
+
def save_biosdecode_info()
|
541
|
+
biosdecode_bin = find_executable("biosdecode")
|
542
|
+
|
543
|
+
if biosdecode_bin
|
544
|
+
File.open("#{@output_dir}/biosdecode.log", "w") do |f|
|
545
|
+
content = `#{biosdecode_bin} 2>&1`
|
546
|
+
f.puts("## biosdecode")
|
547
|
+
f.puts(content)
|
548
|
+
f.puts("")
|
549
|
+
end
|
550
|
+
end
|
551
|
+
end
|
552
|
+
|
553
|
+
def save_nvme_info()
|
554
|
+
# https://github.com/linux-nvme/nvme-cli
|
555
|
+
nvme_bin = find_executable("nvme")
|
556
|
+
|
557
|
+
if nvme_bin
|
558
|
+
File.open("#{@output_dir}/nvme-cli-list.log", "w") do |f|
|
559
|
+
content = `#{nvme_bin} list 2>&1`
|
560
|
+
f.puts("## nvme list")
|
561
|
+
f.puts(content)
|
562
|
+
f.puts("")
|
563
|
+
end
|
564
|
+
end
|
565
|
+
end
|
566
|
+
|
483
567
|
def save_megaraid_info(megacli_bin)
|
484
568
|
File.open("#{@output_dir}/megaraid.log", "w") do |f|
|
485
569
|
params_list = ["-AdpCount",
|
@@ -28,6 +28,7 @@ EOS
|
|
28
28
|
@disk_plot_read = true
|
29
29
|
@disk_plot_write = true
|
30
30
|
@disk_numkey_threshold = 10
|
31
|
+
@plot_iops_max = nil
|
31
32
|
end
|
32
33
|
|
33
34
|
def parse_args(argv)
|
@@ -80,25 +81,29 @@ EOS
|
|
80
81
|
@disk_only_regex = Regexp.compile(regex)
|
81
82
|
end
|
82
83
|
|
83
|
-
@parser.on('--
|
84
|
+
@parser.on('--plot-read-only', "Plot only READ performance for disks") do
|
84
85
|
@disk_plot_read = true
|
85
86
|
@disk_plot_write = false
|
86
87
|
end
|
87
88
|
|
88
|
-
@parser.on('--
|
89
|
+
@parser.on('--plot-write-only', "Plot only WRITE performance for disks") do
|
89
90
|
@disk_plot_read = false
|
90
91
|
@disk_plot_write = true
|
91
92
|
end
|
92
93
|
|
93
|
-
@parser.on('--
|
94
|
+
@parser.on('--plot-read-write', "Plot READ and WRITE performance for disks") do
|
94
95
|
@disk_plot_read = true
|
95
96
|
@disk_plot_write = true
|
96
97
|
end
|
97
98
|
|
98
|
-
@parser.on('--
|
99
|
+
@parser.on('--plot-numkey-threshold NUM', "Legends of per-disk plots are turned off if the number of disks is larger than this value.") do |num|
|
99
100
|
@disk_numkey_threshold = num.to_i
|
100
101
|
end
|
101
102
|
|
103
|
+
@parser.on('--plot-iops-max IOPS', "Maximum of IOPS plot range (default: auto)") do |iops|
|
104
|
+
@plot_iops_max = iops.to_f
|
105
|
+
end
|
106
|
+
|
102
107
|
@parser.parse!(argv)
|
103
108
|
|
104
109
|
if argv.size == 0
|
@@ -250,8 +255,13 @@ EOS
|
|
250
255
|
set_key_stmt = "set key below center"
|
251
256
|
end
|
252
257
|
|
258
|
+
iops_yrange = "set yrange [0:*]"
|
259
|
+
if @plot_iops_max
|
260
|
+
iops_yrange = "set yrange [0:#{@plot_iops_max}]"
|
261
|
+
end
|
262
|
+
|
253
263
|
gpfile.puts <<EOS
|
254
|
-
set term pdfcairo enhanced color
|
264
|
+
set term pdfcairo enhanced color size 6in,2.5in
|
255
265
|
set title "IOPS"
|
256
266
|
set size 1.0, 1.0
|
257
267
|
set output "#{iops_pdf_filename}"
|
@@ -261,7 +271,7 @@ set ylabel "IOPS"
|
|
261
271
|
|
262
272
|
set grid
|
263
273
|
set xrange [#{@offset_time}:#{end_time - start_time}]
|
264
|
-
|
274
|
+
#{iops_yrange}
|
265
275
|
|
266
276
|
#{set_key_stmt}
|
267
277
|
plot #{iops_plot_stmt_list.join(",\\\n ")}
|
@@ -275,6 +285,7 @@ plot #{total_iops_plot_stmt_list.join(",\\\n ")}
|
|
275
285
|
set title "Transfer rate"
|
276
286
|
set output "#{transfer_pdf_filename}"
|
277
287
|
set ylabel "transfer rate [MB/s]"
|
288
|
+
set yrange [0:*]
|
278
289
|
#{set_key_stmt}
|
279
290
|
plot #{transfer_plot_stmt_list.join(",\\\n ")}
|
280
291
|
|
@@ -349,7 +360,7 @@ EOS
|
|
349
360
|
|
350
361
|
pdf_file = File.join(@output_dir, "cpu.pdf")
|
351
362
|
gpfile.puts <<EOS
|
352
|
-
set term pdfcairo enhanced color
|
363
|
+
set term pdfcairo enhanced color size 6in,2.5in
|
353
364
|
set title "CPU usage (max: #{nr_cpu*100}%)"
|
354
365
|
set output "#{pdf_filename}"
|
355
366
|
set key outside center bottom horizontal
|
@@ -79,13 +79,19 @@ EOS
|
|
79
79
|
end
|
80
80
|
|
81
81
|
# run perfmonger-recorder (normal path)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
82
|
+
|
83
|
+
if @option.background
|
84
|
+
# If perfmonger is going to start in background mode,
|
85
|
+
# there must be an another session running.
|
86
|
+
|
87
|
+
begin
|
88
|
+
if session_pid && Process.getpgid(session_pid)
|
89
|
+
$stderr.puts("[ERROR] another perfmonger is already running in background mode")
|
90
|
+
return false
|
91
|
+
end
|
92
|
+
rescue Errno::ESRCH
|
93
|
+
# Actually there is no perfmonger running. go through.
|
86
94
|
end
|
87
|
-
rescue Errno::ESRCH
|
88
|
-
# Actually there is no perfmonger running. go through.
|
89
95
|
end
|
90
96
|
|
91
97
|
exec_record_cmd()
|
@@ -102,6 +108,11 @@ private
|
|
102
108
|
else
|
103
109
|
$stdout.puts("[recording to #{@option.logfile}]")
|
104
110
|
end
|
111
|
+
|
112
|
+
if ENV['PERFMONGER_DEBUG'] != nil && ! ENV['PERFMONGER_DEBUG'].empty?
|
113
|
+
$stderr.puts("[debug] cmd: " + cmd.join(" "))
|
114
|
+
end
|
115
|
+
|
105
116
|
Process.exec(*cmd)
|
106
117
|
end
|
107
118
|
end
|
@@ -60,13 +60,26 @@ class RecordOption
|
|
60
60
|
if @no_disk
|
61
61
|
cmd << "-no-disk"
|
62
62
|
end
|
63
|
+
if @no_intr
|
64
|
+
cmd << "-no-intr"
|
65
|
+
end
|
63
66
|
if @devices.size > 0
|
64
67
|
cmd << "-disks"
|
65
68
|
cmd << @devices.join(",")
|
66
69
|
end
|
70
|
+
if @background
|
71
|
+
cmd << "-background"
|
72
|
+
end
|
67
73
|
|
68
74
|
# TODO: implement device filter
|
69
75
|
|
76
|
+
if ! @logfile_set && @gzip
|
77
|
+
@logfile += ".gz"
|
78
|
+
end
|
79
|
+
if @gzip
|
80
|
+
cmd << "-gzip"
|
81
|
+
end
|
82
|
+
|
70
83
|
cmd << "-output"
|
71
84
|
cmd << @logfile
|
72
85
|
|
@@ -84,8 +97,11 @@ class RecordOption
|
|
84
97
|
@verbose = false
|
85
98
|
@no_cpu = false
|
86
99
|
@no_disk = false
|
100
|
+
@no_intr = true
|
87
101
|
@devices = []
|
88
102
|
@logfile = "perfmonger.pgr"
|
103
|
+
@logfile_set = false
|
104
|
+
@gzip = true
|
89
105
|
@background = false
|
90
106
|
@kill = false
|
91
107
|
|
@@ -97,6 +113,10 @@ class RecordOption
|
|
97
113
|
@no_disk = false
|
98
114
|
end
|
99
115
|
|
116
|
+
@parser.on('--record-intr', 'Record per core interrupts count (experimental)') do
|
117
|
+
@no_intr = false
|
118
|
+
end
|
119
|
+
|
100
120
|
@parser.on('-i', '--interval SEC',
|
101
121
|
'Amount of time between each measurement report. Floating point is o.k.') do |interval|
|
102
122
|
@interval = Float(interval)
|
@@ -123,6 +143,11 @@ class RecordOption
|
|
123
143
|
|
124
144
|
@parser.on('-l', '--logfile FILE') do |file|
|
125
145
|
@logfile = file
|
146
|
+
@logfile_set = true
|
147
|
+
end
|
148
|
+
|
149
|
+
@parser.on('--no-gzip', 'Do not Save a logfile in gzipped format') do
|
150
|
+
@gzip = false
|
126
151
|
end
|
127
152
|
|
128
153
|
@parser.on('--background', 'Run in background') do
|
data/lib/perfmonger/version.rb
CHANGED
Binary file
|
@@ -0,0 +1,3 @@
|
|
1
|
+
{"time":1425358686.123,"cpu":{"num_core":2,"all":{"usr":100.00,"nice":0.00,"sys":0.67,"idle":99.33,"iowait":0.00,"hardirq":0.00,"softirq":0.00,"steal":0.00,"guest":0.00,"guestnice":0.00},"cores":[{"usr":0.33,"nice":0.00,"sys":0.33,"idle":99.33,"iowait":0.00,"hardirq":0.00,"softirq":0.00,"steal":0.00,"guest":0.00,"guestnice":0.00},{"usr":99.67,"nice":0.00,"sys":0.33,"idle":0.00,"iowait":0.00,"hardirq":0.00,"softirq":0.00,"steal":0.00,"guest":0.00,"guestnice":0.00}]},"disk":{"devices":["sda","sda1","sda2"],"sda":{"riops":0.00,"wiops":1.67,"rkbyteps":0.00,"wkbyteps":26.66,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":32.00,"qlen":0.00},"sda1":{"riops":0.00,"wiops":1.67,"rkbyteps":0.00,"wkbyteps":26.66,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":32.00,"qlen":0.00},"sda2":{"riops":0.00,"wiops":0.00,"rkbyteps":0.00,"wkbyteps":0.00,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":0.00,"qlen":0.00},"total":{"riops":0.00,"wiops":3.33,"rkbyteps":0.00,"wkbyteps":53.31,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":32.00,"qlen":0.00}},"net":{"devices":["eth0","lo"],"eth0":{"rxkbyteps":0.04,"rxpktps":0.67,"rxerrps":0.00,"rxdropps":0.00,"txkbyteps":0.24,"txpktps":0.67,"txerrps":0.00,"txdropps":0.00},"lo":{"rxkbyteps":0.00,"rxpktps":0.00,"rxerrps":0.00,"rxdropps":0.00,"txkbyteps":0.00,"txpktps":0.00,"txerrps":0.00,"txdropps":0.00},"total":{"rxkbyteps":0.04,"rxpktps":0.67,"rxerrps":0.00,"rxdropps":0.00,"txkbyteps":0.24,"txpktps":0.67,"txerrps":0.00,"txdropps":0.00}}}
|
2
|
+
{"time":1425358689.123,"cpu":{"num_core":2,"all":{"usr":100.50,"nice":0.00,"sys":0.33,"idle":99.17,"iowait":0.00,"hardirq":0.00,"softirq":0.00,"steal":0.00,"guest":0.00,"guestnice":0.00},"cores":[{"usr":0.33,"nice":0.00,"sys":0.33,"idle":99.33,"iowait":0.00,"hardirq":0.00,"softirq":0.00,"steal":0.00,"guest":0.00,"guestnice":0.00},{"usr":100.00,"nice":0.00,"sys":0.00,"idle":0.00,"iowait":0.00,"hardirq":0.00,"softirq":0.00,"steal":0.00,"guest":0.00,"guestnice":0.00}]},"disk":{"devices":["sda","sda1","sda2"],"sda":{"riops":0.00,"wiops":0.00,"rkbyteps":0.00,"wkbyteps":0.00,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":0.00,"qlen":0.00},"sda1":{"riops":0.00,"wiops":0.00,"rkbyteps":0.00,"wkbyteps":0.00,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":0.00,"qlen":0.00},"sda2":{"riops":0.00,"wiops":0.00,"rkbyteps":0.00,"wkbyteps":0.00,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":0.00,"qlen":0.00},"total":{"riops":0.00,"wiops":0.00,"rkbyteps":0.00,"wkbyteps":0.00,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":0.00,"qlen":0.00}},"net":{"devices":["eth0","lo"],"eth0":{"rxkbyteps":0.00,"rxpktps":0.00,"rxerrps":0.00,"rxdropps":0.00,"txkbyteps":0.00,"txpktps":0.00,"txerrps":0.00,"txdropps":0.00},"lo":{"rxkbyteps":0.00,"rxpktps":0.00,"rxerrps":0.00,"rxdropps":0.00,"txkbyteps":0.00,"txpktps":0.00,"txerrps":0.00,"txdropps":0.00},"total":{"rxkbyteps":0.00,"rxpktps":0.00,"rxerrps":0.00,"rxdropps":0.00,"txkbyteps":0.00,"txpktps":0.00,"txerrps":0.00,"txdropps":0.00}}}
|
3
|
+
{"time":1425358690.645,"cpu":{"num_core":2,"all":{"usr":100.65,"nice":0.00,"sys":0.00,"idle":99.35,"iowait":0.00,"hardirq":0.00,"softirq":0.00,"steal":0.00,"guest":0.00,"guestnice":0.00},"cores":[{"usr":0.65,"nice":0.00,"sys":0.65,"idle":98.70,"iowait":0.00,"hardirq":0.00,"softirq":0.00,"steal":0.00,"guest":0.00,"guestnice":0.00},{"usr":100.00,"nice":0.00,"sys":0.00,"idle":0.00,"iowait":0.00,"hardirq":0.00,"softirq":0.00,"steal":0.00,"guest":0.00,"guestnice":0.00}]},"disk":{"devices":["sda","sda1","sda2"],"sda":{"riops":0.00,"wiops":0.00,"rkbyteps":0.00,"wkbyteps":0.00,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":0.00,"qlen":0.00},"sda1":{"riops":0.00,"wiops":0.00,"rkbyteps":0.00,"wkbyteps":0.00,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":0.00,"qlen":0.00},"sda2":{"riops":0.00,"wiops":0.00,"rkbyteps":0.00,"wkbyteps":0.00,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":0.00,"qlen":0.00},"total":{"riops":0.00,"wiops":0.00,"rkbyteps":0.00,"wkbyteps":0.00,"rlatency":0.000,"wlatency":0.000,"rsize":0.00,"wsize":0.00,"qlen":0.00}},"net":{"devices":["eth0","lo"],"eth0":{"rxkbyteps":0.00,"rxpktps":0.00,"rxerrps":0.00,"rxdropps":0.00,"txkbyteps":0.00,"txpktps":0.00,"txerrps":0.00,"txdropps":0.00},"lo":{"rxkbyteps":0.00,"rxpktps":0.00,"rxerrps":0.00,"rxdropps":0.00,"txkbyteps":0.00,"txpktps":0.00,"txerrps":0.00,"txdropps":0.00},"total":{"rxkbyteps":0.00,"rxpktps":0.00,"rxerrps":0.00,"rxdropps":0.00,"txkbyteps":0.00,"txpktps":0.00,"txerrps":0.00,"txdropps":0.00}}}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# All cpu usage
|
2
|
+
# elapsed_time %usr %nice %sys %iowait %hardirq %softirq %steal %guest %idle
|
3
|
+
0.000000 100.000000 0.000000 0.666667 0.000000 0.000000 0.000000 0.000000 0.000000 99.333333
|
4
|
+
3.001173 100.500835 0.000000 0.333890 0.000000 0.000000 0.000000 0.000000 0.000000 99.165275
|
5
|
+
6.001157 100.653595 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 99.346405
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
# core: 0
|
10
|
+
# elapsed_time %usr %nice %sys %iowait %hardirq %softirq %steal %guest %idle
|
11
|
+
0.000000 0.334448 0.000000 0.334448 0.000000 0.000000 0.000000 0.000000 0.000000 99.331104
|
12
|
+
3.001173 0.333333 0.000000 0.333333 0.000000 0.000000 0.000000 0.000000 0.000000 99.333333
|
13
|
+
6.001157 0.649351 0.000000 0.649351 0.000000 0.000000 0.000000 0.000000 0.000000 98.701299
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
# core: 1
|
18
|
+
# elapsed_time %usr %nice %sys %iowait %hardirq %softirq %steal %guest %idle
|
19
|
+
0.000000 99.666667 0.000000 0.333333 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
20
|
+
3.001173 100.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
21
|
+
6.001157 100.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
# device: sda
|
5
|
+
# elapsed_time r_iops w_iops r_MB/s w_MB/s r_latency w_latency r_avgsz w_avgsz qdepth
|
6
|
+
0.000000 0.000000 1.666015 0.000000 0.026031 0.000000 0.000000 0.000000 32.000000 0.000000
|
7
|
+
3.001173 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
8
|
+
6.001157 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
# device: sda1
|
13
|
+
# elapsed_time r_iops w_iops r_MB/s w_MB/s r_latency w_latency r_avgsz w_avgsz qdepth
|
14
|
+
0.000000 0.000000 1.666015 0.000000 0.026031 0.000000 0.000000 0.000000 32.000000 0.000000
|
15
|
+
3.001173 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
16
|
+
6.001157 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
# device: sda2
|
21
|
+
# elapsed_time r_iops w_iops r_MB/s w_MB/s r_latency w_latency r_avgsz w_avgsz qdepth
|
22
|
+
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
23
|
+
3.001173 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
24
|
+
6.001157 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
# device: total
|
29
|
+
# elapsed_time r_iops w_iops r_MB/s w_MB/s r_latency w_latency r_avgsz w_avgsz qdepth
|
30
|
+
0.000000 0.000000 3.332030 0.000000 0.052063 0.000000 0.000000 0.000000 32.000000 0.000000
|
31
|
+
3.001173 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
32
|
+
6.001157 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
|
@@ -0,0 +1,55 @@
|
|
1
|
+
== performance summary of 'spec/data/busy100.pgr' ==
|
2
|
+
|
3
|
+
Duration: 7.524 sec
|
4
|
+
|
5
|
+
* Average CPU usage (MAX: 200 %)
|
6
|
+
* Non-idle usage: 100.73 %
|
7
|
+
%usr: 100.33 %
|
8
|
+
%sys: 0.40 %
|
9
|
+
%irq: 0.00 %
|
10
|
+
%soft: 0.00 %
|
11
|
+
%other: 0.00 %
|
12
|
+
* Idle usage: 99.27 %
|
13
|
+
%iowait: 0.00 %
|
14
|
+
%idle: 99.27 %
|
15
|
+
|
16
|
+
* Average DEVICE usage: sda
|
17
|
+
read IOPS: 0.00
|
18
|
+
write IOPS: 0.66
|
19
|
+
read throughput: 0.00 MB/s
|
20
|
+
write throughput: 0.01 MB/s
|
21
|
+
read latency: 0.0 usec
|
22
|
+
write latency: 0.0 usec
|
23
|
+
read amount: 0.00 MB
|
24
|
+
write amount: 0.08 MB
|
25
|
+
|
26
|
+
* Average DEVICE usage: sda1
|
27
|
+
read IOPS: 0.00
|
28
|
+
write IOPS: 0.66
|
29
|
+
read throughput: 0.00 MB/s
|
30
|
+
write throughput: 0.01 MB/s
|
31
|
+
read latency: 0.0 usec
|
32
|
+
write latency: 0.0 usec
|
33
|
+
read amount: 0.00 MB
|
34
|
+
write amount: 0.08 MB
|
35
|
+
|
36
|
+
* Average DEVICE usage: sda2
|
37
|
+
read IOPS: 0.00
|
38
|
+
write IOPS: 0.00
|
39
|
+
read throughput: 0.00 MB/s
|
40
|
+
write throughput: 0.00 MB/s
|
41
|
+
read latency: 0.0 usec
|
42
|
+
write latency: 0.0 usec
|
43
|
+
read amount: 0.00 MB
|
44
|
+
write amount: 0.00 MB
|
45
|
+
|
46
|
+
* Average DEVICE usage: total
|
47
|
+
read IOPS: 0.00
|
48
|
+
write IOPS: 1.33
|
49
|
+
read throughput: 0.00 MB/s
|
50
|
+
write throughput: 0.02 MB/s
|
51
|
+
read latency: 0.0 usec
|
52
|
+
write latency: 0.0 usec
|
53
|
+
read amount: 0.00 MB
|
54
|
+
write amount: 0.16 MB
|
55
|
+
|