RoadRunner 3.3.1 → 4.0.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.
Files changed (57) hide show
  1. data/Rakefile +8 -13
  2. data/bin/controller.rb +74 -0
  3. data/bin/host_mgr.rb +69 -0
  4. data/bin/nbd_prepare.sh +87 -0
  5. data/conf/servers.yaml +29 -0
  6. data/controller/dd.sh +91 -0
  7. data/controller/mysql.rb +73 -0
  8. data/controller/mysql.sh +9 -0
  9. data/controller/svn.sh +48 -0
  10. data/controller/wrap.rb +49 -0
  11. data/lib/roadrunner.rb +11 -9
  12. data/lib/rrmonitor.rb +174 -0
  13. data/lib/run.rb +66 -27
  14. data/log/dd.log +129 -0
  15. data/log/log.rb +17 -0
  16. data/log/monitor/Pi-Monitor-Performance/10.250.3.26/Pi-Monitor-Performance/ifstat.log +239 -0
  17. data/log/monitor/Pi-Monitor-Performance/10.250.3.26/Pi-Monitor-Performance/iostat_3.log +668 -0
  18. data/log/monitor/Pi-Monitor-Performance/10.250.3.26/Pi-Monitor-Performance/vmstat_3.log +81 -0
  19. data/log/monitor/Pi-Monitor-Performance/10.250.3.26/Pi-Monitor-Performance/while__1_0___do_sar_-u_-d_3_10__done.log +2248 -0
  20. data/log/monitor/Pi-Monitor-Performance/10.250.3.26/Pi-Monitor-Performance/while__1_0___do_sar_-u_-n_DEV_3_10__done.log +719 -0
  21. data/log/monitor/Pi-Monitor-Performance/10.250.3.27/Pi-Monitor-Performance/ifstat.log +245 -0
  22. data/log/monitor/Pi-Monitor-Performance/10.250.3.27/Pi-Monitor-Performance/iostat_3.log +677 -0
  23. data/log/monitor/Pi-Monitor-Performance/10.250.3.27/Pi-Monitor-Performance/vmstat_3.log +83 -0
  24. data/log/monitor/Pi-Monitor-Performance/10.250.3.27/Pi-Monitor-Performance/while__1_0___do_sar_-u_-d_3_10__done.log +2276 -0
  25. data/log/monitor/Pi-Monitor-Performance/10.250.3.27/Pi-Monitor-Performance/while__1_0___do_sar_-u_-n_DEV_3_10__done.log +737 -0
  26. data/log/monitor/Pi-Monitor-Performance/10.250.3.28/Pi-Monitor-Performance/ifstat.log +246 -0
  27. data/log/monitor/Pi-Monitor-Performance/10.250.3.28/Pi-Monitor-Performance/iostat_3.log +677 -0
  28. data/log/monitor/Pi-Monitor-Performance/10.250.3.28/Pi-Monitor-Performance/vmstat_3.log +83 -0
  29. data/log/monitor/Pi-Monitor-Performance/10.250.3.28/Pi-Monitor-Performance/while__1_0___do_sar_-u_-d_3_10__done.log +2195 -0
  30. data/log/monitor/Pi-Monitor-Performance/10.250.3.28/Pi-Monitor-Performance/while__1_0___do_sar_-u_-n_DEV_3_10__done.log +737 -0
  31. data/log/monitor/Pi-Monitor-Performance/10.250.3.29/Pi-Monitor-Performance/ifstat.log +247 -0
  32. data/log/monitor/Pi-Monitor-Performance/10.250.3.29/Pi-Monitor-Performance/iostat_3.log +686 -0
  33. data/log/monitor/Pi-Monitor-Performance/10.250.3.29/Pi-Monitor-Performance/vmstat_3.log +84 -0
  34. data/log/monitor/Pi-Monitor-Performance/10.250.3.29/Pi-Monitor-Performance/while__1_0___do_sar_-u_-d_3_10__done.log +2386 -0
  35. data/log/monitor/Pi-Monitor-Performance/10.250.3.29/Pi-Monitor-Performance/while__1_0___do_sar_-u_-n_DEV_3_10__done.log +828 -0
  36. data/log/monitor/Pi-Monitor-Performance/10.250.3.30/Pi-Monitor-Performance/ifstat.log +249 -0
  37. data/log/monitor/Pi-Monitor-Performance/10.250.3.30/Pi-Monitor-Performance/iostat_3.log +686 -0
  38. data/log/monitor/Pi-Monitor-Performance/10.250.3.30/Pi-Monitor-Performance/vmstat_3.log +84 -0
  39. data/log/monitor/Pi-Monitor-Performance/10.250.3.30/Pi-Monitor-Performance/while__1_0___do_sar_-u_-d_3_10__done.log +2304 -0
  40. data/log/monitor/Pi-Monitor-Performance/10.250.3.30/Pi-Monitor-Performance/while__1_0___do_sar_-u_-n_DEV_3_10__done.log +664 -0
  41. data/log/monitor/Pi-Monitor-Performance/10.250.6.30/Pi-Monitor-Performance/ifstat.log +240 -0
  42. data/log/monitor/Pi-Monitor-Performance/10.250.6.30/Pi-Monitor-Performance/iostat_3.log +1334 -0
  43. data/log/monitor/Pi-Monitor-Performance/10.250.6.30/Pi-Monitor-Performance/vmstat_3.log +82 -0
  44. data/log/monitor/Pi-Monitor-Performance/10.250.6.30/Pi-Monitor-Performance/while__1_0___do_sar_-u_-d_3_10__done.log +9048 -0
  45. data/log/monitor/Pi-Monitor-Performance/10.250.6.30/Pi-Monitor-Performance/while__1_0___do_sar_-u_-n_DEV_3_10__done.log +968 -0
  46. data/log/stdout.log +0 -0
  47. data/log/stdout.log.20100307 +349 -0
  48. data/log/svn.log +502 -0
  49. data/test/download_processes.rb +38 -0
  50. data/test/pi_monitor.rb +45 -0
  51. metadata +54 -17
  52. data/lib/roadrunner_stdout.log +0 -168
  53. data/lib/roadrunner_stdout.log.20090519 +0 -262
  54. data/lib/roadrunner_stdout.log.20090521 +0 -47
  55. data/lib/roadrunner_stdout.log.20090524 +0 -290
  56. data/test/roadrunner_stdout.log +0 -170
  57. data/test/roadrunner_stdout.log.20090429 +0 -394
