perfmonger 0.9.0 → 0.10.1

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