github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
timotimo | > top objects by size | 01:39 | |
[...] | |||
Parameter 1,834,232 bytes | 01:40 | ||
<anon MVMStaticFrameSpesh> 1,232,880 bytes | |||
<anon MVMSpeshLog> 786,592 bytes | |||
Method 753,920 bytes | |||
by count: | |||
<anon MVMStaticFrameSpesh> 4,242 | |||
(there is only a single MVMSpeshLog it seems like) | 01:41 | ||
it does have a whole crapton of references in it | 01:42 | ||
MasterDuke | it would be nice if --full-cleanup didn't segv | 02:15 | |
samcv | MasterDuke, yeah i used heaptrack to profile | 06:33 | |
any tips are welcome | |||
samcv puts on a cup of tea | 06:35 | ||
11:12
lizmat joined
11:49
MasterDuke left
|
|||
nine | timotimo: are you still confused about the size/flags arg? The 2 lowest bits are about endianness. The next 2 bits are the log2 of the size in bytes, i.e. 0 -> 1 byte, 1 -> 2 bytes -> 2 -> 4 bytes, 3 -> 8 bytes | 11:55 | |
timotimo | nine: ok, but why does it decide whether to shift by 1 or 2 to get the size? | 11:57 | |
12:04
lizmat left
|
|||
nine | timotimo: just noticed that and testing the fix | 12:08 | |
Geth | MoarVM: 81284a077a | (Stefan Seifert)++ | src/jit/graph.c Remove leftover bootstrap workaround - difference in readint's flags field When implementing endian switching for (read|write)u?int I discovered that I needed 2 bits for encoding endianness information. To get through NQP's bootstrap I temorarily took an unset endianness flat to signify the old 1 bit interpretation of the flags field. Apparently I forgot to remove the workaround in readuint's JIT implementation. Many thanks to timotimo++ for the discovery! |
12:14 | |
nine | timotimo: there you go :) Sorry for the confusion | ||
timotimo | \o/ | ||
gzip allows storing an arbitrary null-terminated string in each block's header | 12:28 | ||
and with FULL_FLUSH, a new block can be decompressed on its own without accessing earlier blocks | 12:29 | ||
ebay engineers have figured out that the extra space needed for indices into the blocks in every block's comment isn't too big | |||
and having these indices allows splitting gzipped files across multiple computation nodes | 12:30 | ||
it'd be cool if the heap snapshot files wouldn't easily balloon up past gigabytes | |||
gzip almost gets the file size down to 1/10 | 12:33 | ||
even with -1 this one file goes from 115 megs to 23; whatever the default flag was got it down to 19 | 12:34 | ||
i can't help but feel i can squeeze a bit more out of the format i already have | 12:43 | ||
looking at it through xxd shows a whole lot of zeroes | |||
12:54
lucasb joined
|
|||
timotimo | anyway, i investigated why sometimes there's objects without a name in the heap snapshot and it was a simple fix, yay | 13:12 | |
oh, collectables aren't even variable-sized, only references are | 13:28 | ||
though i think references tend to be a few times as big in total | |||
cool. about 30% of all refs have only the cindex field set at all (with descr and kind both being 0) and out of those, 25% fit the cindex value into 16bit | 14:36 | ||
16:28
lizmat joined
|
|||
timotimo | i'd really like for the heap snapshots to become about 50% smaller still ... but i don't think i can get that very easily | 18:09 | |
so maybe using zlib would be smarter | 18:35 | ||
only for writing out until the user wants to access it? | 18:38 | ||
18:48
MasterDuke joined,
MasterDuke left,
MasterDuke joined
|
|||
MasterDuke | timotimo: or zstd perhaps? | 18:48 | |
timotimo | MasterDuke: is zstd a cheap dependency? | 19:38 | |
MasterDuke | timotimo: dunno | 19:45 | |
timotimo | zlib is, like, everywhere | 20:02 | |
20:10
Util left
20:11
Util joined
21:14
Kaiepi left
21:15
Kaiepi joined
21:25
Kaiepi left
21:26
Kaiepi joined
|