@@ -0,0 +1,9 @@
1
+ #!/bin/sh
2
+ /etc/init.d/mysql stop
3
+ rm -rf /home/cuizheng/mysql/*
4
+ sync
5
+ cp /home/admin/data /home/cuizheng/mysql/
6
+ sync
7
+ /etc/init.d/mysql start
8
+
9
+ ruby /home/cuizheng/controller/mysql.rb
@@ -0,0 +1,48 @@
1
+ #!/bin/sh
2
+ #file-name=svn.sh
3
+
4
+ cd /home/cuizheng
5
+ #LOG=/home/cuizheng/log/nbd_perf_svn_`date +"%Y-%m-%d=%H:%M:%S"`.log
6
+ LOG=/home/cuizheng/log/svn.log
7
+
8
+
9
+ cd /home/cuizheng/file1
10
+ rm -rf *
11
+ sync
12
+ cp /root/code ./ -r
13
+ sync
14
+ rm -rf /home/cuizheng/file2/*
15
+ sync
16
+
17
+
18
+ i=1
19
+
20
+ while [ $i -le 10 ];
21
+ do
22
+
23
+ START=`date +"%s"`
24
+ mv /home/cuizheng/file1/* /home/cuizheng/file2/
25
+ sync
26
+ END=`date +"%s"`
27
+ echo "
28
+ mv /home/cuizheng/file1/* /home/cuizheng/file2/
29
+ sync
30
+ START:$START,END:$END,SPEND:$((END-START))
31
+
32
+ " >>$LOG
33
+
34
+ START=`date +"%s"`
35
+ mv /home/cuizheng/file2/* /home/cuizheng/file1/
36
+ sync
37
+ END=`date +"%s"`
38
+ echo "
39
+ mv /home/cuizheng/file2/* /home/cuizheng/file1/
40
+ sync
41
+ START:$START,END:$END,SPEND:$((END-START))
42
+
43
+ " >> $LOG
44
+
45
+ i=$(($i + 1))
46
+ done
47
+
48
+ exit 1
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ module RoadRunnerModule
4
+
5
+ class Wrap
6
+
7
+ def initialize(opt={})
8
+ @SHELL=opt[:sh]
9
+ @NUM=opt[:n]||10
10
+ @log=opt[:log]
11
+ @PIDS=[]
12
+ @log.debug "Wrap initialize parameters => #{opt.inspect}"
13
+ end
14
+
15
+
16
+ def start!
17
+ @log.info "DSMP perftest start!".center(60,'*')
18
+
19
+ @NUM.times do|i|
20
+ @log.info "sh #{@SHELL} >> #{@SHLOG} 2>&1"
21
+ @PIDS << Process.fork do
22
+ @log.info `sh #{@SHELL} 2>&1`
23
+ end
24
+ end
25
+
26
+ @log.info "Waiting Processes => #{@PIDS.inspect}"
27
+ Process.waitall
28
+ @log.info "Processes down."
29
+ end
30
+
31
+
32
+ def end!
33
+ @PIDS.each do |x|
34
+ @log.debug %x"kill -9 #{x}"
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+
41
+ module Work
42
+ def self.work(n,log,sh)
43
+ svn=Wrap.new({:n=>n,:log=>log,:sh=>sh })
44
+ svn.start!
45
+ end
46
+ end
47
+
48
+
49
+ end
@@ -10,12 +10,7 @@ require 'benchmark'
10
10
  require 'logger'
11
11
  require 'pp'
12
12
 
13
- require 'init'
14
- require 'action'
15
- require 'ended'
16
- require 'run'
17
- require 'report'
18
- require 'rrhelper'
13
+ Dir[File.join(File.dirname(__FILE__),"*.rb")].select{|x|not (x =~ /.*model\.rb/ || x =~ /.*db\.rb/ || x =~ /.*roadrunner\.rb/)}.each { |x| require x }
19
14
 
20
15
  class RoadRunner
21
16
 
@@ -34,18 +29,25 @@ class RoadRunner
34
29
 
35
30
  def initialize(opts={})
36
31
  # => DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN
37
- opts = {:out=>"roadrunner_stdout.log",:frequency=>'daily',:size=>1048576,:level=>Logger::ERROR}.merge opts
32
+ opts = {:out=>File.join(File.dirname(__FILE__),'..','log',"stdout.log"),:frequency=>'daily',:size=>1048576,:level=>Logger::DEBUG}.merge opts
38
33
  @users,@iterations,@longest,@userId,@iterationId=1,1,0,0,0
39
34
  @initBlk,@actBlk,@endBlk=proc{},proc{},proc{}
40
35
  @global,@transactions={},{}
41
36
  @log=Logger.new(opts[:out],opts[:frequency],opts[:size])
42
37
  @log.level=opts[:level]
43
- # => mode : sequence,thread
38
+ # => mode : sequence<default>,thread|t,process|p
44
39
  @mode='sequence'
45
40
 
46
41
  if block_given? then
47
- require 'active_record'
42
+ begin
43
+ gem 'active_record'
44
+ require 'active_record'
45
+ rescue Exception => e
46
+ require 'activerecord'
47
+ end
48
+
48
49
  require 'db'
50
+ require "model"
49
51
 
50
52
  session = {}
51
53
  _session = yield session
@@ -0,0 +1,174 @@
1
+ require "rubygems"
2
+ require "net/ssh"
3
+ require 'fileutils'
4
+
5
+ module RoadRunnerModule
6
+
7
+ =begin
8
+ RRMonitor is used for Xnix system.
9
+ =end
10
+
11
+ class RRMonitor
12
+ def initialize(opt={:server=>"0.0.0.0", :username=>"admin", :password=>"123456"})
13
+ raise(ArgumentError,"Logger is needed!") unless opt[:log]
14
+ @log=opt[:log]
15
+
16
+ @server=opt[:server]
17
+
18
+ begin
19
+ @sess=Net::SSH.start(opt[:server], opt[:username], :password => opt[:password],:timeout => 120)
20
+ @log.info "#{opt[:server]} ssh connection OK."
21
+ rescue Exception => e
22
+ @log.error e
23
+ @log.error opt.inspect
24
+ raise e
25
+ end
26
+
27
+
28
+ @log.info("monitor initialize.".center(60,"*"))
29
+ @log.debug("monitor => #{self.inspect}")
30
+
31
+ @ts=( opt[:ts] || Time.now.to_i )
32
+
33
+ @path="#{File.join File.dirname(__FILE__),'..','log'}/monitor/#{@ts}"
34
+ @log.info "monitor local log path :#{@path}"
35
+
36
+ @rpath="~/.monit/#{@ts}"
37
+ @log.info "monitor remote log path(rpath) :#{@rpath}"
38
+
39
+ @sess.exec!("rm -rf #{@rpath}")
40
+ @sess.exec!("mkdir -p #{@rpath}")
41
+
42
+ @pids={}
43
+ end
44
+
45
+ =begin
46
+ run!(cmd) =>
47
+ the cmd will be execed at remote server(0),
48
+ and the stdout will write in log file.
49
+
50
+ cmd =>[
51
+ 'ifstat',# network io
52
+ 'iostat 3',# disk io
53
+ 'vmstat 3',# memory info
54
+ 'while((1>0));do sar -u -d 3 10; done',# disk and cpu info
55
+ 'while((1>0));do sar -u -n DEV 3 10; done'# network and cpu info
56
+ ]
57
+
58
+ "while((1>0));do #{cmd}; done" is needed for non-consist output cmd.
59
+
60
+ cmd sample =>
61
+
62
+ run!(["while((1>0));do /home/admin/apsara/build/debug64/bin/ku --command=getallpart --appname=blog1 --interactive=false|tail -n1; done"])
63
+
64
+ when exec!(cmd)
65
+ =>
66
+ exec!("while((1>0));do /home/admin/apsara/build/debug64/bin/ku --command=getallpart --appname=blog1 --interactive=false|tail -n1; done >> #{kupath} 2>/dev/null &")
67
+ =end
68
+
69
+ def run!(cmd=['ifstat','iostat 3','while((1>0));do sar -u -d 3 10; done','vmstat 3','while((1>0));do sar -u -n DEV 3 10; done'])
70
+ (@log.error "run!(cmd) cmd type require array.";exit) unless cmd.is_a?(Array)
71
+ (@log.error "run!(cmd) require commands.";exit) if cmd.none?
72
+
73
+ @cmd=cmd
74
+
75
+ begin
76
+ @log.info("RUN!".center(60,"*"))
77
+ @log.debug @server
78
+ cmd.each { |e| self.exec!(e)}
79
+ rescue Exception => e
80
+ @log.error("#{self.inspect} run error!")
81
+ @log.error(e.to_s)
82
+ # raise e
83
+ end
84
+
85
+ end
86
+
87
+ def exec!(cmd)
88
+ # >> cmd='while((1>0));do sar -u -d 3 10; # done';cmdpath="#{cmd.gsub(/([^a-zA-Z0-9\-])/,'_')}.log"
89
+ # => "while__1_0___do_sar_-u_-d_3_10__done.log"
90
+
91
+ # cmdpath="#{@rpath}/#{cmd.gsub(/[\s|\t|\$|\`|\(|\)|\&|\>|\<|\;|\||\'|\"]/,'_')}.log"
92
+ cmdpath="#{@rpath}/#{cmd.gsub(/[^a-zA-Z0-9\-]/,'_')}.log"
93
+ @cmdpath=cmdpath
94
+
95
+ @log.debug "#{cmd} path => #{cmdpath}"
96
+ @log.info "Start #{cmd}.".center(60,"*")
97
+
98
+ @log.debug("#{cmd} >> #{cmdpath} 2>/dev/null &")
99
+ @sess.exec!("#{cmd} >> #{cmdpath} 2>/dev/null &")
100
+
101
+ @pids[cmd]=@sess.exec!("echo $!")
102
+ @log.debug("#{cmd} pid => #{@pids[:ku]}")
103
+ end
104
+
105
+ def stop!
106
+ @pids.each do |key,value|
107
+ @sess.exec!("kill -9 #{value}")
108
+ @log.info("#{key} => #{value} stop!")
109
+ end
110
+
111
+ # if other user exec the same cmd,
112
+ # below cmd will kill all of the cmd.
113
+
114
+ # @sess.exec!(%q@ps axf|grep while|grep -v grep|awk '{printf "%s\n",$1}'|xargs kill -9@)
115
+ #
116
+ # @cmd.each { |e|
117
+ # @sess.exec!(%q@ps axf|grep "#{e}"|grep -v grep|awk '{printf "%s\n",$1}'|xargs kill -9@)
118
+ # }
119
+
120
+ @log.debug @server
121
+ @log.info("Monitor STOP!".center(60,"*"))
122
+ end
123
+
124
+ def collect
125
+ @log.debug "mkdir -p #{@path}/#{@server}"
126
+ %x{mkdir -p #{@path}/#{@server}}
127
+
128
+ path = @path.gsub('~',`echo ~`.gsub(/[\r\n]/,''))
129
+ @log.info "Collecting...".center(60,"*")
130
+ @log.debug "collect path => #{path}/#{@server}"
131
+ `scp -r admin@#{@server}:#{@rpath} #{path}/#{@server}`
132
+ @log.info "collected files => #{Dir[path+'/'+@server+'/**/*'].join($/)}"
133
+ end
134
+
135
+ #-----------------------------monit method--------------------------------#
136
+
137
+ def self.monit(servers,log,cmd=['ifstat','iostat 3','while((1>0));do sar -u -d 3 10; done','vmstat 3','while((1>0));do sar -u -n DEV 3 10; done'],ts="PerformanceTest")
138
+
139
+ case servers
140
+ when Hash
141
+ # do nothing
142
+ when String
143
+ File.open( servers ) { |yf|
144
+ begin
145
+ servers=YAML::load( yf )
146
+ rescue Exception => e
147
+ log.error("Servers' config YAML Load Error!Plz check your yaml file => #{servers}.#{$/}#{e.to_s}")
148
+ exit 1
149
+ end
150
+ }
151
+ end
152
+
153
+ _servers = {}
154
+
155
+ servers.each do |ip,obj|
156
+ _servers[ip] = RoadRunnerModule::RRMonitor.new({:server=>ip, :log=>log, :username=>obj[:username], :password=>obj[:password], :ts=>obj[:obj]||ts})
157
+
158
+ _servers[ip].run! cmd
159
+ end
160
+
161
+ yield
162
+
163
+ _servers.each do |k,v|
164
+ v.stop!
165
+ v.collect
166
+ end
167
+
168
+ end
169
+
170
+ end
171
+
172
+ end
173
+
174
+
data/lib/run.rb CHANGED
@@ -8,42 +8,81 @@ module RoadRunnerModule
8
8
  @thread_pool = {}
