perfmonger 0.9.0 → 0.10.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|