From: Lucas S. <ls...@ca...> - 2016-06-03 16:34:10
|
Hello, I would like to use JikesRVM and MMTk for my masters project, but it doesn't seem to work properly. I downloaded it, set up the MMTk environment in Eclipse and I can successfully run different garbage collectors. But some of the command line options(which I set in the Run configurations menu in Eclipse) don't seem to be working at all, for example "MMTk/harness/test-scripts/Lists.script plan=MS verbose=1 gcEvery=ALLOC" only executes three GC runs, so clearly not after every allocation. Similarly when I add "trace=OBJECT" or "trace=TRACEOBJECT" I would expect some tracing output but I see none. Am I missing something obvious here? Thanks a lot, Lucas |
From: Erik B. <eri...@gm...> - 2016-06-05 09:49:12
|
Hi, On 03.06.2016 18:34, Lucas Sonnabend wrote: > I would like to use JikesRVM and MMTk for my masters project, but it > doesn't seem to work properly. [...] > But some of the command line options(which I set in the Run > configurations menu in Eclipse) don't seem to be working at all, for example > "MMTk/harness/test-scripts/Lists.script plan=MS verbose=1 gcEvery=ALLOC" > only executes three GC runs, so clearly not after every allocation. > Similarly when I add "trace=OBJECT" or "trace=TRACEOBJECT" I would > expect some tracing output but I see none. > > Am I missing something obvious here? You're not missing anything. The options that you're using are currently not implemented properly. For gcEvery=ALLOC, the method org.mmtk.harness.Mutator.gc() will be called. This method currently doesn't do anything. The trace options are implemented in org.mmtk.harness.lang.Trace. If you check the uses of OBJECT and TRACEOBJECT, you'll notice that: - OBJECT has no uses in the current harness code - TRACEOBJECT is only used if traceObject from the Debug class is called Kind regards, Erik Brangs |
From: Lucas S. <ls...@ca...> - 2016-06-05 16:20:40
|
Ok, thanks. Is there an easy way to make it support the gcEvery=Alloc option? After having a look at the code I tried it with implementing the gc() method as follows: public void gc() { Plan.controlCollectorContext.request(); VM.collection.blockForGC(); } That caused a collection after each allocation, but it also made my test (the Lists script) fail and it never seems to actually collect any garbage. Lucas On 05/06/16 10:48, Erik Brangs wrote: > Hi, > > On 03.06.2016 18:34, Lucas Sonnabend wrote: >> I would like to use JikesRVM and MMTk for my masters project, but it >> doesn't seem to work properly. [...] >> But some of the command line options(which I set in the Run >> configurations menu in Eclipse) don't seem to be working at all, for example >> "MMTk/harness/test-scripts/Lists.script plan=MS verbose=1 gcEvery=ALLOC" >> only executes three GC runs, so clearly not after every allocation. >> Similarly when I add "trace=OBJECT" or "trace=TRACEOBJECT" I would >> expect some tracing output but I see none. >> >> Am I missing something obvious here? > You're not missing anything. The options that you're using are currently not implemented properly. > > For gcEvery=ALLOC, the method org.mmtk.harness.Mutator.gc() will be called. This method currently doesn't do anything. > > The trace options are implemented in org.mmtk.harness.lang.Trace. If you check the uses of OBJECT and TRACEOBJECT, you'll notice that: > - OBJECT has no uses in the current harness code > - TRACEOBJECT is only used if traceObject from the Debug class is called > > > Kind regards, > > Erik Brangs > > ------------------------------------------------------------------------------ > What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic > patterns at an interface-level. Reveals which users, apps, and protocols are > consuming the most bandwidth. Provides multi-vendor support for NetFlow, > J-Flow, sFlow and other flows. Make informed decisions using capacity > planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e > _______________________________________________ > Jikesrvm-researchers mailing list > Jik...@li... > https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers |
From: Robin G. <rob...@gm...> - 2016-06-06 01:09:26
|
Looks like this was broken 7 years ago, when we switched to pure native threads. The issue is fixed in git HEAD now, or see https://xtenlang.atlassian.net/browse/RVM-1148 for a patch. As Erik notes, the various trace options are a little patchy. Many of them are only really useful if you are debugging the harness itself, and in a great many cases, you need to insert trace code into MMTk itself in order to get anything useful. Traces that are known to be working and useful are AVBYTE COLLECT ALLOC and the various 'watch' options. Apart from this, I think the Harness is in pretty good shape overall - I was using it extensively while doing the 64-bit MMTk work. If you have any other issues with it, I'm keen to help as quickly as I can. regards, Robin On 06/06/16 02:20, Lucas Sonnabend wrote: > Ok, thanks. > > Is there an easy way to make it support the gcEvery=Alloc option? > > After having a look at the code I tried it with implementing the gc() > method as follows: > > public void gc() { > Plan.controlCollectorContext.request(); > VM.collection.blockForGC(); > } > > That caused a collection after each allocation, but it also made my test > (the Lists script) fail and it never seems to actually collect any garbage. > > Lucas > > On 05/06/16 10:48, Erik Brangs wrote: >> Hi, >> >> On 03.06.2016 18:34, Lucas Sonnabend wrote: >>> I would like to use JikesRVM and MMTk for my masters project, but it >>> doesn't seem to work properly. [...] >>> But some of the command line options(which I set in the Run >>> configurations menu in Eclipse) don't seem to be working at all, for example >>> "MMTk/harness/test-scripts/Lists.script plan=MS verbose=1 gcEvery=ALLOC" >>> only executes three GC runs, so clearly not after every allocation. >>> Similarly when I add "trace=OBJECT" or "trace=TRACEOBJECT" I would >>> expect some tracing output but I see none. >>> >>> Am I missing something obvious here? >> You're not missing anything. The options that you're using are currently not implemented properly. >> >> For gcEvery=ALLOC, the method org.mmtk.harness.Mutator.gc() will be called. This method currently doesn't do anything. >> >> The trace options are implemented in org.mmtk.harness.lang.Trace. If you check the uses of OBJECT and TRACEOBJECT, you'll notice that: >> - OBJECT has no uses in the current harness code >> - TRACEOBJECT is only used if traceObject from the Debug class is called >> >> >> Kind regards, >> >> Erik Brangs >> >> ------------------------------------------------------------------------------ >> What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic >> patterns at an interface-level. Reveals which users, apps, and protocols are >> consuming the most bandwidth. Provides multi-vendor support for NetFlow, >> J-Flow, sFlow and other flows. Make informed decisions using capacity >> planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e >> _______________________________________________ >> Jikesrvm-researchers mailing list >> Jik...@li... >> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers > > > ------------------------------------------------------------------------------ > What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic > patterns at an interface-level. Reveals which users, apps, and protocols are > consuming the most bandwidth. Provides multi-vendor support for NetFlow, > J-Flow, sFlow and other flows. Make informed decisions using capacity > planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e > _______________________________________________ > Jikesrvm-researchers mailing list > Jik...@li... > https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers > |