josh-k has quit [Remote host closed the connection]
josh-k has joined #rubinius
carlosgaldino has joined #rubinius
meh` has quit [Ping timeout: 250 seconds]
josh-k has quit [Read error: Connection reset by peer]
jnh has joined #rubinius
josh-k has joined #rubinius
josh-k has quit [Read error: Connection reset by peer]
josh-k has joined #rubinius
dimday has joined #rubinius
josh-k has quit [Remote host closed the connection]
josh-k has joined #rubinius
josh-k has quit [Remote host closed the connection]
josh-k has joined #rubinius
josh-k has quit [Ping timeout: 265 seconds]
lbianc has quit [Ping timeout: 240 seconds]
exgf has joined #rubinius
josh-k has joined #rubinius
josh-k_ has joined #rubinius
o0oo0o has joined #rubinius
josh-k has quit [Ping timeout: 260 seconds]
josh-k_ has quit [Remote host closed the connection]
josh-k has joined #rubinius
josh-k has quit [Ping timeout: 264 seconds]
btcctf has joined #rubinius
<btcctf> anyone know if rubinius will allow me to solve this: https://bugs.ruby-lang.org/issues/4893
<btcctf> which mri doesn't allow me to without hacking on C/the mri source
<btcctf> i'm looking at bootstring/string.rb atm
<headius> btcctf: if I'm reading the bytecode correctly, literal strings compile to a load of a pre-made string plus a dup
<headius> the string_dup instruction appears to be implemented all native, so that would have to change (or maybe there's a flag) in order for a literal to do any call back into Ruby
<headius> I'm just reading as I go, though...others will know more
<btcctf> headius: ok, thanks for reading, i'm still reading too but that helps
<headius> rbx compile --print-bytecode -e <whatever> will show you the bytecode, and those are defined in vm/instructions.def
<headius> have fun
<btcctf> cheers!
josh-k has joined #rubinius
dimday has quit [Quit: Leaving.]
|jemc| has quit [Quit: WeeChat 1.0.1]
JohnBat26 has joined #rubinius
noop has joined #rubinius
benlovell has joined #rubinius
flavio has joined #rubinius
flavio has quit [Client Quit]
flavio has joined #rubinius
flavio has quit [Changing host]
flavio has joined #rubinius
meh` has joined #rubinius
<yorickpeterse> morning
<yorickpeterse> btcctf: String#initialize is ignored when using string literals
<yorickpeterse> also I don't see how you can expect that code to work, even if String#initialize were to be used
<yorickpeterse> allright, lets get some suckers running on rbx
<yorickpeterse> I think today's kids would say "yolo" at this point
lbianc has joined #rubinius
GitHub95 has joined #rubinius
<GitHub95> [rubinius] gustavotemple opened pull request #3193: Fix X86 MACROs (master...fix-atomic-macros) http://git.io/w_26PA
GitHub95 has left #rubinius [#rubinius]
GitHub68 has joined #rubinius
<GitHub68> [rubinius] gustavotemple opened pull request #3194: Fix Atomic MACROs (master...fix-vm-atomic-macros) http://git.io/MltD6g
GitHub68 has left #rubinius [#rubinius]
jnh has quit [Remote host closed the connection]
josh-k_ has joined #rubinius
josh-k has quit [Ping timeout: 265 seconds]
benlovell has quit [Ping timeout: 258 seconds]
<yorickpeterse> brixen: random question, can we from Rubyland hook into some event that's fired whenever the JIT runs?
<yorickpeterse> brixen: basically my idea is to plot JIT executions on a New Relic graph
<yorickpeterse> that way I can, in theory, see the effects of the JIT more clearly
<yorickpeterse> brixen: e.g. http://downloads.yorickpeterse.com/images/screenshot_101114_12%3a14%3a37.png is most likely the JIT, but I can't yet tell for certain
<yorickpeterse> Hm wait, New Relic doesn't allow custom markers
<yorickpeterse> hmpf
jnh has joined #rubinius
<yorickpeterse> Hm, memory usage however is much higher compared to MRI 2.1.4
<yorickpeterse> basically 2x higher by the looks of it
jnh has quit [Ping timeout: 265 seconds]
o0oo0o has quit [Remote host closed the connection]
o0oo0o has joined #rubinius
benlovell has joined #rubinius
goyox86 has joined #rubinius
justinmcp has joined #rubinius
lbianc has quit [Quit: ChatZilla 0.9.91 [Firefox 24.8.1/20140923194127]]
<btcctf> yorickpeterse: damn, i do need to intercept all string creations though
goyox86 has quit [Ping timeout: 245 seconds]
diegoviola has joined #rubinius
<yorickpeterse> btcctf: what are you trying to do?
benlovell has quit [Ping timeout: 265 seconds]
<btcctf> yorickpeterse: it's a long story, but for my poc, i'm trying to prevent strings from existing that will contain a certain letter
<btcctf> that's just what i'm trying to achieve to find out how easily i can hook all string creations
<btcctf> after that, i want to play with the idea of blacklists and whitelists
<btcctf> it would be nice to be able to achieve this easily with rubinius as mri is quite a lot of work i believe
lbianc has joined #rubinius
<yorickpeterse> This can't be achieved easily in rbx in its current state
<yorickpeterse> I'm experimenting with dtrace hooks to trace allocations, but it won't let you run arbitrary Ruby cdoe
<yorickpeterse> I believe String.new can be hooked into if a user explicitly uses it
<yorickpeterse> but string literals use a VM instruction, circumventing String.new
<btcctf> it will only be me running this ruby code, so the user explicitly using it is not a problem
<yorickpeterse> You could _probably_ use ObjectSpace and walk over all String instances at some point in time
<yorickpeterse> but it would only contain Strings still visible to a scope
<btcctf> i've looked into ObjectSpace for trying to get this to work with mri actually
<btcctf> hard to find good info
<btcctf> docs are limited from what i can see
<btcctf> (reading your commit now too)
<btcctf> wow yea, the dtrace branch is pretty close to what i could use
<yorickpeterse> ObjectSpace.each_object(String) { |str| ... } # would yield all currently visible String instances
<yorickpeterse> Note that the dtrace branch does not have access to the actual string values, it only knows about the class
<btcctf> ok, playing some more with ObjectSpace, super limited but might be able to get something working for this
benlovell has joined #rubinius
goyox86 has joined #rubinius
jnh has joined #rubinius
goyox86 has quit [Ping timeout: 244 seconds]
jnh has quit [Ping timeout: 265 seconds]
lbianc has quit [Ping timeout: 255 seconds]
<btcctf> yorickpeterse: thoughts on combining tracer + ObjectSpace ?
<yorickpeterse> tracer?
goyox86 has joined #rubinius
diegoviola has quit [Quit: WeeChat 1.0.1]
<yorickpeterse> brixen: am I correct in thinking that the metric "memory.large.objects.total" represents the total amount of heap slots, while "memory.large.objects.current" represents the heap slots currently in use?
<yorickpeterse> there's also "memory.immix.objects.{current,total}" but those aren't incremented
benlovell has quit [Ping timeout: 250 seconds]
havenwood has joined #rubinius
<yorickpeterse> Allrighty, lets see if my RPM patches actually work
<yorickpeterse> so I can get my metrics back
goyox86_ has joined #rubinius
goyox86 has quit [Ping timeout: 240 seconds]
lbianc has joined #rubinius
benlovell has joined #rubinius
diegoviola has joined #rubinius
josh-k_ has quit [Remote host closed the connection]
josh-k has joined #rubinius
jnh has joined #rubinius
josh-k has quit [Ping timeout: 256 seconds]
jnh has quit [Ping timeout: 272 seconds]
<btcctf> is the tracer is was talking about
<yorickpeterse> Ah, we don't have Kernel#set_trace_func so that won't work
<btcctf> ah well, was worth a shot
enebo has joined #rubinius
DanielVartanov_ has joined #rubinius
enebo has quit [Client Quit]
enebo has joined #rubinius
<yorickpeterse> Argh, fucking ActiveRecord
<yorickpeterse> Out of the blue I'm getting shit like "NoMethodError: undefined method `build' on ActiveRecord::PredicateBuilder (Class)"
<yorickpeterse> This is some serious fucked up hydra
<yorickpeterse> Slay one head, 10 new ones arise
<yorickpeterse> or in this case: bugs
noop has quit [Ping timeout: 265 seconds]
tenderlove has joined #rubinius
arrubin has joined #rubinius
GitHub185 has joined #rubinius
GitHub185 has left #rubinius [#rubinius]
<GitHub185> [rubinius] gustavotemple opened pull request #3195: PowerPC64 support in configure file (master...detect-ppc64) http://git.io/r3n2cg
|jemc| has joined #rubinius
flavio has quit [Quit: WeeChat 1.0]
jnh has joined #rubinius
jnh has quit [Ping timeout: 265 seconds]
goyox86_ has quit [Read error: Connection reset by peer]
goyox86_ has joined #rubinius
goyox86_ has quit [Client Quit]
<yorickpeterse> Ah well, at least I got 1 app running on Rbx now it seems
<yorickpeterse> some RPM metrics left to fix and some more testing to do, then it's on to the next one
<cremes> w00t!
<headius> yorickpeterse: that workaround is strange...did you see this error under concurrent load?
<yorickpeterse> headius: yes
<yorickpeterse> weirdly enough I didn't have any for a while, then suddenly boom
<yorickpeterse> restarting it didn't help, so it seems to be workload specific even
<yorickpeterse> but I haven't seen it since eager loading AR
havenwood has quit [Remote host closed the connection]
<headius> yorickpeterse: ok, then it does make sense
<headius> I thought this was on boot
<headius> strange though...have not seen that issue reported for jruby
carlosgaldino has quit [Read error: Connection reset by peer]
carlosgaldino has joined #rubinius
<headius> maybe it came in a different form...that of a giant Sloar
<headius> hmm, hard to tell...NoMethodError is so generic
DanielVartanov_ has quit [Ping timeout: 272 seconds]
havenwood has joined #rubinius
benlovell has quit [Ping timeout: 245 seconds]
JohnBat26 has quit [Quit: KVIrc 4.3.1 Aria http://www.kvirc.net/]
jnh has joined #rubinius
<brixen> happy monday everyone!
<brixen> now, I have to run to lunch
* brixen dashes to dine
havenwood has quit [Remote host closed the connection]
noop has joined #rubinius
jnh has quit [Ping timeout: 265 seconds]
havenwood has joined #rubinius
<dbussink> brixen:
<|jemc|> brixen: +1 for the "meritocracy" debunk :)
postmodern has joined #rubinius
DanielVartanov_ has joined #rubinius
postmodern has quit [Ping timeout: 265 seconds]
<yorickpeterse> headius: yeah it's a weird one, only started occurring a few hours into the testing process
<headius> yorickpeterse: does it seem likely that it took a few hours for something to get autoloaded?
<headius> I don't know what that app looks like, but if it's largely doing the same thing all the time I would have expected loads to be done early
<yorickpeterse> headius: No, that's the weird part: the code path the app itself takes is the same
<yorickpeterse> basically all it does is update a status column of a DB table
<headius> very strange :-(
<yorickpeterse> It is using a magic find_by_XXXX method though, I suspect that might be the start of the problem
<yorickpeterse> since that requires some meta-magic whatever to figure out what column to get the data by
benlovell has joined #rubinius
<yorickpeterse> brixen: when convenient, could you glance over https://github.com/newrelic/rpm/pull/197 and tell me if any of the metrics I'm pulling in are stored in the wrong place?
<yorickpeterse> brixen: the only two metrics I need to add are free heap slots and constant cache resets
<yorickpeterse> both probably require extra metrics on Rbx' end
<headius> huh, I didn't know they had impl-specific metrics
<headius> I guess I should PR JRuby's
<yorickpeterse> Yeah, jruby only uses GC.count or something I believe
<yorickpeterse> (that is, their jruby code)
<headius> looking at it now, yeah
<headius> there's at least a dozen useful JRuby-level metrics and many more JVM-level metrics
<yorickpeterse> They map them to a bunch of generic ones though
<yorickpeterse> Anything implementation specific is basically ignored
<headius> ah
<yorickpeterse> e.g. there are no graphs for JIT timings
<headius> where's the list of generic ones?
benlovell has quit [Ping timeout: 245 seconds]
<yorickpeterse> * this
<headius> we expose all that, so shouldn't be difficult to add
<headius> method cache...unsure...I'm guessing they mean MRI's global cache, but we never invalidate globally
<headius> I don't it would be useful to show how many inline caches have failed
slaught has joined #rubinius
<yorickpeterse> Yeah I'm not sure if we invalidate any constant caches either
<yorickpeterse> couldn't really find anything on it
<yorickpeterse> ah crap
<yorickpeterse> My Rbx stuff will probably leak GC profiles
<yorickpeterse> hmpf
<yorickpeterse> that might explain the memory usage
<yorickpeterse> Ah no, we don't store any internal gc profiles
<headius> JRuby still has global constant invalidation
<headius> so that metric would apply
<headius> and we expose it, I believe
<chrisseaton> headius yorickpeterse: we could do with some shared Ruby anti-benchmarks that expose behaviour other benchmarks never do - like invalidations, monkey patching etc
<chrisseaton> and I'm not saying that for the benefit of Truffle, as we'll do poorly there as our compilation is slower than yours
<headius> sure...I have written some benchmarks that do that but mostly to test correctness and ensure failover to non-catastrophic perf
<headius> need to get those together
<yorickpeterse> honestly good implementation benchmarks would be neat
<yorickpeterse> there's that thing israilsfastyet or something, but it's garbage
GitHub142 has joined #rubinius
<GitHub142> [rubinius] jc00ke pushed 1 new commit to 1.8.7: http://git.io/FNS7EQ
<GitHub142> rubinius/1.8.7 a057ef5 jc00ke: Fix typo...
GitHub142 has left #rubinius [#rubinius]
DanielVartanov_ has quit [Ping timeout: 250 seconds]
<headius> yorickpeterse: really hard to get good metrics on low-level VM concepts because e.g. jruby, jvm, truffle will optimize useless code away
<headius> metrics=perf metrics I mean
<yorickpeterse> true
<headius> I had some great benchmarks for repeatedly accessing the same constant, but after invokedynamic JVM folded them into a single access
<headius> stuff like that
josh-k has joined #rubinius
josh-k has quit [Ping timeout: 245 seconds]
DanielVartanov_ has joined #rubinius
GitHub62 has joined #rubinius
<GitHub62> [rubinius] jc00ke pushed 1 new commit to master: http://git.io/m7hoLg
<GitHub62> rubinius/master 3125a6c jc00ke: Fix typo...
GitHub62 has left #rubinius [#rubinius]
<yorickpeterse> hngngngn few more minutes and I can run another test round with rbx
<yorickpeterse> with probably a few million jobs being processed
<yorickpeterse> should probably place bets on the amount of race conditions that will pop up
jnh has joined #rubinius
postmodern has joined #rubinius
postmodern has joined #rubinius
postmodern has quit [Changing host]
<yorickpeterse> allrighty, sample set good, time to scrape some 1million something reviews
<yorickpeterse> lets hope Rbx doesn't hate me for the workload
slaught has quit [Quit: slaught]
<yorickpeterse> brixen: seeing some interesting warmup processes going on here
<yorickpeterse> process starts with quite a lot of GC runs, slow processing times and lots of object allocations
<brixen> yorickpeterse: cool
<yorickpeterse> Then I think the JIT kicks in the door and it drops massively
<yorickpeterse> it looks like....
<brixen> yorickpeterse: I have to run for a bit, but are you graphing this?
<yorickpeterse> yes
<brixen> ok, cool
<yorickpeterse> don't have raw graphs for Rubinius::Metrics yet
<brixen> feel free to send me some graphs
<brixen> ok
<yorickpeterse> yeah I'm taking some screenshots atm
<yorickpeterse> multi-tasking on two laptops here
<brixen> I gotta run, but let's talk more, ok?
<yorickpeterse> sure
<brixen> cool
slaught has joined #rubinius
<yorickpeterse> brixen: ok here goes:
<yorickpeterse> Not yet sure if I'm tracking GC metrics right though
<yorickpeterse> e.g. I'm not seeing GC metrics in the general overview, which _is_ supposed to be there
<yorickpeterse> or maybe our GC is too fast for NR to plot it :D
<yorickpeterse> I'll see if I can basically just dump Rubinius::Metrics straight into New Relic Insights (basically their version of Graphite)
<yorickpeterse> (tomorrow that is)
<headius> yorickpeterse: was the app actually running before that big spike? it's completely flat
DanielVartanov_ has quit [Ping timeout: 240 seconds]
<yorickpeterse> headius: Yes but it wasn't doing anything
<yorickpeterse> This thing basically idles all day long, then twice a day it produces a workload of 35k jobs or so
<yorickpeterse> heh, avg GC time of 0.12 ms
<yorickpeterse> notbad
<yorickpeterse> 0,7% of the total workload
<yorickpeterse> errr single job
<yorickpeterse> Also no errors, I have to admit I'm quite impressed
<headius> yorickpeterse: ahh ok, that makes sense
DanielVartanov has joined #rubinius
benlovell has joined #rubinius
benlovell has quit [Ping timeout: 265 seconds]
GitHub39 has joined #rubinius
<GitHub39> [rubinius] sshao pushed 1 new commit to 1.8.7: http://git.io/MmgP1w
GitHub39 has left #rubinius [#rubinius]
<GitHub39> rubinius/1.8.7 89d0756 sshao: Replaced taint w/ Rubinius::Type.infect in Marshal...
<yorickpeterse> hihi, ^C segfaults Rbx
<yorickpeterse> huh, no log file written though
<yorickpeterse> aaaah
<yorickpeterse> it's in /var/log
<yorickpeterse> brixen: if it helps, here's a raw dump of Rubinius::Metrics.data with a 2 second interval, for about 10 minutes: http://downloads.yorickpeterse.com/files/shepherd_metrics.json
<yorickpeterse> I'll be looking into that myself tomorrow as well
diegoviola has quit [Remote host closed the connection]
max96at is now known as max96at|off
sshao has joined #rubinius
noop has quit [Ping timeout: 245 seconds]
DanielVartanov has quit [Remote host closed the connection]
exgf has quit [Remote host closed the connection]
exgf has joined #rubinius
benlovell has joined #rubinius
amsi has joined #rubinius
|jemc| has quit [Quit: WeeChat 1.0.1]
|jemc| has joined #rubinius
benlovell has quit [Ping timeout: 265 seconds]
amsi has quit [Quit: Leaving]
|jemc| has quit [Quit: WeeChat 1.0.1]
|jemc| has joined #rubinius
postmodern has quit [Ping timeout: 264 seconds]
josh-k has joined #rubinius
postmodern has joined #rubinius
havenwood has quit []
Ngz00 has joined #rubinius
Ngz00 has left #rubinius [#rubinius]
havenwood has joined #rubinius
DanielVartanov_ has joined #rubinius
DanielVartanov__ has joined #rubinius
amsi has joined #rubinius
DanielVartanov__ has quit [Ping timeout: 245 seconds]
DanielVartanov_ has quit [Ping timeout: 255 seconds]
josh-k has quit [Remote host closed the connection]
josh-k has joined #rubinius
postmodern has quit [Ping timeout: 260 seconds]
josh-k has quit [Ping timeout: 264 seconds]
<chrisseaton> A new academic workshop for high performance in scripting languages: http://polaris.cs.uiuc.edu/hpsl/ - I'm sure they'd love to get something from Rubinius if anyone is interested in writing something up
o0oo0o has quit [Remote host closed the connection]
<yorickpeterse> heh, California
<yorickpeterse> sadly that's a bit too far away
<chrisseaton> yorickpeterse: ICOOOLPS at ECOOP in Praque is similar http://2015.ecoop.org
<headius> I think they used too many O's
benlovell has joined #rubinius
<yorickpeterse> "Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems"
<yorickpeterse> that's quite the name
<headius> the academic conferences make no effort to be cute, do they
<chrisseaton> they renamed OOPSLA to be Onward! (literally, with the exclamation mark)
<headius> ok, so most make no effort :-)
benlovell has quit [Ping timeout: 250 seconds]
<headius> and Splash is the dynamic language part now, yeah?
<headius> which had some horrendous name before
<chrisseaton> Splash is just a general conference - it was about OO, but is now systems and anything else really
<chrisseaton> "Software for Humanity"
<headius> ahh ok
<chrisseaton> the premier conference for the work we all do is PLDI
<headius> oh, right, OOPSLA became Splash...and then what, Splash spun off separately and OOPSLA became Onward!?
<chrisseaton> yeah, something like that
<headius> most confusing conference name shuffling I've seen
<chrisseaton> and PoPL is the premier conference if you can incorporate some semantics notation in your work (so-called greek letters)
<headius> hah, so they loved Fortress I bet