[Gems-users] Collecting Ruby stats for TM


Date: Sun, 29 Nov 2009 22:32:50 -0500
From: Jiří Šimša <jiri.simsa@xxxxxxxxx>
Subject: [Gems-users] Collecting Ruby stats for TM
Hello,

I was able to get the deque microbenchmark to run on a 4 processor Simics checkpoint. Next, I tried collecting information about the use of transactions using Ruby as follows:

I started Simics with my checkpoint that has the binary of deque_TM loaded in and everything is ready to be run.
Next, I did the following in Simics:
simics> instruction-fetch-mode instruction-fetch-trace; dstc-disable; istc-disable; cpu-switch-time 1; load-module ruby
[cpu0 info] Note that on this cpu, instruction-fetch-trace is implemented using instruction-cache-access-trace with a suitable cache line size.
[cpu1 info] Note that on this cpu, instruction-fetch-trace is implemented using instruction-cache-access-trace with a suitable cache line size.
[cpu4 info] Note that on this cpu, instruction-fetch-trace is implemented using instruction-cache-access-trace with a suitable cache line size.
[cpu5 info] Note that on this cpu, instruction-fetch-trace is implemented using instruction-cache-access-trace with a suitable cache line size.
Turning D-STC off and flushing old data
Turning I-STC off and flushing old data
The switch time will change to 1 cycles (for CPU-0) once all processors have synchronized.
successful installation of the ruby timing model.
simics> ruby0.setparam g_NUM_PROCESSORS 4
simics> ruby0.init

Then I ran the benchmark.

Finally, I dumped the stats using ruby0.dump_short_stats. Producing:

simics> ruby0.dump-short-stats

SHORT Profiler Stats
--------------
Virtual_time_in_seconds: 878.31
Virtual_time_in_minutes: 14.6385
Virtual_time_in_hours:   0.243975
Virtual_time_in_days:    0.243975

Ruby_current_time: 24374620
Ruby_start_time: 1
Ruby_cycles: 24374619

Total_misses: 160366
total_misses: 160366 [ 9456 2310 1851 146749 ]
user_misses: 12822 [ 617 529 548 11128 ]
supervisor_misses: 147544 [ 8839 1781 1303 135621 ]

instruction_executed: 83469212 [ 24984755 25572397 25627341 7284719 ]
simics_cycles_executed: 389994915 [ 97498479 97498479 97498479 97499478 ]
cycles_per_instruction: 1.16808 [ 0.97558 0.953161 0.951118 3.34599 ]
misses_per_thousand_instructions: 1.92126 [ 0.378471 0.0903318 0.0722275 20.1448 ]

transactions_started: 0 [ 0 0 0 0 ]
transactions_ended: 0 [ 0 0 0 0 ]
instructions_per_transaction: 0 [ 0 0 0 0 ]
cycles_per_transaction: 0 [ 0 0 0 0 ]
misses_per_transaction: 0 [ 0 0 0 0 ]

...

Anyone could explain to me why is the information about transactions missing? Is there a simple check that I can run to see if the transactional memory subsystem is actually used? Thanks!

Best,

--
Jiri Simsa
Ph.D. Student
Carnegie Mellon University
[← Prev in Thread] Current Thread [Next in Thread→]