Re: [rvm-research] ask a question about the replay mode
王晨曦 <[email protected]>
| Newsgroups | gmane.comp.java.jikes.rvm.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Michael,
Thank you for advice.
Yes, the opt compiler has got stuck.
My build config is production.
Because I have insert some VM.sysWrite() in the
adaptive.controller.HotMethodRecompilationEvent.java
public void process()
@Override
public void process() {
ControllerPlan plan = Controller.recompilationStrategy.considerHotMethod(getCompiledMethod(), this);
ControllerMemory.incrementNumMethodsConsidered();
//debug: calculate each level's num
int level = plan.getCompPlan().options.getOptLevel();
if( level <=3 )
levelNum[level]++;
else if(level >3)
levelNum[3]++;
// If plan is still null we decided not to recompile.
if (plan != null) {
plan.execute();
}
VM.sysWrite("level 0:");
VM.sysWriteln(levelNum[0]);
VM.sysWrite("level 1:");
VM.sysWriteln(levelNum[1]);
VM.sysWrite("level 2:");
VM.sysWriteln(levelNum[2]);
VM.sysWrite("level >= 3:");
VM.sysWriteln(levelNum[3]);
}
May be the inserted print functions make the overhead of the optimizing process very high.
And let the AOS never perform any optPlanElement ?
(but as the above process()’s show, I think the controllerPlan’s creating has nothing to do with the inserted VM.sysWrite )
or maybe the print functions just block the opt compiler.
anyway, after I deleted the inserted print functions in the process(),
the output in the ConvertBCtoHIR's perform() is ok.
Chenxi Wang
> 在 2015年8月31日,下午11:40,Michael Bond <[email protected]> 写道:
>
> Hi Chenxi,
>
> You can also add -X:opt:verbose=true to the command line to see which
> methods the opt compiler is compiling (to cross-check that your printlns
> are executing at all of the expected times).
>
> Which config are you building -- I guess it's FullAdaptive or
> FastAdaptive since BC2HIRCounter is already large when Jikes RVM starts
> running?
>
> Have you made any other changes to Jikes RVM? It's possible the opt
> compiler thread is getting stuck when compiling some method, so it never
> gets to compile any other methods after that.
>
> Cheers,
> Mike
>
> On 08/31/2015 10:24 AM, 王晨曦 wrote:
>> hi,everyone
>>
>> I have some doubts about the AOS and opt Compiler.
>>
>> according to the masterPlan’s initializer:
>>
>> private static void initializeMasterPlan() {
>> ArrayList<OptimizationPlanElement> temp = new ArrayList<OptimizationPlanElement>();
>> BC2HIR(temp);
>> HIROptimizations(temp);
>> HIR2LIR(temp);
>> LIROptimizations(temp);
>> MIROptimizationPlanner.intializeMasterPlan(temp);
>> masterPlan = toArray(temp);
>> }
>>
>>
>> the BC2HIR is a basic composite plan and has an optimizing Plan element: new ConvertBCtoHIR(),
>> This optPlanElement will be invoked in any opt level. (0 1 2 3)
>> I have inserted some print functions in the ConvertBCtoHIR’s perform() function, and run the rvm on dacapo:
>> rvm -Xmx1024M -jar dacapo-9.12-bach.jar -n 5 $bench
>>
>> insert VM.sysWrite in ConvertBCtoHIR’s perform():
>>
>> public void perform(IR ir) {
>> // Generate the cfg into gc
>> GenerationContext gc = new GenerationContext(ir.method, ir.params, ir.compiledMethod, ir.options, ir.inlinePlan);
>> BC2IR.generateHIR(gc);
>> // Transfer HIR and misc state from gc to the ir object
>> ir.gc = gc;
>> ir.cfg = gc.getCfg();
>> ir.regpool = gc.getTemps();
>> if (gc.requiresStackFrame()) {
>> ir.stackManager.forceFrameAllocation();
>> }
>>
>> ir.IRStage = IR.HIR;
>> ir.HIRInfo = new HIRInfo(ir);
>>
>> //debug
>> BC2HIRCounter++;
>> VM.sysWrite("In ConvertBCtoHIR:perform() :BC2HIRCounter:");
>> VM.sysWriteln(BC2HIRCounter);
>> VM.sysWrite("optLevel:");
>> VM.sysWriteln(ir.options.getOptLevel());
>>
>> }
>>
>>
>> but only in few warmups(such the sunflowers first warmup) the print functions run ,and the ir.options.getOptLevel always 0.
>> In my opinion, as long as the opt compiler run, the ConvertBC2toHIR’s perform() will run.
>> if any warmup's performance promotes, the inserted VM.sysWrite will print the compiled methods’ opt level.
>>
>> 6 ===== DaCapo bloat starting warmup =====
>> 7 In ConvertBCtoHIR:perform() :BC2HIRCounter:21949
>> 8 optLevel:0
>> 9 Optimized with: EDU.purdue.cs.bloat.optimize.Main -only EDU.purdue.cs.bloat.trans -pre -dce -diva -prop -stack-alloc -peel-loops all -f EDU.purdue.cs.bloat .trans.CompactArrayInitializer ./scratch/optimizedcode
>> 10 ===== DaCapo bloat completed warmup in 9497 msec =====
>> 11 ===== DaCapo bloat starting warmup =====
>> 12 Optimized with: EDU.purdue.cs.bloat.optimize.Main -only EDU.purdue.cs.bloat.trans -pre -dce -diva -prop -stack-alloc -peel-loops all -f EDU.purdue.cs.bloat .trans.CompactArrayInitializer ./scratch/optimizedcode
>> 13 ===== DaCapo bloat completed warmup in 9706 msec =====
>> 14 ===== DaCapo bloat starting warmup =====
>> 15 Optimized with: EDU.purdue.cs.bloat.optimize.Main -only EDU.purdue.cs.bloat.trans -pre -dce -diva -prop -stack-alloc -peel-loops all -f EDU.purdue.cs.bloat .trans.CompactArrayInitializer ./scratch/optimizedcode
>> 16 ===== DaCapo bloat completed warmup in 8634 msec =====
>> 17 ===== DaCapo bloat starting warmup =====
>> 18 Optimized with: EDU.purdue.cs.bloat.optimize.Main -only EDU.purdue.cs.bloat.trans -pre -dce -diva -prop -stack-alloc -peel-loops all -f EDU.purdue.cs.bloat .trans.CompactArrayInitializer ./scratch/optimizedcode
>> 19 ===== DaCapo bloat completed warmup in 9640 msec =====
>> 20 ===== DaCapo bloat starting =====
>> 21 Optimized with: EDU.purdue.cs.bloat.optimize.Main -only EDU.purdue.cs.bloat.trans -pre -dce -diva -prop -stack-alloc -peel-loops all -f EDU.purdue.cs.bloat .trans.CompactArrayInitializer ./scratch/optimizedcode
>> 22 ===== DaCapo bloat PASSED in 8365 msec =====
>>
>>
>> 113 dacapo-9.12-bach
>> 114 ===== DaCapo 9.12 luindex starting warmup 1 =====
>> 115 ===== DaCapo 9.12 luindex completed warmup 1 in 3655 msec =====
>> 116 ===== DaCapo 9.12 luindex starting warmup 2 =====
>> 117 ===== DaCapo 9.12 luindex completed warmup 2 in 3394 msec =====
>> 118 ===== DaCapo 9.12 luindex starting warmup 3 =====
>> 119 ===== DaCapo 9.12 luindex completed warmup 3 in 3467 msec =====
>> 120 ===== DaCapo 9.12 luindex starting warmup 4 =====
>> 121 ===== DaCapo 9.12 luindex completed warmup 4 in 3468 msec =====
>> 122 ===== DaCapo 9.12 luindex starting =====
>> 123 ===== DaCapo 9.12 luindex PASSED in 3383 msec =====
>> 124 Using scaled threading model. 24 processors detected, 24 threads used to drive the workload, in a possible range of [1,256]
>> 125 Header Chunk. Image width:256 height:256 depth:8 color type:2 compression type:0 filter type:0 interlace:0
>> 126 ===== DaCapo 9.12 sunflow starting warmup 1 =====
>> 127 In ConvertBCtoHIR:perform() :BC2HIRCounter:21949
>> 128 optLevel:0
>> 129 In ConvertBCtoHIR:perform() :BC2HIRCounter:21950
>> 130 optLevel:0
>> 131 In ConvertBCtoHIR:perform() :BC2HIRCounter:21951
>> 132 optLevel:0
>> 133 ===== DaCapo 9.12 sunflow completed warmup 1 in 23058 msec =====
>> 134 Header Chunk. Image width:256 height:256 depth:8 color type:2 compression type:0 filter type:0 interlace:0
>> 135 ===== DaCapo 9.12 sunflow starting warmup 2 =====
>> 136 ===== DaCapo 9.12 sunflow completed warmup 2 in 22284 msec =====
>> 137 Header Chunk. Image width:256 height:256 depth:8 color type:2 compression type:0 filter type:0 interlace:0
>> 138 ===== DaCapo 9.12 sunflow starting warmup 3 =====
>> 139 ===== DaCapo 9.12 sunflow completed warmup 3 in 22401 msec =====
>> 140 Header Chunk. Image width:256 height:256 depth:8 color type:2 compression type:0 filter type:0 interlace:0
>> 141 ===== DaCapo 9.12 sunflow starting warmup 4 =====
>> 142 ===== DaCapo 9.12 sunflow completed warmup 4 in 22678 msec =====
>> 143 Header Chunk. Image width:256 height:256 depth:8 color type:2 compression type:0 filter type:0 interlace:0
>> 144 ===== DaCapo 9.12 sunflow starting =====
>> 145 ===== DaCapo 9.12 sunflow PASSED in 21277 msec =====
>> 146 Using scaled threading model. 24 processors detected, 24 threads used to drive the workload, in a possible range of [1,100]
>> 147 In ConvertBCtoHIR:perform() :BC2HIRCounter:21949
>> 148 optLevel:0
>> 149 ===== DaCapo 9.12 xalan starting warmup 1 =====
>> 150 Normal completion.
>> 151 ===== DaCapo 9.12 xalan completed warmup 1 in 4354 msec =====
>> 152 ===== DaCapo 9.12 xalan starting warmup 2 =====
>> 153 Normal completion.
>> 154 ===== DaCapo 9.12 xalan completed warmup 2 in 3891 msec =====
>> 155 ===== DaCapo 9.12 xalan starting warmup 3 =====
>> 156 Normal completion.
>> 157 ===== DaCapo 9.12 xalan completed warmup 3 in 3862 msec =====
>> 158 ===== DaCapo 9.12 xalan starting warmup 4 =====
>> 159 Normal completion.
>> 160 ===== DaCapo 9.12 xalan completed warmup 4 in 3867 msec =====
>> 161 ===== DaCapo 9.12 xalan starting =====
>> 162 Normal completion.
>> 163 ===== DaCapo 9.12 xalan PASSED in 3812 msec =====
>>
>> Why bloat,luindex, xalan almost has nothing to print ?
>> what’s wrong in my idea?
>>
>> Chenxi Wang
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> Jikesrvm-researchers mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Jikesrvm-researchers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
------------------------------------------------------------------------------
_______________________________________________
Jikesrvm-researchers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers