pwrake 2.2.5 → 2.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 169f1dc9dd2e2b5dbc2b07d4b4ac11abb74cbc60
4
- data.tar.gz: e1efd61651870235421f6a10f531daea0dc6ba83
2
+ SHA256:
3
+ metadata.gz: d2c9f51a1a5bdbb546c288239917a1284a7d831f4332c339474d5eb4e368a0ac
4
+ data.tar.gz: dda35b31e72bd380b0e6ee5e1e2d6cdecb66698bfd3167ce792e3b4f95146f4c
5
5
  SHA512:
6
- metadata.gz: dd4a51d8ae3c2c919a553668b4a0009aea6c4c0bb5b80c1f5ad849a8d569f5e600fe296abb3e19ee5f6b1f90e060b17cbe432ac41c74c587aeac3289bc8b7dd9
7
- data.tar.gz: 39de4c6360f0d02414dcd6f23fc820f12fef64de7a7b7017c81527df33448b406f5e6d9e9f0a5710d9768ddbff9bf15fb92cbf7800663f2fc2d80a2ee430bc69
6
+ metadata.gz: 5999d1c3ac6217ebab9d5e1915f6f9cf6c8c2023fa3fe973a3a3de7dfe751f4b89e5c8b1a31d4a0a9e972a8fb1be8233fb2c357b189f339925194bfde2352e52
7
+ data.tar.gz: 366a8e85bf26d3af24b9f80f4521c8b222c56985b50c644f337d4e996eb232f8c077df6fbe4a314b5794eb91d840639ce8c13a3e508fc695ea12bf3c4cbd3fad
@@ -7,10 +7,11 @@ module Pwrake
7
7
 
8
8
  class FiberQueue
9
9
 
10
- def initialize
10
+ def initialize(log=nil)
11
11
  @q = []
12
12
  @waiter = []
13
13
  @finished = false
14
+ @log = log
14
15
  end
15
16
 
16
17
  def enq(x)
@@ -38,7 +39,13 @@ module Pwrake
38
39
  def finish
39
40
  @finished = true
40
41
  while f = @waiter.shift
41
- f.resume
42
+ begin
43
+ f.resume
44
+ rescue => exc
45
+ if @log
46
+ @log.error(([exc.to_s]+exc.backtrace).join("\n"))
47
+ end
48
+ end
42
49
  end
43
50
  end
44
51
 
@@ -145,14 +145,16 @@ module Pwrake
145
145
  end
146
146
  @status = nil
147
147
  start_time = Time.now
148
+ start_clock = Pwrake.clock
148
149
  begin
149
150
  _puts(cmd)
150
151
  @status = io_read_loop(&block)
151
152
  ensure
152
153
  end_time = Time.now
154
+ end_clock = Pwrake.clock
153
155
  @status = @@profiler.profile(@task_id, @task_name, cmd,
154
- start_time, end_time, host, @ncore, @status,
155
- @gnu_time_status)
156
+ start_time, end_time, end_clock-start_clock,
157
+ host, @ncore, @status, @gnu_time_status)
156
158
  end
157
159
  end
158
160
 
@@ -30,12 +30,12 @@ module Pwrake
30
30
  end
31
31
  _puts table_header
32
32
  t = Time.now
33
- profile(nil,nil,'pwrake_profile_start',t,t)
33
+ profile(nil,nil,'pwrake_profile_start',t,t,0)
34
34
  end
35
35
 
36
36
  def close
37
37
  t = Time.now
38
- profile(nil,nil,'pwrake_profile_end',t,t)
38
+ profile(nil,nil,'pwrake_profile_end',t,t,0)
39
39
  @lock.synchronize do
40
40
  @io.close if @io != nil
41
41
  @io = nil
@@ -85,7 +85,7 @@ module Pwrake
85
85
  t.strftime("%F %T.%L")
86
86
  end
87
87
 
