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.
@@ -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
- (Dir.glob('/sys/block/sd*') +
275
- Dir.glob('/sys/block/xvd*')).each do |sd_dev|
276
- File.open("#{@output_dir}/block-#{File.basename(sd_dev)}.log", "w") do |f|
277
- f.puts("## ls -l #{sd_dev}")
278
- f.puts(`ls -l #{sd_dev}`)
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
- ['device/queue_depth',
281
- 'device/queue_type',
282
- 'device/iorequest_cnt',
283
- 'device/vendor',
284
- 'queue/scheduler',
285
- 'queue/nr_requests',
286
- 'queue/rq_affinity',
287
- 'queue/nomerges',
288
- 'queue/add_random',
289
- 'queue/rotational',
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('--disk-read-only', "Plot only READ performance for disks") do
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('--disk-write-only', "Plot only WRITE performance for disks") do
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('--disk-read-write', "Plot READ and WRITE performance for disks") do
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('--disk-numkey-threshold NUM', "Legends of per-disk plots are turned off if the number of disks is larger than this value.") do |num|
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
- set yrange [0:*]
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
- begin
83
- if session_pid && Process.getpgid(session_pid)
84
- $stderr.puts("[ERROR] another perfmonger is already running.")
85
- return false
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
@@ -1,3 +1,3 @@
1
1
  module PerfMonger
2
- VERSION = "0.9.0"
2
+ VERSION = "0.10.1"
3
3
  end
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
+