<yorickpeterse> yeah so it seems that systemtap always returns 0 for X / Y when X < Y
<yorickpeterse> blegh
travis-ci has joined #rubinius
<travis-ci> rubinius/rubinius/master (3529eaa - Brian Shirai): http://travis-ci.org/rubinius/rubinius/builds/41425546: The build was broken.
travis-ci has left #rubinius [#rubinius]
Guest19 has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
travis-ci has joined #rubinius
<travis-ci> rubinius/rubinius/master (aedb9a4 - Brian Shirai): http://travis-ci.org/rubinius/rubinius/builds/41426240: The build passed.
travis-ci has left #rubinius [#rubinius]
carlosgaldino has joined #rubinius
|jemc| has quit [Ping timeout: 265 seconds]
jnh has joined #rubinius
jnh has quit [Ping timeout: 240 seconds]
josh-k has quit [Remote host closed the connection]
dimday has joined #rubinius
elia has quit [Quit: Computer has gone to sleep.]
amsi has quit [Quit: Leaving]
|jemc| has joined #rubinius
amclain has joined #rubinius
jnh has joined #rubinius
jnh has quit [Quit: Leaving...]
jnh has joined #rubinius
jnh has quit [Client Quit]
meh` has quit [Ping timeout: 264 seconds]
GitHub46 has joined #rubinius
<GitHub46> [rubinius] brixen pushed 1 new commit to master: http://git.io/mQxP2A
<GitHub46> rubinius/master e00041f Brian Shirai: Fixed making Ruby values for Metrics values.
GitHub46 has left #rubinius [#rubinius]
josh-k has joined #rubinius
travis-ci has joined #rubinius
<travis-ci> rubinius/rubinius/master (e00041f - Brian Shirai): http://travis-ci.org/rubinius/rubinius/builds/41438139: The build passed.
travis-ci has left #rubinius [#rubinius]
jfredett-w has quit [Read error: Connection reset by peer]
jfredett-w has joined #rubinius
josh-k_ has joined #rubinius
josh-k has quit [Ping timeout: 240 seconds]
amclain has quit [Quit: Leaving]
|jemc| has quit [Ping timeout: 264 seconds]
diegoviola has quit [Read error: Connection reset by peer]
yipstar` has joined #rubinius
yipstar has quit [Ping timeout: 250 seconds]
|jemc| has joined #rubinius
noop has joined #rubinius
|jemc|_ has joined #rubinius
|jemc| has quit [Read error: Connection reset by peer]
|jemc|_ is now known as |jemc|
yipstar` has quit [Ping timeout: 245 seconds]
|jemc| has quit [Ping timeout: 265 seconds]
benlovell has joined #rubinius
leehambley has joined #rubinius
mamantoha has joined #rubinius
leehamble has joined #rubinius
dimday has quit [Quit: Leaving.]
leehambley has quit [Ping timeout: 250 seconds]
josh-k_ has quit [Remote host closed the connection]
JohnBat26 has joined #rubinius
josh-k has joined #rubinius
Guest19 has joined #rubinius
josh-k has quit [Ping timeout: 265 seconds]
Guest19 has quit [Ping timeout: 245 seconds]
Guest19 has joined #rubinius
leehamble has quit [Quit: Leaving...]
leehambley has joined #rubinius
elia has joined #rubinius
Guest19 has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<yorickpeterse> morning
leehambley has left #rubinius ["Linkinus - http://linkinus.com"]
meh` has joined #rubinius
Guest19 has joined #rubinius
<Guest19> Morning!
Guest19 is now known as goyox86
<goyox86> Morning! (as goyox86 :p)
meh` has quit [Quit: reboot]
meh` has joined #rubinius
max96at|off is now known as max96at
heftig has quit [Ping timeout: 272 seconds]
benlovell has quit [Ping timeout: 240 seconds]
heroux has quit [Ping timeout: 255 seconds]
heroux has joined #rubinius
benlovell has joined #rubinius
heftig has joined #rubinius
benlovell has quit [Ping timeout: 264 seconds]
DireFog_ is now known as DireFog
goyox86 has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
postmodern has quit [Quit: Leaving]
Guest19 has joined #rubinius
Guest19_ has joined #rubinius
Guest19 has quit [Ping timeout: 258 seconds]
benlovell has joined #rubinius
<brixen> yorickpeterse: we should add a NR emitter for Metrics
<brixen> it's a popular platform
<brixen> yorickpeterse: can you link me to docs you used to make your setup?
* brixen hops on train
<brixen> bbl...
benlovell has quit [Ping timeout: 245 seconds]
<yorickpeterse> it's basically a JSON POST containing [{"eventType": "collection-name", "timestamp": 123123123, ...}]
<yorickpeterse> where the ... are just the metrics you want to store
johnmuhl has joined #rubinius
benlovell has joined #rubinius
josh-k has joined #rubinius
josh-k has quit [Ping timeout: 244 seconds]
JohnBat26 has quit [Quit: KVIrc 4.3.1 Aria http://www.kvirc.net/]
mamantoha has quit [Read error: Connection reset by peer]
mamantoha has joined #rubinius
josh-k has joined #rubinius
<brixen> yorickpeterse: ok, figured it was JSON, which requires some things
<brixen> perhaps I'll bundle yajl for the moment
<brixen> the emitter will send all metrics
<brixen> we're going to refine the metrics for rbx itself to a fundamental set
<yorickpeterse> brixen: can't we use rubysl-json?
<brixen> selecting a subset from that doesn't make sense
<brixen> no, we won't use rubysl-json
<yorickpeterse> oh wait yeah, metrics is in C++
<brixen> that thing is going to DIAF soon
<yorickpeterse> haha
<brixen> a second step for Metrics is opening up an API to use it from Ruby
<brixen> and adding in sampling profiler output
<yorickpeterse> It might make more sense for Rbx to provide and API, and let others add support for NR and the likes
<yorickpeterse> opposed to Rbx directly providing support for NR
<yorickpeterse> In the current setup this is already super easy to do in Ruby
<yorickpeterse> The only thing to make it better is being able to hook into whenever the VM updates the metrics
<yorickpeterse> Right now you basically have to poll it yourself
<brixen> there's no polling
<brixen> you just send what's there at whatever interval you want
<brixen> the polling is exactly what we do not want
tenderlove has joined #rubinius
<brixen> for platforms that are well established, like statsd and NR, it's useful to support it out of the box
<yorickpeterse> brixen: what I meant is something like this:
<yorickpeterse> Rubinius::Metrics.on_update { |metrics| submit_to_whatever(metrics) }
benlovell has quit [Ping timeout: 265 seconds]
<yorickpeterse> vs
<yorickpeterse> loop { metrics = Rubinius::Metrics.data.to_hash; submit_to_whatever(metrics); sleep(...) }
<brixen> I know that's what you want :)
<brixen> I don't want the coupling of .on_update
<brixen> the CPU does not notify you when it updates counters
<brixen> the counters update, they have a certain value when you read them
<brixen> the one thing I need to add is the monotonic counter that can be used for correlating metrics and events
<yorickpeterse> hm
<brixen> interesting, Azure ML
<yorickpeterse> oh fuck, anything better than existing machine learning tools
<yorickpeterse> Machine learning is such a PITA from what I've seen co-workers deal with
benlovell has joined #rubinius
|jemc| has joined #rubinius
josh-k has quit [Remote host closed the connection]
Guest19_ has quit [Read error: Connection reset by peer]
Guest19 has joined #rubinius
josh-k_ has joined #rubinius
<yorickpeterse> brixen: so other question, when profiling performance with Ruby, where do you usually start?
<yorickpeterse> This is my scenario: Oga uses Racc and Ragel, Racc is slow as shit and I fucked up performance in my lexer somewhere
<brixen> at the beginning :)
<yorickpeterse> Now I sort of know where the problem is (= racc) but I need numbers first to prove it
<yorickpeterse> Ruby profilers suck, because it takes 10 years for Ruby to even start when they're running
<yorickpeterse> Same goes for Valgrind, though I at least finally have some data from it
benlovell has quit [Ping timeout: 264 seconds]
<yorickpeterse> So I hacked together some call counter in Systemtap, but I can't get it to properly profile timings using it
<yorickpeterse> (only call amounts)
mamantoha has quit [Ping timeout: 264 seconds]
<brixen> it's a big problem for sure
<yorickpeterse> The most painful way is to read all the code, then theorize about every line
<yorickpeterse> but then I'll still be profiling next year
<brixen> hah, indeed
<brixen> one thing you may try is isolating the parts
<brixen> try measuring smaller things
<brixen> if you then sum them and it doesn't add up to the global behavior, you're missing something
<yorickpeterse> That was going to be my step 2, step 1 would be to get some kind of direction
<brixen> but the global system will have confounding effects, so you could chase your tail for a long time
<yorickpeterse> so .e.g I tried oprofile to get some idea, but it just shows a bunch of random Ruby C functions (e.g. rb_ary_push, st_lookup, etc)
<brixen> all you need is a single number for the global system
<yorickpeterse> (at least on MRI)
<brixen> get a total time on some reasonable workload
<brixen> then try to decompose that and measure each system
<brixen> sum for a sanity check
<brixen> then look at percentages of the parts
tenderlove has quit [Quit: Leaving...]
<brixen> gotta run for a bit
<yorickpeterse> hmm
amsi has joined #rubinius
yxhuvud has quit [Remote host closed the connection]
yxhuvud has joined #rubinius
elia has quit [Quit: Computer has gone to sleep.]
tmornini has joined #rubinius
tmornini has quit [Client Quit]
tmornini has joined #rubinius
noop has quit [Ping timeout: 264 seconds]
tmornini has quit [Ping timeout: 246 seconds]
Guest19 has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
havenwood has joined #rubinius
havenwood has quit [Remote host closed the connection]
Guest19 has joined #rubinius
<Guest19> brixen I've been reading C++ code for the StatsD emitter
havenwood has joined #rubinius
Guest19 is now known as goyox86
<goyox86> You plan to add a JSON emitter?
<goyox86> Which other emitter will you plan to support
<goyox86> ?
<goyox86> Forget the part of JSON emitter ;)
<goyox86> OFF TOPICI'm playing with influxdb looks secsy.
goyox86 has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
mamantoha has joined #rubinius
josh-k_ has quit [Remote host closed the connection]
josh-k has joined #rubinius
mamantoha has quit [Ping timeout: 255 seconds]
josh-k has quit [Ping timeout: 258 seconds]
havenwood has quit [Remote host closed the connection]
[spoiler] has joined #rubinius
havenwood has joined #rubinius
josh-k has joined #rubinius
mrb_bk has quit [Ping timeout: 245 seconds]
yipstar has joined #rubinius
mrb_bk has joined #rubinius
heroux has quit [Ping timeout: 240 seconds]
heroux has joined #rubinius
<yorickpeterse> yay valgrind says rb_ary_entry takes up 4.15% of the total runtime of this benchmark
<yorickpeterse> that really helps me
<yorickpeterse> because that function is used literally everywhere
Guest19 has joined #rubinius
<yxhuvud> yorick: have you tried playing around with different views of the profiling? sometimes flame graphs are wonderful, sometimes they don't help at all, etc. (you can tell valgrind to output data kcachegrind can read, if you havn't got that far)
<yorickpeterse> oh I have a tool for reading callgrind output
<yorickpeterse> which funny enough is called qcachegrind
diegoviola has joined #rubinius
postmodern has joined #rubinius
<Guest19> yorickpeterse: Have used qcachegring #notbad
Guest19 is now known as goyox86
<goyox86> Man this IRC client is driving me crazy
<yorickpeterse> #aha
<yorickpeterse> :P
<yorickpeterse> Hm, flamegraphs might be an option
<yorickpeterse> never used them before, lets see
[spoiler] has quit [Read error: Connection reset by peer]
<yxhuvud> their usefulness depend a lot on the program usage structure though.
havenwood has quit [Remote host closed the connection]
digitalextremist has joined #rubinius
digitalextremist has quit [Quit: demonstrate freedom //]
max96at is now known as max96at|off
havenwood has joined #rubinius
<yorickpeterse> hmpf, getting callstacks out using systemtap in userspace is not as convenient as hoped
carlosgaldino has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
cypher23 has quit [Ping timeout: 255 seconds]
cypher23 has joined #rubinius
havenwood has quit [Remote host closed the connection]
yipstar` has joined #rubinius
yipstar`` has joined #rubinius
yipstar has quit [Ping timeout: 264 seconds]
yipstar` has quit [Ping timeout: 244 seconds]
goyox86 has quit [Quit: My Mac has gone to sleep. ZZZzzz…]