[Vm-dev] Measuring allocations
Levente Uzonyi
leves at caesar.elte.hu
Fri Jun 2 10:59:25 UTC 2017
You should be able do that in your image by replacing #basicNew,
#basicNew: and #shallowCopy with method wrappers which would sum up the
size of the allocated objects in ProcessLocalVariables before returning
the new objects.
Levente
On Thu, 1 Jun 2017, Jan Vrany wrote:
>
> On Thu, 2017-06-01 at 07:52 -0700, Eliot Miranda wrote:
>>
>> Hi Jan,
>>
>> > On Jun 1, 2017, at 1:17 AM, Jan Vrany <jan.vrany at fit.cvut.cz>
>> > wrote:
>> >
>> >
>> > Hi folks,
>> >
>> > Having a Spur VM, I wonder how to measure heap allocations made
>> > by a process executing a particular block, from within the image.
>> > For example, let's have following block:
>> >
>> > [
>> > | a |
>> >
>> > 100 timesRepeat: [
>> > a := Array new: 100
>> > ]
>> > ].
>> >
>> > When run, this block allocates - if I'm correct - some 100 *
>> > (<object
>> > header size> + 4*100) bytes.
>>
>> Plus the block arg to timesRepeat:. And the size of an Array in 32-
>> bits is
>>
>
> Sure, sure. The exact number is not important for me right now.
>
>> > Note that:
>> > * Ideally, I'd like to exclude allocations made by other threads
>>
>> Then run at high priority.
>
> Good point, thanks. I always forget about that.
>
>>
>> > but having allocations made by all threads would be OK too.
>> > * Block can span multiple scavenges even oldspace collects.
>> > * As shown in the example above, I need to take garbage into
>> > an account.
>> >
>> > How to best measure this?
>>
>> What exactly do you want to measure?
>
> I want to know how much given code allocates. For example that
> given piece of code in total allocated 2.5GB. Say.
>
>
>> There is no allocation count, as that would slow down allocation.
>
> Fair enough.
>
>> Time taken to allocate would be derived by sending timeTiRun to the
>> above and subtracting the time for a null loop to run, and the time
>> taken in GC.
>>
>> The time taken in GC is maintained by the vm. See vmParameterAt: and
>> surrounding. If you open the About Squeak dialog in a Squeak image
>> this is nicely displayed in the VM Stats tab (IIRC).
>
> It is indeed. But in this case I'm not interested in time spent in GC
> :-)
>
> Thanks, Jan
More information about the Vm-dev
mailing list