Skip to content

Commit f05aa62

Browse files
authored
Save ZJIT stats_string to JSON output for stats collection (#475)
When RubyVM::ZJIT.stats_enabled? is true and stats_string is available, include it in the JSON output as zjit_stats_string so rubybench can read it from the result file.
1 parent e43813c commit f05aa62

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

harness/harness-common.rb

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ def get_maxrss
136136
YB_OUTPUT_FILE = File.expand_path yb_env_var
137137

138138
def return_results(warmup_iterations, bench_iterations)
139-
yjit_bench_results = {
139+
ruby_bench_results = {
140140
"RUBY_DESCRIPTION" => RUBY_DESCRIPTION,
141141
"warmup" => warmup_iterations,
142142
"bench" => bench_iterations,
@@ -148,14 +148,14 @@ def return_results(warmup_iterations, bench_iterations)
148148

149149
# Collect our own peak mem usage as soon as reasonable after finishing the last iteration.
150150
rss = get_rss
151-
yjit_bench_results["rss"] = rss
151+
ruby_bench_results["rss"] = rss
152152
if maxrss = get_maxrss
153-
yjit_bench_results["maxrss"] = maxrss
153+
ruby_bench_results["maxrss"] = maxrss
154154
end
155155

156156
# If YJIT or ZJIT is enabled, show some of its stats unless it does by itself.
157157
if yjit_stats
158-
yjit_bench_results["yjit_stats"] = yjit_stats
158+
ruby_bench_results["yjit_stats"] = yjit_stats
159159
if !RubyVM::YJIT.stats_enabled?
160160
stats_keys = [
161161
*ENV.fetch("YJIT_BENCH_STATS", "").split(",").map(&:to_sym),
@@ -168,7 +168,7 @@ def return_results(warmup_iterations, bench_iterations)
168168
puts "YJIT stats:"
169169
end
170170
elsif zjit_stats
171-
yjit_bench_results["zjit_stats"] = zjit_stats
171+
ruby_bench_results["zjit_stats"] = zjit_stats
172172
if defined?(RubyVM::ZJIT.stats_enabled?) && !RubyVM::ZJIT.stats_enabled?
173173
stats_keys = [
174174
*ENV.fetch("ZJIT_BENCH_STATS", "").split(",").map(&:to_sym),
@@ -180,6 +180,8 @@ def return_results(warmup_iterations, bench_iterations)
180180
:invalidation_time_ns,
181181
].uniq
182182
puts "ZJIT stats:"
183+
elsif defined?(RubyVM::ZJIT.stats_string)
184+
ruby_bench_results["zjit_stats_string"] = RubyVM::ZJIT.stats_string
183185
end
184186
end
185187
if stats_keys
@@ -204,10 +206,10 @@ def return_results(warmup_iterations, bench_iterations)
204206
puts "MAXRSS: %.1fMiB" % (maxrss / 1024.0 / 1024.0)
205207
end
206208

207-
write_json_file(yjit_bench_results)
209+
write_json_file(ruby_bench_results)
208210
end
209211

210-
def write_json_file(yjit_bench_results)
212+
def write_json_file(ruby_bench_results)
211213
require "json"
212214

213215
out_path = YB_OUTPUT_FILE
@@ -216,7 +218,7 @@ def write_json_file(yjit_bench_results)
216218
# Using default path? Print where we put it.
217219
puts "Writing file #{out_path}" unless ENV["RESULT_JSON_PATH"]
218220

219-
File.write(out_path, JSON.pretty_generate(yjit_bench_results))
221+
File.write(out_path, JSON.pretty_generate(ruby_bench_results))
220222
rescue LoadError
221223
warn "Failed to write JSON file: #{$!.message}"
222224
end

0 commit comments

Comments
 (0)