pawnbox has joined #jruby
kares has joined #jruby
Freeky is now known as Freaky
pawnbox has quit [Ping timeout: 260 seconds]
<GitHub38> [jruby] chrisseaton pushed 2 new commits to master: https://git.io/voA9b
<GitHub38> jruby/master 80a30ab Chris Seaton: [Truffle] Licences as an mx distribution.
<GitHub38> jruby/master eda3cd0 Chris Seaton: [Truffle] Normalise whitespace in mx.
kares has quit [Quit: ...]
camlow325 has quit []
<travis-ci> jruby/jruby (master:80a30ab by Chris Seaton): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141225889)
kares has joined #jruby
bbrowning_away has quit [Quit: Leaving]
pawnbox has joined #jruby
pawnbox has quit [Ping timeout: 246 seconds]
pawnbox has joined #jruby
pawnbox has quit [Ping timeout: 250 seconds]
prasunanand has quit [Ping timeout: 276 seconds]
e_dub has joined #jruby
sebstrax has quit [Quit: Connection closed for inactivity]
pawnbox has joined #jruby
pawnbox has quit [Ping timeout: 246 seconds]
nirvdrum has quit [Ping timeout: 246 seconds]
e_dub has quit [Quit: ZZZzzz…]
TheWhip has quit [Remote host closed the connection]
TheWhip has joined #jruby
prasunanand has joined #jruby
blandflakes has quit [Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
e_dub has joined #jruby
pawnbox has joined #jruby
pawnbox has quit [Ping timeout: 264 seconds]
TheWhip has quit [Remote host closed the connection]
TheWhip has joined #jruby
thedarkone2 has quit [Quit: thedarkone2]
sebstrax has joined #jruby
TheWhip has quit [Ping timeout: 264 seconds]
prasunanand has quit [Ping timeout: 250 seconds]
yfeldblum has quit [Remote host closed the connection]
TheWhip has joined #jruby
pawnbox has joined #jruby
raeoks has joined #jruby
<GitHub107> [jruby] kares pushed 4 new commits to jruby-1_7: https://git.io/voxk9
<GitHub107> jruby/jruby-1_7 676e8aa kares: re-use context instance instead of calling getCurrentContext
<GitHub107> jruby/jruby-1_7 8854a02 kares: re-use ThreadContext instance in Runtime#init
<GitHub107> jruby/jruby-1_7 9b1a5a0 kares: (c) 2016 ... 15 years on JRuby awesomeness and counting!
<travis-ci> jruby/jruby (master:80a30ab by Chris Seaton): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141225889)
rolfb has joined #jruby
rolfb has quit [Client Quit]
yfeldblum has joined #jruby
yfeldblum has quit [Remote host closed the connection]
yfeldblum has joined #jruby
<GitHub195> [jruby] kares pushed 1 new commit to jruby-1_7: https://git.io/voxLO
<GitHub195> jruby/jruby-1_7 be2d492 kares: make sure there actually is a Digest::REQUIRE_MUTEX...
<GitHub43> [jruby] kares pushed 1 new commit to master: https://git.io/voxLs
<GitHub43> jruby/master f2e250e kares: avoid using fix2int on object_id - use identity hash for native thread...
<GitHub3> [jruby] kares closed issue #3980: rbThrowInternal throws error if IRubyObject ID is greater than Integer.MAX_VALUE https://git.io/voHAk
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
<travis-ci> jruby/jruby (jruby-1_7:97aee10 by kares): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141258402)
<travis-ci> jruby/jruby (jruby-1_7:be2d492 by kares): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141261706)
Hobogrammer has quit [Quit: WeeChat 0.4.2]
prasunanand has joined #jruby
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
sebstrax has quit [Quit: Connection closed for inactivity]
bb010g has quit [Quit: Connection closed for inactivity]
<GitHub171> [jruby] aknaton opened issue #3986: Failure to update gems https://git.io/voxYD
<travis-ci> jruby/jruby (master:f2e250e by kares): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141261768)
<travis-ci> jruby/jruby (jruby-1_7:be2d492 by kares): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141261706)
TheWhip has quit [Remote host closed the connection]
pawnbox has quit [Remote host closed the connection]
ooo has quit [Ping timeout: 272 seconds]
TheWhip has joined #jruby
pawnbox has joined #jruby
shellac has joined #jruby
drbobbeaty has joined #jruby
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
Freeky has joined #jruby
justinmcp has joined #jruby
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
haze has joined #jruby
cpuguy83_ has joined #jruby
Scorchin_ has joined #jruby
pawnbox_ has joined #jruby
TheWhip_ has joined #jruby
ekroon_ has joined #jruby
TheWhip has quit [Ping timeout: 244 seconds]
pawnbox has quit [Ping timeout: 258 seconds]
Freaky has quit [*.net *.split]
haze_ has quit [*.net *.split]
ekroon has quit [*.net *.split]
cpuguy83 has quit [*.net *.split]
justinmcp_ has quit [*.net *.split]
Scorchin has quit [*.net *.split]
cpuguy83_ is now known as cpuguy83
ekroon_ is now known as ekroon
Scorchin_ is now known as Scorchin
pitr-ch has joined #jruby
pitr-ch has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
pitr-ch has joined #jruby
pawnbox_ has quit [Remote host closed the connection]
drbobbeaty has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
pitr-ch has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
pawnbox has joined #jruby
skade has joined #jruby
shellac has quit [Quit: Computer has gone to sleep.]
skade has quit [Quit: Computer has gone to sleep.]
skade has joined #jruby
yfeldblum has quit [Remote host closed the connection]
TheWhip has joined #jruby
skade has quit [Quit: Computer has gone to sleep.]
TheWhip_ has quit [Ping timeout: 272 seconds]
yfeldblum has joined #jruby
yfeldblum has quit [Ping timeout: 244 seconds]
raeoks has quit [Read error: Connection reset by peer]
PaulePanter has quit [Ping timeout: 250 seconds]
PaulePanter has joined #jruby
drbobbeaty has joined #jruby
<GitHub29> [jruby] chrisseaton pushed 1 new commit to truffle-head: https://git.io/voxof
<GitHub29> jruby/truffle-head fbb6893 Chris Seaton: Merge branch 'master' into truffle-head
<travis-ci> jruby/jruby (truffle-head:fbb6893 by Chris Seaton): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141310473)
Freeky is now known as Freaky
pawnbox has quit [Remote host closed the connection]
nirvdrum has joined #jruby
pawnbox has joined #jruby
shellac has joined #jruby
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #jruby
lance|afk is now known as lanceball
pawnbox has quit [Remote host closed the connection]
pitr-ch has joined #jruby
pitr-ch has quit [Client Quit]
pitr-ch has joined #jruby
skade has joined #jruby
enebo has joined #jruby
pitr-ch has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
pitr-ch has joined #jruby
pawnbox has joined #jruby
<GitHub191> [jruby] nirvdrum pushed 1 new commit to master: https://git.io/voxA7
<GitHub191> jruby/master 8bf3e45 Kevin Menard: Allow subclassing of JavaSupport from outside the org.jruby.javasupport package.
tcrawley-away is now known as tcrawley
<GitHub91> [jruby] nirvdrum pushed 1 new commit to truffle-head: https://git.io/voxxJ
<GitHub91> jruby/truffle-head d232406 Kevin Menard: Merge branch 'master' into truffle-head
<enebo> chrisseaton: I included you into an email about some licensing questions in jars included in jruby-truffle.jar
<chrisseaton> Yay licensing questions
pitr-ch has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<GitHub186> [jruby] nirvdrum pushed 1 new commit to master: https://git.io/voxpU
<GitHub186> jruby/master 6a4ac4a Kevin Menard: Fixed method signature.
<GitHub184> [jruby] nirvdrum pushed 1 new commit to truffle-head: https://git.io/voxpt
<GitHub184> jruby/truffle-head 671d3f5 Kevin Menard: Merge branch 'master' into truffle-head
<travis-ci> jruby/jruby (master:8bf3e45 by Kevin Menard): The build has errored. (https://travis-ci.org/jruby/jruby/builds/141344381)
<nirvdrum> Sorry. I needed to do a full build.
<GitHub12> [jruby] nirvdrum pushed 1 new commit to truffle-head: https://git.io/voxhG
<GitHub12> jruby/truffle-head 1fb9c46 Kevin Menard: [Truffle] Removed unused imports.
<GitHub117> [jruby] ostinelli opened issue #3987: OpenSSL::SSL::SSLContext does not implement npn_protocols https://git.io/voxhE
<travis-ci> jruby/jruby (master:6a4ac4a by Kevin Menard): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141346772)
ryez has joined #jruby
pitr-ch has joined #jruby
<travis-ci> jruby/jruby (truffle-head:671d3f5 by Kevin Menard): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141346916)
camlow325 has joined #jruby
<travis-ci> jruby/jruby (truffle-head:1fb9c46 by Kevin Menard): The build failed. (https://travis-ci.org/jruby/jruby/builds/141349120)
subbu is now known as subbu|busy
TheWhip has quit [Remote host closed the connection]
thedarkone2 has joined #jruby
<chrisseaton> is enebo here?
<enebo> chrisseaton: yes
<chrisseaton> what is your thinking about redistributing jars? For example JRuby ships the psych jar, which is Apache licensed and requires the licence to be included, but I don't think we do that
<enebo> chrisseaton: as gems I do not think a lot about it but the gems should include licensing
<enebo> chrisseaton: I am not sure if we should at project root include that info or not
<enebo> chrisseaton: although maybe that is a requirement?
<chrisseaton> For gems like psych you sometimes unpack them, and you end up with just the jar sitting in your lib directory
<enebo> chrisseaton: yeah as a default gem I guess that is true
<enebo> chrisseaton: as an outsider it is not clear it is from that
<enebo> chrisseaton: oh ick…so jline shades jansi and I guess jansi shades hawtjni
<enebo> chrisseaton: I have already fielded several version/license questions for whatever this is about and found when we dual source (as in pom.xml + LICENSE.md + src) we have lost the plot in a few places
<enebo> chrisseaton: so it is probably fine to include something for Apache bundled libs but we have to remember to change it if we ever stop using it
TheWhip has joined #jruby
TheWhip has quit [Remote host closed the connection]
TheWhip has joined #jruby
<ebarrett> chrisseaton: maven makes me cry :(
<ebarrett> im doing a build on a new user account and despite all our buildpack work, it wants to download Downloading https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip
<ebarrett> which is itself...
<GitHub7> [jruby] enebo pushed 7 new commits to inline: https://git.io/vop0B
<GitHub7> jruby/inline a0ea1aa Thomas E. Enebo: Ignore our special __inline__ check (left in commented out for explicit debugging later)
<GitHub7> jruby/inline 41c61bf Thomas E. Enebo: Merge branch 'master' into inline
<GitHub7> jruby/inline 3e4d4f9 Thomas E. Enebo: Whoops...some wrong JITage (need to consolidate this duping from JITCompiler)
shellac has quit [Ping timeout: 272 seconds]
TheWhip has quit []
Hobogrammer has joined #jruby
<headius> chrisseaton: I don't think there's any requirement to include the license with binaries
<headius> the license is for the source
<enebo> headius: ah yeah
<headius> hmm, apache license does say something about having to "give any other recipients of the Work...a copy of this License"
<enebo> headius: hmmm so that seems super limiting for applications
<headius> it doesn't really even make sense, since you can package apache stuff into closed-source projects
<enebo> headius: I am thinking you use Apache and make a game lib and all games need apache boilerplate
<GitHub11> [jruby] chrisseaton pushed 1 new commit to master: https://git.io/vopzt
<GitHub11> jruby/master 92dc6cd Chris Seaton: Add some more licenses that apply to code we are using to COPYING.
<enebo> headius: copyright licenses only apply to source
<headius> and forget about maven...which only pulls bits of pom and a jar file
<enebo> headius: although no doubt people can tack on anything to a license
<enebo> headius: but then it would not strictly be a copyright one
<headius> we do include ASL-2 in COPYING
<enebo> although we do not have any ASL source code do we?
<headius> no, I think chrisseaton meant the snakeyaml lib we use for psych
<enebo> yeah but if we do not distribute source I am confused why we need copyright notice
<headius> psych itself appears to have something sort of BSDish
<headius> yeah me too
<headius> "You may redistribute...in source or Object form provided that you...give the recipients...a copy of this licence"
<headius> but what is "give"
<chrisseaton> Right
<chrisseaton> We do have a copy of the licence, but we weren't saying which applied to which code
<headius> it doesn't say we have to do that :-)
<headius> just give them the license and "figure it out, sucker"
<enebo> ts it just me or does this make Apache really unappealing
<headius> for example: http://search.maven.org/#artifactdetails%7Corg.yaml%7Csnakeyaml%7C1.17%7Cbundle
<enebo> headius: so a url is enough?
<headius> maven central would be in violation if they need to "give" the license when you download it, because they don't now
<enebo> headius: yeah although one another entity not being legal is not really a strong argument
<enebo> headius: or should I say it is not proof it is legal
<headius> ok, here's the problem solved... snakeyaml.jar includes its pom.xml which has license link
<headius> all maven jars probably do
<chrisseaton> ebarrett: I'd recommend having Maven 3.3 installed on your system, and running just mvn rather than mvnw
<nirvdrum> GitHub lets you clone source that doesn't have a license.
<enebo> headius: yeah I saw the link first thing when you showed the page which was why I was wondering it providing can just be a link
<enebo> lunch
<headius> enebo: to me that is "give" enough
<headius> here's the license: url
<ebarrett> chrisseaton: yeah, ill try that tomorrow
<ebarrett> im not having much luck am I? :P
<headius> DO I HAVE TO HAVE A COPY OF THE LICENSE IN EACH SOURCE FILE?
<headius> Only one full copy of the license is needed per distribution. See the policy.
<headius> the verbiage on apache's site is muddled between ASL-2 requirements and ASF requirements
<headius> hard to tell which are which
<headius> not sure if my last came through: it appears that as long as we have an ASL-2 license in our dist, we're fine
<chrisseaton> we do
<nirvdrum> headius: Incidentally, the ASF dictates that Apache projects need a NOTICE file for dependencies *shrug*
<headius> yeah I saw that
<headius> every license wants a different file
<headius> sigh
<headius> it's not clear if the NOTICE file is part of ASL-2 requirements or just an ASF project requirement
<headius> the license says "if" the project includes a NOTICE you must include it
<headius> ASF projects appear to require a NOTICE but that verbiage isn't in ASL-2
<travis-ci> jruby/jruby (inline:9265065 by Thomas E. Enebo): The build has errored. (https://travis-ci.org/jruby/jruby/builds/141387658)
pitr-ch has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
shellac has joined #jruby
rcvalle has joined #jruby
shellac has quit [Quit: Computer has gone to sleep.]
e_dub has quit [Quit: ZZZzzz…]
subbu|busy is now known as subbu
<travis-ci> jruby/jruby (master:92dc6cd by Chris Seaton): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141391430)
<GitHub15> [jruby] headius pushed 1 new commit to packed_arrays: https://git.io/vopyi
<GitHub15> jruby/packed_arrays fa6e09c Charles Oliver Nutter: Utilize packed 1-2 elt arrays more places in the codebase....
<GitHub63> [jruby] nirvdrum pushed 1 new commit to master: https://git.io/vop9x
<GitHub63> jruby/master 0c097d5 Kevin Menard: [Truffle] Removed obsoleted `require_core` method.
lanceball is now known as lance|afk
prasunanand has quit [Ping timeout: 250 seconds]
prasunanand has joined #jruby
pawnbox has quit [Read error: Connection reset by peer]
pawnbox_ has joined #jruby
<GitHub93> [jruby] chrisseaton pushed 1 new commit to truffle-head: https://git.io/vopxv
<GitHub93> jruby/truffle-head 8733720 Chris Seaton: Merge branch 'master' into truffle-head
<GitHub17> [jruby] bjfish pushed 1 new commit to master: https://git.io/vopx1
<GitHub17> jruby/master 1887d24 Brandon Fish: [Truffle] Move require to fix integration-test safe
lance|afk is now known as lanceball
yfeldblum has joined #jruby
subbu is now known as subbu|lunch
e_dub has joined #jruby
<enebo> kares: you play with Java 9 and JRuby Java integration recently?
<travis-ci> jruby/jruby (master:0c097d5 by Kevin Menard): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141416036)
<travis-ci> jruby/jruby (truffle-head:8733720 by Chris Seaton): The build is still failing. (https://travis-ci.org/jruby/jruby/builds/141427957)
skade has quit [Quit: Computer has gone to sleep.]
emakris has quit [Remote host closed the connection]
subbu|lunch is now known as subbu
ryez has quit [Ping timeout: 250 seconds]
<GitHub6> [jruby] headius opened pull request #3988: Packed arrays (master...packed_arrays) https://git.io/vohTd
<headius> enebo: ^^
<headius> I know there's a lot of code in that PR but any review you can provide would be great
<headius> same goes for anyone else
<enebo> PACKED
<headius> the gains are not enormous but tangible...100KB off a blank rails app footprint, potentially more like a few MB of allocation reduced overall for boot+request+error
<headius> I suspect the biggest wins for this will be large data structures that use many small arrays (think two-tuples for a binary tree) and for all our transient RubyArray-packing of single block arguments
<headius> chrisseaton: have you ever gathered data on the various libraries and benchmarks you run to see how well Truffle's object repesentation is doing?
<chrisseaton> well we don't have anything to compare it against
<headius> specifically, I'd like to find some code that makes heavier use of small arrays and see whether expanding this packing to 3-4 elts is worth it
<chrisseaton> you mean like compare it to a hash map or something?
<headius> I mean seeing how much packing only small arrays ends up being worth in an array-heavy library
<headius> analysis of a Rails app showed a rapid drop-off in number of arrays as the size increases beyond 3 or 4
<headius> but there's not an enormous number of arrays in there to begin with
<headius> (blank app)
<headius> the next project I want to look at will either be an all-primitive Array or small packed forms of Hash for just a few elements
<headius> packed objects seem to be working well...they could potentially have primitive forms as well
<headius> base blank rails app boots up in around 50MB of heap
subbu is now known as subbu|away
<travis-ci> jruby/jruby (master:1887d24 by Brandon Fish): The build has errored. (https://travis-ci.org/jruby/jruby/builds/141428604)
subbu|away is now known as subbu
<chrisseaton> Maybe run my acid test with the three-element arrays in it?
<chrisseaton> That's designed to exercise a compact representation of small arrays
<headius> I don't pack three-elt arrays because they appeared to be much rarer than one and two...but it is on my mind
<headius> it wouldn't be a tremendous amount of work to add additional packing sizes
<enebo> chrisseaton: do you have any tools for measuring memory?
<enebo> chrisseaton: Last time I tried I just looked at processes RSS
<chrisseaton> Yes we measure total allocation and minimum heap size for running Truffle
<enebo> chrisseaton: so there is an API for asking for heap
<headius> minimum heap size = maximum heap allocation yeah?
<enebo> chrisseaton: and all code is in heap too or is native code generated not part of that?
<chrisseaton> We bisect heap sizes until the program can't run any more
<headius> or maximum heap occupation
<chrisseaton> No, the smallest heap we can function in
<headius> right
<headius> same thing then
<chrisseaton> No!
<headius> Yes!
<enebo> heh
<chrisseaton> Because if I give you 10 GB of heap, and you use it for caches, then that's not a minimum is it
<headius> the minimum heap you can run in is bounded by the maximum number of live objects you'll need in the heap
<chrisseaton> It's what it says on the tin - the smallest heap you can run it
<headius> the maximum number to run properly
<enebo> chrisseaton: so you tally up live objects and that is minimum
<enebo> ?
<chrisseaton> No, it's the smallest -Xmx value we can run in without crashing
<enebo> chrisseaton: ah I see. I have not tried that
<chrisseaton> You can't just measure RSS, because if you give Java extra memory it may find something useful to do with that, but that doesn't mean it needed that space
<enebo> chrisseaton: no I figure RSS is worst-possible way which was why I was asking
<chrisseaton> No that's the mistake - it isn't worst possible
<chrisseaton> Because Java will fill up caches if it has spare space
<headius> I'm just drawing a distinction with heap size after a memory-heavy boot cycle...that blank Rails app ends up at 50MB of occupied heap, but the heap grows to several hundred MB while booting
<enebo> chrisseaton: yeah but I am interested in minimum not what you happened to allocate
<headius> so it's the maximum amount of required heap occupation that gives you a minimum heap size for running
<enebo> chrisseaton: so RSS tells me nothing
<chrisseaton> This problem is so complex - and really we need to measure performance at the same time, because it'll be slower with less memory, faster with more, so you can't separate the two
<chrisseaton> So I tried to think about what practically matters - and people want to know if they can run in their DO droplet - and this answers that question
<headius> what tool are you using for that measurement now?
<chrisseaton> tools/jt.rb metrics minheap and alloc - you can run it for classic with -Xclassic
subbu is now known as subbu|away
<chrisseaton> Let me put together an example
<headius> RSS includes a lot more than heap though
<enebo> chrisseaton: yeah my way is pretty horrible but I just eye ball it in visualvm by jamming on the gc button once whatever I am measuring runs long enough to hit a stable state :)
<headius> you can size the heap all you want but still need a lot more than heap to run
<headius> GC'ed heap I mean
<headius> are you talking GC heap or total process heap?
<enebo> who?
<headius> when you say "minimum heap"
<enebo> oh chris
<enebo> heh
<chrisseaton> It's literally -Xmx
<headius> I've seen plenty of JVM apps that consumed several hundred MB more than Xmx
<chrisseaton> Oh right, metaspace etc
<headius> there's a lot of invisible native memory used by JVM and JNI
<chrisseaton> Yeah we aren't measuring that
<enebo> I was able to run empty rails app on raspi so I think our heap can go quite low
<headius> so you need to know RSS minimum more than Xmx minimum
<headius> well not more than...in addition to
<chrisseaton> I'm mainly looking for changes at the moment, so not looking at the absolute yet
<enebo> chrisseaton: headius: are there tools for measuring native generated code?
<headius> nice...your tool should be useful for classic as well
<headius> code?
<chrisseaton> I think the best thing to do would be to literally have a sever with 512 MB, 1 GB, 10 GB of RAM, and run benchmarks on those
<chrisseaton> tool/jt.rb metrics minheap -Xclassic -e 14
<headius> like from JIT?
<enebo> headius: yeah what JIT makes
<headius> you can query how much of the code cache is being used
<chrisseaton> Takes a few minutes
<enebo> headius: that is not in Java heap
<headius> I don't know what the default max is right now
<chrisseaton> This tells me JRuby classic runs -e 14 in a 7 MB heap
<headius> code cache holds the native code plus some metadata
<chrisseaton> Which is pleasantly surprising
<headius> chrisseaton: very....people wouldn
<headius> wouldn't give us such a hard time if the JVM didn't so aggressively increase the heap
<headius> I suppose that's tunable but tuning anything on the JVM is a black hole
<chrisseaton> Truffle is heavily disadvantaged for min heap actually - because the compiler is also running in the user heap in our case
<headius> ahh, good point
<enebo> ah
<headius> 7MB boot for jruby 9k is pretty good
<headius> considering the increase in size from IR
<chrisseaton> You can run some scripts by just changing -e 14 for whatever command line you want
<enebo> chrisseaton: can you measure 1.7 with jt?
<chrisseaton> And add options there etc
<headius> yeah cool, thanks
<headius> is this stuff on wiki somewhere?
<chrisseaton> Maybe with the RUBY_BIN option - not sure
<chrisseaton> No, but jt.rb --help says a lot
<headius> might be good to throw up a few sentences on what we are all using to improve things
<enebo> chrisseaton: maybe just swap jruby.jar with 1.7 one
<headius> enebo: jruby.home stuff will not work well
<chrisseaton> There is also metrics time, and metrics alloc
<headius> it won't find RG to boot etc
<enebo> -e 14
<chrisseaton> I find alloc often goes up without effecting min heap, so I don't worry about it too much
<headius> -e 14 still loads RG
<enebo> headius: does 1.9 load rg by default?
<headius> yes
<enebo> headius: heh
<enebo> time stops for no man
<headius> hah
<headius> chrisseaton: other things that would be interesting to figure out is what the highest memory consumers are for live heap in a big app and what are the heaviest allocated objects for a running app
<headius> I do that as one-off analysis on various things but we don't have anything standard
<enebo> I think minimum heap + code cache would be an interesting comparison too
<headius> and instrumenting allocation is so expensive it makes all but the most trivial scripts unusably slow
<enebo> assuming that can be measured with graal
<headius> hmmm
<enebo> PE seems like it might generate a lot of code
<chrisseaton> Code cache is just that though - cache - so it fills up available space, and could run with less
<headius> we might be able to do cheaper allocation profling if we added the Ruby alloc hooks and ran interpreted...we can generate an interpreted stack trace *way* faster than JVM can generate a compiled one
<chrisseaton> Well the idea of PE is that it generates very little code :) but it generates bit data structures along the way yeah
<enebo> chrisseaton: ah yeah I guess it would wouldn’t it :) I did not think that through
prasunanand has quit [Ping timeout: 260 seconds]
<enebo> chrisseaton: so then that will generally all be in heap as well
<headius> well, I was under the impression that there would be many fully-PE'ed paths live at once
<headius> for different shapes of code and data
<headius> good for perf but doubling a lot of code
<chrisseaton> Yes I suppose it generates multiple copies, but only when it thinks its' worth it
<headius> sure
<chrisseaton> We're adding processor cycle estimates into the model now, even
<enebo> chrisseaton: thanks this is helping to fill in some gaps for me
<headius> yeah, our inlining is based on safepoint counts so that's kinda sort getting to cycle estimation
<headius> hard to know what's happening between all those safepoints but they happen on a fairly regular cadence
<headius> I suppose I should say JRuby safepoints rather than JVM safepoints
<chrisseaton> did I mention Brandon Fish is now working part time for us?
<headius> yeah I heard, very cool
<headius> how many FTE now?
<chrisseaton> 4.5
<enebo> chrisseaton: yeah I saw that
<headius> you're still .5 or is that eregon?
<chrisseaton> Brandon is half time
<headius> ahh ok
<headius> well cool
yfeldblum has quit [Ping timeout: 250 seconds]
<headius> I think we've gotten enough kinks worked out of 9k that we can start being more aggressive on opto
<chrisseaton> This is open source at its best - literally saying to an open source collaborator keep doing what you're doing and we'll just start paying you for your time
<headius> packing data is part of that
<headius> I want to do a pass over things to try to remove extraneous call frames from our interpreter and call path also
<headius> chrisseaton: any idea of stack use in JT?
<headius> AST interpreter can really bloat that up, but ideally it reduces soon after
<chrisseaton> No, but I'm guessing it might be a tad high in Truffle
<headius> so there's going to be a high early maximum for stack
<headius> that fades
<enebo> If we can make InterpreterEngine be Interpreter we can kill that whole frame but Interpreter exists for the backtrace detection mostly
<enebo> and there are different execution paths into the engines
<enebo> like eval vs no
<enebo> headius: I am not sure if IR uses less or more stack now
<enebo> headius: with indy I know we also have some hidden frames
<enebo> It seems it should be shorter
<enebo> block is pretty bad atm though
<headius> it uses more for very simple methods and significantly less for complex ones, I would guess
<headius> we have a lot of useless frames leading into interpreter that would have been maybe one or two for a simple AST method
skade has joined #jruby
<headius> like each Ruby frame in interpreter equates to a half dozen JVM frames or more
<enebo> we did still have INTERPRET_METHOD in 1.7 right?
<headius> we did, that's one hop
<enebo> yeah so same number for that still
<enebo> one for engine
<headius> that could be improved too...I went with a very isolated and unique name to reduce problems calculating frames
<enebo> one to call sub method for callOperation
<headius> right
<headius> switch splitting
<headius> Instr.execute
<enebo> I guess we could reduce interp perf for less stack
<headius> especially in simple
<enebo> startup yeah
<headius> as long as we don't cross JIT size boundary
<enebo> heh famous last words
<headius> :-D
<headius> other problem is that most of these splits won't inline, or at least not until much later
<enebo> if we did not specialize interp for operands in startup it could be quite a bit smaller for call
<enebo> which we could do
<headius> so passing a half-dozen params through a half-dozen frames equals a lot of wasted frame space
<enebo> startup would likely not slow down
<enebo> well those were empirically averaged out to be manual inline decisions
<headius> yeah
<headius> I understand
<headius> we have a lot of overloads leading up to interp too
<enebo> kind of a bummer
<headius> we could collapse some of those
<enebo> I really really thought mega call site would be it
<headius> it's really sad that idiomatic Java is so frequently the worst pattern for JIT
<enebo> of course the other issue if we needed to decouple operand decoding from the instr
<headius> overloads, delegation, interfaces
<headius> varargs
<enebo> then we could switch on arity but mega on the actual meat
<headius> hmm yeah
<enebo> not decoding all operands in all instrs would reduce code significantly
<headius> stupid hotspot and its lack of type specialization
<enebo> multimethods
<enebo> where is the JEP!
<headius> heh, author one
<headius> I already checked that off my bucket list
<headius> chrisseaton: hey is there still an svm javascript binary out there somewhere? I can't find it
<kares> enebo: hey! not really - did not try 9 yet ... anything interesting?
<enebo> kares: I got an setAccessible error right away
<kares> najs!
<enebo> kares: I think jigsaw changes might end up now allowing some of that
<enebo> perhaps it is just some policy file we need to set up
<enebo> but since we do it to any code we load it might end up being more of an issue
<kares> interesting
drbobbeaty has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<headius> kares: hey if you get a chance you might look over the packed_arrays PR too
<headius> might be easier to look at it as one big diff...there's a lot of commits
<chrisseaton> headius: no
<chrisseaton> Hopefully SVM builds of JRuby in the next few months
yfeldblum has joined #jruby
jeremyevans has quit [*.net *.split]
joast has quit [*.net *.split]
johnsonch_afk has quit [*.net *.split]
Antiarc has quit [*.net *.split]
kith has quit [*.net *.split]
pawnbox_ has quit [Remote host closed the connection]
<headius> chrisseaton: boo
<headius> I never got a chance to play with it
<headius> svm builds of JT would be neat though
subbu|away is now known as subbu
skade has quit [Quit: Computer has gone to sleep.]
pawnbox has joined #jruby
tcrawley is now known as tcrawley-away
e_dub has quit [Quit: It's a hard knock life]
e_dub has joined #jruby
e_dub has quit [Read error: Connection reset by peer]
e_dub has joined #jruby
enebo has quit [Quit: enebo]
shellac has joined #jruby
drbobbeaty has joined #jruby
skade has joined #jruby
shellac has quit [Quit: Computer has gone to sleep.]
shellac has joined #jruby
e_dub has quit [Read error: Connection reset by peer]
e_dub has joined #jruby
e_dub has quit [Read error: Connection reset by peer]
e_dub has joined #jruby
shellac has quit [Quit: Computer has gone to sleep.]