88
- def profile(task_id, task_name, cmd, start_time, end_time,
88
+ def profile(task_id, task_name, cmd, start_time, end_time, elap_clock,
89
89
  host=nil, ncore=nil, status=nil, gnu_time_status=nil)
90
90
  id = @lock.synchronize do
91
91
  id = @id
@@ -96,7 +96,7 @@ module Pwrake
96
96
  prof = [ id, task_id, task_name, cmd,
97
97
  format_time(start_time),
98
98
  format_time(end_time),
99
- "%.3f" % (end_time-start_time),
99
+ "%.6f" % elap_clock,
100
100
  host, ncore, status ]
101
101
  if @gnu_time && gnu_time_status
102
102
  prof.concat(gnu_time_status)
@@ -9,14 +9,14 @@ module Pwrake
9
9
  @fibers = []
10
10
  @idle_fiber = []
11
11
  @q = []
12
- @new_fiber_start_time = Time.now-10
12
+ @new_fiber_start_time = Pwrake.clock-10
13
13
  end
14
14
 
15
15
  def enq(x)
16
16
  @q.push(x)
17
17
  @count += 1
18
18
  if @idle_fiber.empty? and @fibers.size < @max_fiber and
19
- Time.now - @new_fiber_start_time > 0.1
19
+ Pwrake.clock - @new_fiber_start_time > 0.1
20
20
  @idle_fiber << new_fiber
21
21
  end
22
22
  f = @idle_fiber.shift
@@ -23,16 +23,17 @@ module Pwrake
23
23
  init("pwrake") # <- parse options here
24
24
  @role = @master = Master.new
25
25
  t = Time.now
26
+ t = Pwrake.clock
26
27
  @master.setup_branches
27
28
  load_rakefile
28
29
  begin
29
- Log.debug "init: #{Time.now-t} sec"
30
- t = Time.now
30
+ Log.debug "init: #{Pwrake.clock-t} sec"
31
+ t = Pwrake.clock
31
32
  top_level
32
- Log.debug "main: #{Time.now-t} sec"
33
- t = Time.now
33
+ Log.debug "main: #{Pwrake.clock-t} sec"
34
+ t = Pwrake.clock
34
35
  @failed = @master.finish
35
- Log.debug "finish: #{Time.now-t} sec"
36
+ Log.debug "finish: #{Pwrake.clock-t} sec"
36
37
  rescue SystemExit => e
37
38
  @failed = true
38
39
  rescue Exception => e
@@ -49,7 +50,7 @@ module Pwrake
49
50
  @master.kill_end("INT")
50
51
  @failed = true
51
52
  end
52
- Log.info "pwrake elapsed time: #{Time.now-START_TIME} sec"
53
+ Log.info "pwrake elapsed time: %.3f sec"%(Pwrake.clock-START_CLOCK)
53
54
  Kernel.exit(false) if @failed
54
55
  end
55
56
  end
@@ -6,7 +6,7 @@ module Pwrake
6
6
  module MCGP
7
7
 
8
8
  def graph_partition(host_map, target=nil)
9
- t1 = Time.now
9
+ t1 = Pwrake.clock
10
10
  wgts = host_map.group_weight_sum
11
11
  if wgts.size > 1
12
12
  list = wgts.size.times.to_a
@@ -24,7 +24,7 @@ module Pwrake
24
24
  g = GraphTracerNode.new(list,wgts)
25
25
  trace(g,target)
26
26
  g.part_graph
27
- t2 = Time.now
27
+ t2 = Pwrake.clock
28
28
  Pwrake::Log.info "Time for TOTAL Graph Partitioning: #{t2-t1} sec"
29
29
  #g.write_dot('dag2.dot')
30
30
  #exit
@@ -308,7 +308,7 @@ module Pwrake
308
308
 
309
309
  # puts "@vertex_id2name[#{i}]=#{@vertex_id2name[i]}, depth=#{depth}, edges="+@edges[i].map{|x| @vertex_id2name[x[0]]}.join("|")
310
310
 
311
- t1 = Time.now
311
+ t1 = Pwrake.clock
312
312
  if false
313
313
  puts "@vertex_id2name.size=#{@vertex_id2name.size}"
314
314
  if $debug2
@@ -358,7 +358,7 @@ module Pwrake
358
358
  @part = Metis.mc_part_graph_recursive2(
359
359
  c,@xadj,@adjcny,@vwgt,nil,@tpwgts)
360
360
  end
361
- t2 = Time.now
361
+ t2 = Pwrake.clock
362
362
  Pwrake::Log.info "Time for Graph Partitioning: #{t2-t1} sec"
363
363
  count_partition
364
364
  if $debug
@@ -105,14 +105,14 @@ module NBIO
105
105
  end
106
106
 
107
107
  def init_heartbeat
108
- t = Time.now
108
+ t = Pwrake.clock
109
109
  @hb_check_time = t
110
110
  @hb_time = {}
111
111
  @reader.each_key{|io| @hb_time[io] = t}
112
112
  end
113
113
 
114
114
  def check_heartbeat(ios,timeout)
115
- t = Time.now
115
+ t = Pwrake.clock
116
116
  if t - @hb_check_time < 3
117
117
  if ios
118
118
  ios.each do |io|
@@ -6,7 +6,12 @@ require "pwrake/option/host_map"
6
6
 
7
7
  module Pwrake
8
8
 
9
+ def self.clock
10
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
11
+ end
12
+
9
13
  START_TIME = Time.now
14
+ START_CLOCK = Pwrake.clock
10
15
 
11
16
  class Option < Hash
12
17
 
@@ -19,12 +19,12 @@ module Pwrake
19
19
 
20
20
  def pw_search_tasks(args)
21
21
  Log.debug "#{self.class}#pw_search_tasks start, task=#{name} args=#{args.inspect}"
22
- tm = Time.now
22
+ cl = Pwrake.clock
23
23
  task_args = TaskArguments.new(arg_names, args)
24
24
  # not synchronize owing to fiber
25
25
  search_with_call_chain(nil, task_args, InvocationChain::EMPTY)
26
26
  #
27
- Log.debug "#{self.class}#pw_search_tasks end #{Time.now-tm}"
27
+ Log.debug "#{self.class}#pw_search_tasks end #{Pwrake.clock-cl}"
28
28
  end
29
29
 
30
30
  # Same as search, but explicitly pass a call chain to detect
@@ -65,6 +65,7 @@ module Pwrake
65
65
 
66
66
  def preprocess
67
67
  @time_start = Time.now
68
+ @clock_start = Pwrake.clock
68
69
  end
69
70
 
70
71
  def retry?
@@ -77,15 +78,15 @@ module Pwrake
77
78
 
78
79
  def postprocess(postproc)
79
80
  @executed = true if !@task.actions.empty?
80
- #tm_taskend = Time.now
81
+ #tm_taskend = Pwrake.clock
81
82
  if is_file_task?
82
- #t = Time.now
83
+ #t = Pwrake.clock
83
84
  if File.exist?(name)
84
85
  @file_stat = File::Stat.new(name)
85
86
  @location = postproc.run(self)
86
87
  end
87
88
  end
88
- #Log.debug "postprocess time=#{Time.now-tm_taskend}"
89
+ #Log.debug "postprocess time=#{Pwrake.clock-tm_taskend}"
89
90
  log_task
90
91
  end
91
92
 
@@ -109,6 +110,7 @@ module Pwrake
109
110
 
110
111
  def log_task
111
112
  @time_end = Time.now
113
+ @clock_end = Pwrake.clock
112
114
  #
113
115
  sug_host = suggest_location()
114
116
  shell = Pwrake::Shell.current
@@ -118,7 +120,7 @@ module Pwrake
118
120
  end
119
121
  return if !@@task_logger
120
122
  #
121
- elap = @time_end - @time_start
123
+ elap = @clock_end - @clock_start
122
124
  if has_output_file?
123
125
  RANK_STAT.add_sample(rank,elap)
124
126
  end
@@ -148,7 +150,7 @@ module Pwrake
148
150
  # preq_loc exec_host shell_id has_action executed ncore
149
151
  # file_size file_mtime file_host write_loc
150
152
  #
151
- row = [ @task_id, name, @time_start, @time_end, elap,
153
+ row = [ @task_id, name, @time_start, @time_end, "%.6f"%elap,
152
154
  prerequisites, sug_host, preq_loc, @exec_host, @shell_id,
153
155
  (actions.empty?) ? 0 : 1,
154
156
  (@executed) ? 1 : 0,
@@ -1,3 +1,3 @@
1
1
  module Pwrake
2
- VERSION = "2.2.5"
2
+ VERSION = "2.2.6"
3
3
  end
@@ -45,7 +45,7 @@ module Pwrake
45
45
  @option = option
46
46
  @out = Writer.instance
47
47
  @log = LogExecutor.instance
48
- @queue = FiberQueue.new
48
+ @queue = FiberQueue.new(@log)
49
49
  @rd_list = []
50
50
  @dir = dir_class.new
51
51
  @dir.open
@@ -182,9 +182,6 @@ module Pwrake
182
182
  @sh_in.close
183
183
  @sh_out.close
184
184
  @sh_err.close
185
- if @start_process_fiber.alive?
186
- @start_process_fiber.resume # next process
187
- end
188
185
  end
189
186
  end
190
187
  rescue => exc
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pwrake
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.5
4
+ version: 2.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masahiro TANAKA
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-27 00:00:00.000000000 Z
11
+ date: 2018-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  version: '0'
137
137
  requirements: []
138
138
  rubyforge_project:
139
- rubygems_version: 2.6.13
139
+ rubygems_version: 2.7.3
140
140
  signing_key:
141
141
  specification_version: 4
142
142
  summary: Parallel Workflow engine based on Rake