9
9
  @counter = 0
10
10
 
11
- iterationBlk = if(@mode!='thread') then
12
- proc {
13
- @iterations.times do |iterationId|
14
- @iterationId=iterationId
11
+ @log.debug "Mode => #{@mode}"
12
+ iterationBlk = case @mode
13
+ when /thread/,/t/ then
14
+ proc {
15
15
  @users.times do |userId|
16
- @userId=userId
17
- rcost = self.transaction('Action',&@actBlk)
18
- # => the below sentence cost a lot of system resource
19
- # => if you run for production result,keep it annotated!!!
20
- # self.log.debug "IterationID is #{self.iterationId};UserID is #{self.userId};This Action Cost #{rcost} seconds"
21
- @longest = (@longest<rcost)?rcost:@longest
16
+ @thread_pool[Thread.start(){
17
+ @iterations.times do |iterationId|
18
+ rcost = self.transaction('Action',&@actBlk)
19
+ self.log.debug "IterationID is #{self.iterationId};UserID is #{self.userId};This Action Cost #{rcost} seconds"
20
+ @longest = (@longest<rcost)?rcost:@longest
21
+ @thread_pool[Thread.current][:iterationId] = iterationId
22
+ end
23
+ @counter += 1
24
+ }]={:userId=>userId}
22
25
  end
23
- end}
24
- elsif(@mode=='thread')
25
- proc {
26
- @users.times do |userId|
27
- @thread_pool[Thread.start(){
28
- @iterations.times do |iterationId|
26
+ # @thread_pool.keys.each{|t|t.join}
27
+ while @counter != @users do
28
+ Thread.pass
29
+ end
30
+ }
31
+ when /process/,/p/ then
32
+ proc {
33
+ ppid=Process.pid
34
+ @log.info("Main Process pid => #{ppid}")
35
+
36
+ pids=[]
37
+ @users.times { |userId|
38
+ pids << Process.fork {
39
+ @userId=userId
40
+ @iterations.times do |iterationId|
41
+ @iterationId=iterationId
42
+ rcost = self.transaction('Action',&@actBlk)
43
+ @longest = (@longest<rcost)?rcost:@longest
44
+ end
45
+ @log.info("<PID:#{Process.pid}> going down.Longest job cost #{@longest}")
46
+
47
+ Process.kill("HUP", ppid)
48
+ }
49
+ }
50
+
51
+ switch=true
52
+ c=0
53
+ Signal.trap("HUP", proc { @log.info("One User(Process) done."); (switch = false;p "Main process<#{Process.pid}> going down.") if ((c+=1) == @users) })
54
+
55
+ @log.info "Waiting Processes => #{pids.inspect}"
56
+
57
+ p "Processes<#{pids.inspect}> working."
58
+ while switch
59
+ STDOUT.puts '.'
60
+ sleep 5
61
+ end
62
+ p $/
63
+
64
+ Process.waitall
65
+ @log.info "Processes down."
66
+ }
67
+ else
68
+ proc {
69
+ @iterations.times do |iterationId|
70
+ @iterationId=iterationId
71
+ @users.times do |userId|
72
+ @userId=userId
29
73
  rcost = self.transaction('Action',&@actBlk)
30
- self.log.debug "IterationID is #{self.iterationId};UserID is #{self.userId};This Action Cost #{rcost} seconds"
74
+ # => the below sentence cost a lot of system resource
75
+ # => if you run for production result,keep it annotated!!!
76
+ # self.log.debug "IterationID is #{self.iterationId};UserID is #{self.userId};This Action Cost #{rcost} seconds"
31
77
  @longest = (@longest<rcost)?rcost:@longest
32
- @thread_pool[Thread.current][:iterationId] = iterationId
33
78
  end
34
- @counter += 1
35
- }]={:userId=>userId}
36
- end
37
- # @thread_pool.keys.each{|t|t.join}
38
- while @counter != @users do
39
- Thread.pass
40
- end
79
+ end
41
80
  }
42
81
  end
43
82
 
44
83
  p ' '+"RoadRunner".center(50, '*')
45
- p ' *'+"---Run , on your way.".rjust(72, ' ')+'*'
46
- p ' *'*12
84
+ p ' *'+"---Run , on your way.".rjust(48, ' ')+'*'
85
+ p ' '+'*'*50
47
86
  p
48
87
  p " Running......"
49
88
  @rep = Benchmark::measure(&iterationBlk)
@@ -0,0 +1,129 @@
1
+ dd 50mb start
2
+ dd 50mb start
3
+ dd 50mb start
4
+
5
+ dd if=/dev/zero of=./nbd_perf_test_file_612eb7fd-c817-4203-9ee7-567db65e5fae.dat bs=512k count=102
6
+ sync
7
+ START:1266895933,END:1266896097,SPEND:164
8
+
9
+
10
+ rm dd document start
11
+
12
+ dd if=/dev/zero of=./nbd_perf_test_file_f16c2c97-c75c-496b-b9fd-e6f29b42f123.dat bs=512k count=102
13
+ sync
14
+ START:1266895933,END:1266896251,SPEND:318
15
+
16
+
17
+ rm dd document start
18
+
19
+ rm -rf dd_tmp_f9c1f5a6-6721-420a-b186-bc16d40e0d47
20
+ sync
21
+ START:1266896251,END:1266896388,SPEND:137
22
+
23
+
24
+
25
+ dd if=/dev/zero of=./nbd_perf_test_file_984b4f07-86e8-43f1-a0c1-000672519a32.dat bs=512k count=102
26
+ sync
27
+ START:1266895933,END:1266896388,SPEND:455
28
+
29
+
30
+ rm dd document start
31
+ dd 50mb start
32
+
33
+ rm -rf dd_tmp_bd42c07c-59ca-4082-9c77-292c0d63e56e
34
+ sync
35
+ START:1266896097,END:1266896388,SPEND:291
36
+
37
+
38
+ dd 50mb start
39
+
40
+ rm -rf dd_tmp_b4d4ff24-a1f1-4f52-aa81-c59d3a6abb0c
41
+ sync
42
+ START:1266896388,END:1266896692,SPEND:304
43
+
44
+
45
+ dd 50mb start
46
+
47
+ dd if=/dev/zero of=./nbd_perf_test_file_c1f1714e-077a-46e7-b95c-c371d75a5b5b.dat bs=512k count=102
48
+ sync
49
+ START:1266896388,END:1266896692,SPEND:304
50
+
51
+
52
+ rm dd document start
53
+
54
+ rm -rf dd_tmp_273ae817-fc22-4ca0-b5ad-0d458ba6a602
55
+ sync
56
+ START:1266896692,END:1266896710,SPEND:18
57
+
58
+
59
+ dd 50mb start
60
+
61
+ dd if=/dev/zero of=./nbd_perf_test_file_4b7f13b6-9627-41e2-a39f-7bfeba2da865.dat bs=512k count=102
62
+ sync
63
+ START:1266896388,END:1266896992,SPEND:604
64
+
65
+
66
+
67
+ dd if=/dev/zero of=./nbd_perf_test_file_a0a41b4f-83a6-4494-b3b1-f0a3401d7aed.dat bs=512k count=102
68
+ sync
69
+ START:1266896710,END:1266896992,SPEND:282
70
+
71
+
72
+ rm dd document start
73
+ rm dd document start
74
+
75
+ dd if=/dev/zero of=./nbd_perf_test_file_a42539c7-95cf-4764-9091-9aef95bf05e5.dat bs=512k count=102
76
+ sync
77
+ START:1266896692,END:1266896992,SPEND:300
78
+
79
+
80
+ rm dd document start
81
+
82
+ rm -rf dd_tmp_37815f72-f8eb-4e3f-9d6d-5ed47744976d
83
+ sync
84
+ START:1266896992,END:1266896993,SPEND:1
85
+
86
+
87
+
88
+ rm -rf dd_tmp_e15d6bfd-8946-40d9-8ee3-b8c7d0535734
89
+ sync
90
+ START:1266896992,END:1266896993,SPEND:1
91
+
92
+
93
+
94
+ rm -rf dd_tmp_b323674e-653e-47e4-97a1-4943930d894b
95
+ sync
96
+ START:1266896992,END:1266896993,SPEND:1
97
+
98
+
99
+ DD-Performance Total START:1266895933,END:1266896993,SPEND:1060
100
+ dd 50mb start
101
+ dd 50mb start
102
+
103
+ dd if=/dev/zero of=./nbd_perf_test_file_efc5672a-b42a-47fe-862f-82561d375800.dat bs=512k count=102
104
+ sync
105
+ START:1266896993,END:1266897300,SPEND:307
106
+
107
+
108
+ rm dd document start
109
+
110
+ dd if=/dev/zero of=./nbd_perf_test_file_6e473dcc-8d18-4fad-b655-005d36667ff3.dat bs=512k count=102
111
+ sync
112
+ START:1266896993,END:1266897300,SPEND:307
113
+
114
+
115
+ rm dd document start
116
+
117
+ rm -rf dd_tmp_71a917a3-d7de-413b-bef4-e6f298be6a0d
118
+ sync
119
+ START:1266897300,END:1266897300,SPEND:0
120
+
121
+
122
+
123
+ rm -rf dd_tmp_74236bfd-68d8-4f07-8a9e-129628819936
124
+ sync
125
+ START:1266897300,END:1266897300,SPEND:0
126
+
127
+
128
+ DD-Performance Total START:1266895933,END:1266897300,SPEND:1367
129
+ DD-Performance Total START:1266895933,END:1266897300,SPEND:1367