01:41
FROGGS_ joined
01:48
ilbot3 joined
03:41
jackc2 joined
|
|||
FROGGS_ | btw, nqp just works using debian++'s libatomoic_ops!! | 04:28 | |
04:30
vendethiel joined
|
|||
nwc10 | good **, FROGGS_ | 04:51 | |
FROGGS_ | aye | 04:57 | |
(all tests pass) | 04:58 | ||
which is a relief | 05:08 | ||
now rakudo has to build, and I'm happy :o) | |||
I've got a ppc64 machine now, but network isnt working yet... | 05:10 | ||
05:16
vendethiel- joined
07:13
domidumont joined
07:18
domidumont joined
08:14
FROGGS joined
|
|||
jnthn | morning, #moarvm | 09:03 | |
nwc10 | good *, jnthn | 09:04 | |
I guess you have fewer FROGGSlets than FROGGS does :-) | |||
jnthn | Indeed | ||
nwc10 | this morning we had a bonus alarm clock that was requesting Cherios from about 06:20 onwards | ||
jnthn | Also probably less capable of making coffee | ||
nwc10 | or was it 06:00 | ||
arnsholt | Tadpoles, surely, not FROGGSlets? =) | ||
nwc10 | I forget | ||
arnsholt | Those twenty minutes make little difference, in my recent experience =) | 09:05 | |
jnthn only managed to get half the spoon of ground coffee into the machine's basket | |||
nwc10 | bootstrapping problems again? | ||
jnthn | Indeed | ||
arnsholt | That's a particularly gnarly bootstrapping problem | 09:06 | |
jnthn | .oO( particularly granually ) |
09:08 | |
arnsholt | Point. In that case, I guess using a French press is better than an espresso machine, seeing how it lets you use a much coarser-grained approach | 09:11 | |
Both in inputs and execution, come to think of it | |||
jnthn | www.brendangregg.com/linuxperf.html is nice | 09:50 | |
timotimo | quite | 09:53 | |
last night before bed i was playing around with having a probe in malloc again | |||
but for some reason the report only showed addresses, not function names for the stack traces | |||
at first i tried running the whole recording thing with sudo (so i didn't have to attach it to a running process) and i thought that was the reason for missing symbols, but it turned out even when i gave every user on my system (that's not dangerous at all!) permission to use the debug/tracing stuff it still wouldn't show | 09:56 | ||
jnthn | Won't something like perf or callgrind be able to tell you all the top malloc callers? | 09:57 | |
timotimo | yup | 09:58 | |
even with a read-out of the size parameter | |||
you can insert a trace point into any library and output any parameters you like - in this case i had to use the name of the register that the calling convention would associate with the parameter i wanted because for some reason the name wasn't in there | 09:59 | ||
jnthn | Maybe we mark the function as a static inline or so | 10:01 | |
timotimo | a stackoverflow post says i might have to give perf report a "-g dwarf" parameter | 10:02 | |
oh, i actually put a probe into libc, not into libmoar | |||
okay, adding the probe to libmoar for "MVM_malloc size" also gives "sorry, we don't support this variable location yet." | 10:06 | ||
it'd be helpful if it told what kind of variable location it's getting, but oh well | 10:07 | ||
Too many( > 128) probe point found. | 10:08 | ||
Failed to find symbol MVM_malloc in /home/timo/perl6/install/lib/libmoar.so | |||
so much for our static inline :) | |||
in any case, the malloc results are: 29.3% size=0x18, 9.19% size=0x8, 8.7% size=0x10, 8.3% size=0x30, 5.91% 0x28, 4.04% size=0x38, 3.77% 0x40, 3.11% 0x20, 2.42% 0xc | 10:22 | ||
after that there's 0x2, 0x4, 0x1c, 0x6, 0x60, 0x68, 0x24, 0xa, 0x78, 0x2c | 10:23 | ||
the last of those was 0.51% | |||
this is for perl6 -e '' basically | |||
jnthn | m: say 0x18 | 10:24 | |
camelia | rakudo-moar 84b4c8: OUTPUTĀ«24ā¤Ā» | ||
jnthn | Hm, that could be many things :) | 10:25 | |
timotimo | right, without a stack trace, it's not easy to say | 10:26 | |
oh, whoops :) | 10:31 | ||
seems like --call-graph dwarf is the flag you actually have to use, but now it's saying it lost "10 chunks" when processing the events | |||
so, looks like too much data on the callstack | 10:32 | ||
given it "processed 195984 events" that could be a lot. record_size is described as "if record_mode is 'dwarf', max size of stack recording (<bytes>) default: 8192 (bytes)" | |||
m: say (195984 * 8) / (1024 * 1024) | 10:33 | ||
camelia | rakudo-moar 84b4c8: OUTPUTĀ«1.495239ā¤Ā» | ||
timotimo | my system is now screaming about the full hard drive | ||
moritz | get a gag order for your system :-) | 10:34 | |
timotimo | i have stacks now! i lost some data again, but oh well ... | 10:37 | |
gist.github.com/timo/7b985bbd50a93...3d8ad65887 | 10:39 | ||
i'm not sure what those symbols "deserialize" are about | 10:43 | ||
impressive, we apparently call MVM_malloc with a size of 1 a few times even | 10:55 | ||
nwc10 | there was a reason that Devel::NYTProf got compressed file output *before* Test::Harness got refactored... | 10:56 | |
(even one profile file written out uncompressed was larger than my laptop's drive) | 10:57 | ||
timotimo | :D | 10:59 | |
arnsholt | timotimo: malloc(1) sounds like the malloc(size_to_allocate > 0 ? size_to_allocate : 1) hack that is (was?) in CStruct | 11:01 | |
Come to think of it, that might be copied from P6opaque | |||
timotimo | haha, ugh :D | 11:03 | |
but i thought malloc(0) gives you a valid pointer? | |||
or rather | |||
arnsholt | Nope | ||
timotimo | a pointer that is valid to call free on | ||
arnsholt | malloc(0) is undefined behaviour | ||
=) | |||
If it's purely MoarVM-internal, it might be possible to replace it with size_to_allocate > 0 ? malloc(size_to_allocate) : NULL | 11:05 | ||
Given that there's nothing to allocate memory for, it should never be accessed either | |||
timotimo | doesn't crash on perl6 -e '' at least | ||
11:18
cygx joined
|
|||
cygx | arnsholt: malloc(0) is implementation-defined, not undefined | 11:18 | |
it may return NULL or a valid pointer | 11:19 | ||
either way, you're fine to call free() on it | |||
arnsholt | Oh, right | ||
ISTR it causing a crash though | |||
cygx | at last, that's how it's supposed to work | ||
*at least | |||
arnsholt | Hmm | 11:20 | |
I remember there being a good reason for this, but now that I reread the manpage I'm not sure anymore what it was | |||
cygx | well, according to the C99 rationale, not that good a reason (a combination of existing practice/implementation and the decision not to introduce zero-length objects for this purpose alone) | 11:25 | |
arnsholt | Oh, maybe it's a MSVC-affordance? | 11:27 | |
That being C89, not C99 | |||
11:57
zakharyas joined
13:55
colomon joined
14:03
brrt joined
|
|||
brrt | good * #moarvm | 14:40 | |
15:21
FROGGS[mobile] joined
|
|||
FROGGS[mobile] | lol, building the setting only took 5.44 hours on my ppc64 qemu machine /o\ | 15:22 | |
diakopter | o_O | 15:31 | |
FROGGS[mobile]: did the libatomicops patches help the other thing? | |||
FROGGS[mobile] | the debian lib (including said patches) makes moarvm work | 15:34 | |
dang, the timings before were for mips, not ppc64 | 15:35 | ||
diakopter: dunno what thing you are talking about | |||
it fixes the nqp segfault I posted the other day | 15:36 | ||
diakopter | yes, that's the thing | 15:37 | |
FROGGS[mobile] | then the answer is yes | ||
diakopter | oh, your mention of ppc64 instead of mips is what confused me | ||
FROGGS[mobile] | yeah, sorry for that | 15:38 | |
I keep loosing track of my machines | |||
17:43
domidumont joined
18:27
FROGGS joined
19:48
brrt joined
20:25
dalek joined
|
|||
timotimo | i wonder if we should make the smallest bin for our fixedsize allocator 4 byte on an arch with 32bit pointers | 20:55 | |
as far as i can tell the biggest reason to have the smallest bin 8 bytes big is that it has to fit a pointer for the free list to work | 20:56 | ||
FROGGS | .tell nebuchadnezzar nqp and rakudo pass their tests on mips64el, it just takes ages to build and test | 21:16 | |
yoleaux2 | FROGGS: I'll pass your message to nebuchadnezzar. | ||
21:38
colomon_ joined
21:56
colomon joined
22:16
colomon joined
|