« Return to Thread: [rvm-research] to utilize methods in syscall

Re: [rvm-research] to utilize methods in syscall

by lltong :: Rate this Message:

Reply to Author | View in Thread

Daniel Frampton wrote:
> Spaces are allocated by global plan classes.
> MMTk/src/org/mmtk/plan/Plan.java is the base class.
>
> It seems that the 'right' thing to do is to wait for for MMTk to mmap
> memory in the space, and then use syscalls after (or instead) to set
> the 'special attributes'.
>  
there comes the problem. These "special attributes" concern with cache
and hardware counters, which can in no way be seen by rvm, thus I wrote
the corresponding codes in C/C++.
> In any case there is no way you can use vmRequest at runtime, which is
> the only time you can use syscalls. vmRequest is for the bootimage
> build-time partitioning of the space.
>  
I understand the errors prompted by the rvm now. Then if I want to map
the special memory space, I need to setup this memory space at the
boot-image build time?
Could you briefly describe the process of initializing heap region or
give me any references?
Thanks.

> Cheers,
> Daniel.
>
> On Fri, Jun 19, 2009 at 5:38 PM, Liangliang Tong<lltong@...> wrote:
>  
>> Dear Robin,
>> Using a custom function, I can create an address space with special
>> attributes. Now I want to use this address chunk as the nursery space of
>> a generational collector.
>> I originally, as described in the first mail, want to use the sysCalls
>> and VMRequest class. That is, to build the custom function into the
>> sysCalls, and use the vmRequest.create(Address address, Extent extent)
>> method to map the special address space into the nursery. It doesn't
>> work, as you see.
>> Then, I am wondering, are there any other ways that I can resort to?
>> Thanks.
>>
>> Regards,
>> Liangliang
>>
>> Robin Garner wrote:
>>    
>>> Liangliang Tong wrote:
>>>
>>>      
>>>> Dear Robin,
>>>>
>>>> Thanks for your reply.
>>>> I am just taking sysMalloc as an example, the actual method I called is
>>>> another custom allocation function implemented by myself. This function
>>>> applies special characteristics to the allocated memory chunk, which I
>>>> hope to use as a nursery space. Rawpagespace does not help.
>>>> In this case, what am I supposed to do in order to achieve my target?
>>>> Thanks.
>>>>
>>>>
>>>>        
>>> I'm not sure I understand what your target is - perhaps you could use a
>>> better example ?
>>>
>>> I've outlined the steps you need to follow in order to make an arbitrary
>>> syscall (and for more details, follow a method like 'dzmmap' through the
>>> interface).
>>>
>>> If you want to implement a new allocator (at the object level), then
>>> what you want to do is sub-class Space and Allocator for the global and
>>> thread-local components of the allocator.  If you want to change how a
>>> Space acquires pages from the OS, then you should create a new
>>> PageResource and define or modify a sub-class of Space that uses it.
>>>
>>> If you need more explanation, please tell us in more detail what it is
>>> you're trying to do.
>>>
>>> Regards,
>>> Robin
>>>
>>>      
>>>> Regards,
>>>> Liangliang
>>>>
>>>> Robin Garner wrote:
>>>>
>>>>
>>>>        
>>>>> Liangliang Tong wrote:
>>>>>
>>>>>
>>>>>
>>>>>          
>>>>>> Dear all,
>>>>>>
>>>>>> In org.mmtk.plan.generational.Gen.java, I want to modify the vmRequest
>>>>>> to request for an explicit region of memory, like the following:
>>>>>>    private static final VMRequest vmRequest =
>>>>>> VMRequest.create(sysCall.sysMalloc(1 << 20),  Extent.fromIntSignExtend(1
>>>>>> << 20));
>>>>>> correspondingly I add a new import statement:
>>>>>>  import static org.jikesrvm.runtime.SysCall.sysCall;
>>>>>>
>>>>>> Yet when I complied the generational copy plan, it prompts these errors:
>>>>>> compile-mmtk:
>>>>>>     [javac] Compiling 1 source file to
>>>>>> /home/lltong/jikesrvm/target/mmtk/classes
>>>>>>     [javac]
>>>>>> /home/lltong/jikesrvm/MMTk/src/org/mmtk/plan/crgenerational/CRGen.java:33:
>>>>>> package org.jikesrvm.runtime does not exist
>>>>>>     [javac] import static org.jikesrvm.runtime.SysCall.sysCall;
>>>>>>     [javac]                                   ^
>>>>>>     [javac]
>>>>>> /home/lltong/jikesrvm/MMTk/src/org/mmtk/plan/crgenerational/CRGen.java:33:
>>>>>> static import only from classes and interfaces
>>>>>>     [javac] import static org.jikesrvm.runtime.SysCall.sysCall;
>>>>>>     [javac] ^
>>>>>>     [javac]
>>>>>> /home/lltong/jikesrvm/MMTk/src/org/mmtk/plan/crgenerational/CRGen.java:91:
>>>>>> cannot find symbol
>>>>>>     [javac] symbol  : variable sysCall
>>>>>>     [javac] location: class org.mmtk.plan.crgenerational.CRGen
>>>>>>
>>>>>> Why should this happen? Thanks in advance.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>            
>>>>> Hi Liangliang,
>>>>>
>>>>> As far as I can see, you are trying to request a 1MB chunk of memory,
>>>>> and you don't care where in the heap it is.  Is this right ?
>>>>>
>>>>>
>>>>> MMTk uses the 'Space' class to abstract over various ways to allocate
>>>>> memory.  If you simply want a 1MB chunk of raw memory, then you can do
>>>>>
>>>>>   RawPageSpace mySpace = new RawPageSpace("mySpace", Integer.MAX_VALUE,
>>>>> VMRequest.create());
>>>>>   Address chunkAddr = mySpace.acquire(1<<(20-LOG_BYTES_IN_PAGE));
>>>>>
>>>>> If you're using memory as storage for your collector, you should
>>>>> probably allocate it in the existing metaDataSpace.  If you're
>>>>> allocating it to give to the mutator, you should probably define a new
>>>>> space for it.
>>>>>
>>>>> Note that a VMRequest is simply a way to communicate your virtual memory
>>>>> layout requirements to the Space class, and passing it a chunk of
>>>>> 'malloc'ed memory doesn't make a great deal of sense.  In fact MMTk
>>>>> itself generally takes the place of 'malloc' in the virtual machine.
>>>>>
>>>>>
>>>>> The reason you can't directly call sysMalloc from MMTk is that MMTk
>>>>> separates itself from JikesRVM (and its various other host environments)
>>>>> via the org.mmtk.vm package (the VM interface).  In order to call a new
>>>>> method on the JikesRVM side of the fence you need to:
>>>>>
>>>>> - Choose an interface class to host the method (eg org.mmtk.vm.Memory)
>>>>> - Add an abstract method to the interface class
>>>>> - Add a concrete method to the implementation on the VM side of the
>>>>> fence (for JikesRVM that is org.jikesrvm.mm.mmtk, in the
>>>>> MMTk/ext/vm/jikesrvm directory)
>>>>>
>>>>> but I think it would generally be a bad idea for you to allocate memory
>>>>> for JikesRVM using sysMalloc.
>>>>>
>>>>> Regards,
>>>>> Robin
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> Crystal Reports - New Free Runtime and 30 Day Trial
>>>>> Check out the new simplified licensing option that enables unlimited
>>>>> royalty-free distribution of the report engine for externally facing
>>>>> server and web deployment.
>>>>> http://p.sf.net/sfu/businessobjects
>>>>> _______________________________________________
>>>>> Jikesrvm-researchers mailing list
>>>>> Jikesrvm-researchers@...
>>>>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>          
>>>>        
>>> ------------------------------------------------------------------------------
>>> Crystal Reports - New Free Runtime and 30 Day Trial
>>> Check out the new simplified licensing option that enables unlimited
>>> royalty-free distribution of the report engine for externally facing
>>> server and web deployment.
>>> http://p.sf.net/sfu/businessobjects
>>> _______________________________________________
>>> Jikesrvm-researchers mailing list
>>> Jikesrvm-researchers@...
>>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>>
>>>
>>>      
>> --
>> Regards,
>> Liangliang Tong
>>
>>
>> ------------------------------------------------------------------------------
>> Crystal Reports - New Free Runtime and 30 Day Trial
>> Check out the new simplified licensing option that enables unlimited
>> royalty-free distribution of the report engine for externally facing
>> server and web deployment.
>> http://p.sf.net/sfu/businessobjects
>> _______________________________________________
>> Jikesrvm-researchers mailing list
>> Jikesrvm-researchers@...
>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>
>>    
>
> ------------------------------------------------------------------------------
> Crystal Reports - New Free Runtime and 30 Day Trial
> Check out the new simplified licensing option that enables unlimited
> royalty-free distribution of the report engine for externally facing
> server and web deployment.
> http://p.sf.net/sfu/businessobjects
> _______________________________________________
> Jikesrvm-researchers mailing list
> Jikesrvm-researchers@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>
>  


--
Regards,
Liangliang Tong


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

 « Return to Thread: [rvm-research] to utilize methods in syscall