Show enters and exits. Hide enters and exits.
| 00:00:15 | toulmean | evan: I did pull your master branch 5 minutes ago. |
| 00:00:18 | brixen | evan: awesome! |
| 00:00:23 | evan | toulmean: hm, ok.n |
| 00:00:35 | brixen | toulmean: what platform? |
| 00:00:39 | toulmean | should I switch to a maintenance branch ? |
| 00:00:45 | toulmean | OS X 10.6.3 |
| 00:00:55 | evan | toulmean: no |
| 00:01:06 | evan | I see UNIXSocket.pair in socket.rb |
| 00:01:07 | toulmean | ok let me get a gist for you. |
| 00:01:11 | evan | so i don't know why you don't see it. |
| 00:01:17 | toulmean | ok. |
| 00:01:26 | toulmean | rake clean... |
| 00:01:52 | evan | you don't need to do that. |
| 00:01:57 | evan | but i suspect you already have. |
| 00:02:05 | evan | check that you have it in irb. |
| 00:02:09 | toulmean | yeah. |
| 00:02:10 | toulmean | ok |
| 00:02:12 | toulmean | will do. |
| 00:02:15 | evan | k |
| 00:35:49 | bcg | evan: I just merged in evanphx/master and all the sudden I'm getting "ld: library not found for -lruby-static" ... any ideas? |
| 00:36:10 | bcg | evan: when I do a full rake build that is |
| 00:36:15 | evan | gist the output please |
| 00:36:25 | evan | brixen made a change yesterday that might be the cause. |
| 00:36:26 | brixen | bcg: building Melbourne for MRI? |
| 00:36:31 | brixen | yeah |
| 00:36:36 | brixen | argh effing platforms |
| 00:36:37 | brixen | man |
| 00:36:50 | bcg | Building Melbourne for MRI |
| 00:36:50 | bcg | LDSHARED ruby/melbourne.bundle |
| 00:36:50 | bcg | ld: library not found for -lruby-static |
| 00:36:51 | bcg | collect2: ld returned 1 exit status |
| 00:36:51 | bcg | rake aborted! |
| 00:37:16 | bcg | sorry for the paste |
| 00:38:02 | brixen | bcg: what is your build ruby? |
| 00:38:02 | bcg | http://gist.github.com/453642 |
| 00:38:21 | brixen | rvm... hmm |
| 00:38:48 | bcg | I have tried 1.8.6 1.8.7 and ruby-head (all through rvm) |
| 00:38:53 | brixen | yeah |
| 00:39:22 | brixen | the lib probably exists but not where ld would see it |
| 00:39:28 | brixen | le sigh |
| 00:40:02 | brixen | bcg: could you gist me your ruby's rbconfig? |
| 00:40:11 | brixen | I could add the link dir too |
| 00:40:15 | evan | brixen: we probably need to inject a -L |
| 00:40:15 | evan | yeah |
| 00:40:19 | brixen | yeah |
| 00:40:28 | evan | oh the joys of compilers. |
| 00:42:30 | bcg | brixen: like the 'pp RbConfig::CONFIG' to a gist? |
| 00:44:10 | brixen | bcg: well, could you find where your libruby-static.a is under that .rvm dir |
| 00:44:27 | brixen | then tell me which entry in Config::CONFIG is that dir |
| 00:44:30 | brixen | if you could |
| 00:45:26 | bcg | ah ... this might be an rvm issue ... shocker ... when I run "rake" ... it eventually calls "/Users/bcg/.rvm/rubies/ruby-1.8.6-p399/bin/ruby -S rake" ... but 'which ruby' is returning the ruby in 'ruby-head' |
| 00:46:11 | brixen | bcg: well, I still need to add a -L dir based on the ruby rvm has "installed" |
| 00:48:03 | bcg | brixen: /Users/bcg/.rvm/rubies/ruby-head//lib/libruby-static.a ... I'll see what var is associated with that |
| 00:49:47 | brixen | bcg: could you try with this patch http://gist.github.com/453649 |
| 00:52:24 | bcg | brixen: confirmed that was the right var, added the patch and it linked! |
| 00:52:33 | brixen | bcg: sweet, thanks |
| 00:52:36 | brixen | I'll push this |
| 00:53:19 | bcg | brixen: then it segfaulted, but I think thats because I have some objects from different versions mixed or something ... doing a fresh clean build now .. thanks! |
| 00:53:26 | brixen | ok |
| 00:54:57 | evan | so, I accidentally fucked up the arguments to a C++ method (there were too many weird arguments, i've fixed that) |
| 00:54:58 | evan | but anyway |
| 00:55:06 | evan | the mix up caused great perf |
| 00:55:11 | brixen | hah |
| 00:55:19 | evan | i know |
| 00:55:21 | evan | *eyeroll* |
| 00:55:32 | evan | the flag disabled size calculation |
| 00:56:13 | evan | but it does tell me that i need to tweak the inline policies |
| 00:56:25 | brixen | interesting |
| 00:59:26 | bcg | Still segfaulting during build: http://gist.github.com/453653 |
| 01:04:00 | brixen | bcg: I think that may be a problem with the wrong ruby trying to run the ext built |
| 01:04:13 | brixen | what's the deal with 'which ruby' under rvm? |
| 01:04:46 | bcg | [20:56:20] bcg:rubinius git:(master*) $ which ruby |
| 01:04:46 | brixen | bcg: btw, did you run ./configure with the ruby that is active in your shell? |
| 01:05:14 | brixen | you can't run configure with one ruby, then rvm another, and rake build |
| 01:05:42 | bcg | brixen: ah I may not have ... Im not used to this build system yet .. sorry |
| 01:06:09 | brixen | (which will be fixed once our build is not frankenbuild) |
| 01:06:29 | brixen | bcg: no worries, just run ./configure again |
| 01:06:43 | brixen | then rake extensions:clean; rake |
| 01:07:33 | boyscout | Add link dir for building Melbourne on MRI. - d19d0a8 - Brian Ford |
| 01:07:34 | bcg | brixen: yup, rebuilding now ... I'm sure it was the configure step I was missing after I started trying all the different MRI versions to fix the linking issue |
| 01:07:50 | brixen | bcg: oh ok |
| 01:08:06 | brixen | yeah, we have to propagate the build ruby through the build system |
| 01:08:19 | brixen | this issue will be fixed with the new build system |
| 01:08:58 | evan | possible name for new build system: YourBuildSystemSucks |
| 01:09:05 | brixen | heh |
| 01:09:16 | brixen | ybss |
| 01:09:22 | brixen | nearly twss! |
| 01:09:22 | bcg | ha |
| 01:09:27 | evan | hah |
| 01:14:40 | brixen | so, I know the world cup is the big deal right now |
| 01:14:59 | brixen | but I think it's: #pack specs - 0, me - 1 |
| 01:15:20 | evan | fuck yeah |
| 01:15:22 | brixen | so I'm gonna get some dinner |
| 01:16:21 | brixen | if boyscout would hurry up... |
| 01:16:53 | boyscout | CI: rubinius: d19d0a8 successful: 3456 files, 13607 examples, 41171 expectations, 0 failures, 0 errors |
| 01:16:57 | brixen | heh |
| 05:28:56 | Defiler | well at least three letters of this guy's username are accurate http://twitter.com/assaf/status/17035724921 |
| 05:36:11 | brixen | haha |
| 05:36:34 | brixen | it is good form for me not to say such things :) |
| 05:36:49 | brixen | but that does not mean I have not thought them |
| 05:37:09 | brixen | but anyway, I may or may not have had such thoughts long before that particular tweet |
| 05:37:48 | brixen | I have another thought for you: Array#pack in a word, UGH |
| 05:40:40 | mdavid | evan Are you around at the moment? |
| 05:41:11 | evan | yep |
| 05:41:17 | evan | how can I help you on a friday evening? |
| 05:43:50 | mdavid | Howdy :-) well, as blowmage has suggested via a separate conversation I've been considering reviving the Ruby.NET project and placing focus on bringing rubinius into central focus, porting/mixing the IronRuby/Ruby.NET/rubinius code base... |
| 05:45:33 | brixen | interesting |
| 05:45:39 | brixen | have you looked at the rubinius codebase? |
| 05:46:01 | evan | mdavid: ok, cool. what can we tell ya? |
| 05:46:19 | mdavid | I have, yes. The one question I wanted to ask quickly was if you were aware that LLVM is now included as part of the Mono runtime? |
| 05:46:32 | brixen | wow, cool |
| 05:46:38 | brixen | I didn't know that, no |
| 05:47:27 | mdavid | evan you have to enable it during compilation, but as of 2.6.x, it's now a part of the runtime with plans to make it a major part of the platform from this point forward. |
| 05:48:10 | mdavid | evan There's two caveats to consider, however. |
| 05:49:04 | mdavid | 1: Mono doesn't support C++-CLI, or IOW, there's no C++ runtime support. |
| 05:49:29 | evan | ok |
| 05:49:45 | evan | i wasn't sure if you were targeting Mono or Microsofts Runtime |
| 05:50:26 | mdavid | 2: Actually, I'm not sure if there's a second caveat as that all depends on how hard it would be to access LLVM from MS.NET on Windows. |
| 05:50:32 | evan | well, step one would be write a rbc loader and simple interpreter |
| 05:50:50 | evan | well |
| 05:50:59 | evan | i think you're confused about LLVM |
| 05:51:20 | evan | it's totally operational. |
| 05:51:31 | blowmage | evan: how do i navigate the rbx codebase? where is the loader and interpreter? |
| 05:51:34 | evan | you should be ignore that it's even an option. |
| 05:51:50 | evan | because your JIT will be translating rubinius bytecode to CLR bytecode |
| 05:52:31 | mdavid | evan okay. So I assume then that you chose LLVM purely for JIT performance reasons? |
| 05:53:12 | evan | yes |
| 05:53:30 | evan | for some reason, people think that LLVM is used as the interpreter |
| 05:53:42 | evan | LLVM doesn't have a real interpreter. |
| 05:53:48 | evan | we use it entirely for the JIT |
| 05:54:10 | mdavid | evan not necessarily. LLVM is included in Mono as a way of creating platform specific executables. |
| 05:54:18 | evan | because it's very complete (lots of optimizations), easy to integrate |
| 05:54:28 | brixen | blowmage: you might start with doc/bootstrapping.txt |
| 05:54:30 | mdavid | evan it's a direct byproduct of the monotouch effort |
| 05:54:33 | evan | mdavid: no no |
| 05:54:36 | evan | LLVM usage in rubinius |
| 05:54:39 | evan | i don't know how mono uses it. |
| 05:55:07 | blowmage | brixen: thx |
| 05:55:29 | brixen | blowmage: also doc/table_of_contents.txt |
| 05:55:53 | brixen | blowmage: the doc/*.txt are pretty current, but stay away from doc/vm atm, it's old |
| 05:56:41 | mdavid | evan I'll verify for sure, but the point of LLVM inside of the Mono runtime, I believe, is to create platform specific code, bypassing CIL altogether |
| 05:57:22 | brixen | mdavid: curious, what are your goals that are not met by ironruby? |
| 05:57:41 | mdavid | brixen performance. |
| 05:57:55 | brixen | mdavid: that's very broad :) |
| 05:58:15 | brixen | you realize we have a lot of ruby code and a very good jit is what makes that practical? |
| 05:59:03 | brixen | btw, how does the performance of mono compare generally to MS? |
| 05:59:44 | mdavid | brixen haha! yeah, it is, but the primary reason I took over the Ruby.NET project was directly related to providing the ability to write .NET apps in Ruby while maintaining the performance of a statically compiled language. |
| 06:00:27 | evan | mdavid: ... |
| 06:00:47 | mdavid | brixen re: Mono vs. MS.NET: That depends. In some situations Mono outperforms MS.NET. But in most cases, MS.NET outperforms Mono. |
| 06:00:57 | brixen | I see |
| 06:01:32 | brixen | I'm pretty fuzzy, was Ruby.NET initially a port of MRI to C#? |
| 06:01:37 | evan | mdavid: Rubinius gets performance from 2 areas |
| 06:02:20 | evan | a well tuned bytecode interpreter and a dynamic type-feedback JIT |
| 06:02:55 | evan | for your purpose, you should think of the JIT part as something that, at runtime, translate rubinius bytecode to CLR bytecode and compiles it |
| 06:03:01 | mdavid | brixen no. Ruby.NET was designed as a static compiler for the Ruby language running on the .NET platform. |
| 06:03:05 | evan | there is no static compiling. |
| 06:03:16 | brixen | mdavid: ah ok |
| 06:03:18 | evan | and I don't think you can achieve any kind of decent performance from trying. |
| 06:03:50 | evan | when we use LLVM, it writes machine code to memory only, never to disk |
| 06:04:00 | evan | it's not compiling ruby to static machine code that can be reused. |
| 06:04:13 | toulmean | evan: brixen: I still get this error running vanity's rake test: |
| 06:04:14 | toulmean | http://gist.github.com/453829 |
| 06:04:19 | toulmean | it's just one failure: |
| 06:04:24 | brixen | it's compiling a specific type-profile to machine code |
| 06:04:26 | toulmean | GC is not a module (TypeError) |
| 06:04:28 | evan | toulmean: ack!! |
| 06:04:30 | evan | fuck. |
| 06:04:39 | evan | thats related to the fix I did recently |
| 06:04:40 | evan | damnit. |
| 06:04:48 | evan | toulmean: i'll push a fix now. |
| 06:04:59 | toulmean | cool |
| 06:05:12 | mdavid | evan yeah, I was aware of that, and it was for this reason I wanted to chat with you about bridging the gap between the Ruby.NET approach and the rubinious approach, using the IronRuby code base as the foundation for moving forward. |
| 06:05:18 | brixen | toulmean: down to one though, woot! :) |
| 06:05:43 | toulmean | yes excellent guys |
| 06:06:01 | brixen | mdavid: well, let me ask you, how do you propose to compile fast code in the absence of runtime type info? |
| 06:06:11 | evan | mdavid: what from the ironruby code base did you want to use? |
| 06:08:42 | mdavid | evan In reading through your last few questions I think I need to spend a few more hours researching before wasting any more of your time. Will you be around this weekend? |
| 06:08:57 | blowmage | what does rbx use to parse the ruby files? |
| 06:08:59 | evan | mdavid: on and off |
| 06:09:01 | evan | mdavid: via email is best |
| 06:09:38 | mdavid | okay. blowmage: you still online or did you head off for the night? |
| 06:09:49 | blowmage | i’m gonna head to bed soon |
| 06:09:56 | mdavid | evan sorry, that last 'okay' was for you. |
| 06:09:58 | brixen | blowmage: it uses melbourne, a C ext based on MRI's parser |
| 06:10:08 | evan | mdavid: cool. |
| 06:10:19 | brixen | blowmage: google for my blog posts on the EY blog |
| 06:10:30 | brixen | blowmage: it explains it better than any docs we have |
| 06:10:37 | brixen | blowmage: well, mine and evan's posts |
| 06:10:57 | blowmage | brixen: thx. we would need to port that as well |
| 06:11:00 | mdavid | blowmage I'll spend a few hours doing some more research and then start a thread between the three of us once I have a better grasp of things from the rubinius side. |
| 06:11:13 | blowmage | or, take the parser from ironruby or ruby.net |
| 06:11:22 | blowmage | mdavid: sounds good |
| 06:12:37 | evan | mdavid: ok |
| 06:12:37 | mdavid | evan thanks for your time! |
| 06:13:15 | boyscout | GC is a module, not a class. - e933046 - Evan Phoenix |
| 06:13:39 | mdavid | evan sorry I wasn't better prepared. That will be fixed before the start of our next conversation. Have a good night! |
| 06:13:45 | evan | mdavid: no prob. |
| 06:13:51 | evan | mdavid: i'm happy to answer questions |
| 06:14:08 | evan | mdavid: nite! |
| 06:14:10 | mdavid | evan I appreciate that immensely! |
| 06:14:27 | mdavid | even nite |
| 06:14:46 | mdavid | blowmage catch you via email... sleep well! |
| 06:14:57 | blowmage | l8r |
| 06:16:31 | brixen | [1].pack("x*") => "" |
| 06:16:37 | brixen | bug? mri? |
| 06:16:39 | brixen | ugh |
| 06:21:32 | boyscout | CI: rubinius: e933046 successful: 3456 files, 13607 examples, 41171 expectations, 0 failures, 0 errors |
| 06:23:41 | toulmean | thanks guys. |
| 06:24:42 | brixen | toulmean: yw |
| 06:46:59 | toulmean | there are more failures related to TempFiles. |
| 06:47:36 | toulmean | http://gist.github.com/453852 |
| 06:47:53 | toulmean | are you guys handling temporary files in a different way from MRI ? |
| 06:57:24 | brixen | the error is in require it looks like |
| 06:57:52 | brixen | where is this 'initializer' it's supposed to be requiring? |
| 06:58:40 | toulmean | brixen: I dunno for sure, but did you see the errors with temp files before ? |
| 06:58:55 | brixen | nothing rings a bell offhand |
| 06:59:06 | toulmean | I was thinking the temp files were not found for some reason, and that they were required. |
| 06:59:43 | brixen | well, the output is "from <some temp file looking file name>" |
| 06:59:56 | brixen | actually, that doesn't look like rbx |
| 07:00:08 | brixen | I don't think I used ` in the error message |
| 07:00:08 | toulmean | ohoh. |
| 07:00:11 | brixen | looks |
| 07:00:26 | toulmean | that would be funny. |
| 07:01:06 | brixen | I hate that `string' type of quoting |
| 07:01:17 | toulmean | maybe it's just that the master branch doesn't pass. |
| 07:02:18 | brixen | I don't know what's running but I'm pretty sure those `require' errors are MRI |
| 07:02:37 | toulmean | that's awesome. Thanks for looking. |
| 07:02:50 | toulmean | let me see if I find some stuff. |
| 07:02:50 | brixen | the failures are another matter |
| 07:02:59 | brixen | do the tests subprocess anything? |
| 07:03:29 | toulmean | "test/rails_test.rb: open("|ruby #{tmp.path}").read" |
| 07:03:34 | brixen | :D |
| 07:03:47 | toulmean | grep -r "ruby" * |
| 07:03:51 | toulmean | let me change that |
| 07:03:57 | brixen | love those kind of tests |
| 07:04:54 | toulmean | stupid. |
| 07:05:01 | toulmean | and then he rants about other impls |
| 07:05:07 | brixen | hehe |
| 07:05:23 | toulmean | I like to go after Assaf, I always pissed him off :) |
| 07:05:24 | brixen | it's always wise to be cautious with criticisms |
| 07:05:45 | brixen | it's very easy for them to whip around and bite the first ass they see |
| 07:05:52 | brixen | which is typically your own :) |
| 07:07:30 | brixen | toulmean: haha, you taunt |
| 07:07:37 | brixen | I just saw your tweet :) |
| 07:07:53 | toulmean | yeah. I piss off this guy since 2007 |
| 07:08:06 | toulmean | you should have seen me asking him why he insisted on working on a 13" |
| 07:08:12 | toulmean | or why he would only use vi |
| 07:08:18 | brixen | heh |
| 07:08:24 | toulmean | I learnt a lot because he could justify himself |
| 07:08:25 | brixen | hey wait, I use vi |
| 07:08:34 | brixen | no wait, I use gvim |
| 07:08:36 | brixen | close |
| 07:08:37 | toulmean | but he was like the only guy on the floor using that config |
| 07:08:42 | toulmean | yeah. |
| 07:08:46 | toulmean | but you do ruby dev |
| 07:08:52 | toulmean | he was doing........ |
| 07:08:54 | toulmean | a maven2 build |
| 07:08:58 | brixen | heh |
| 07:09:05 | toulmean | and he was working on .... the BPEL 2.0 spec |
| 07:09:32 | toulmean | so no, really. vi over fedora when everybody else was on ubuntu/eclipse |
| 07:09:42 | toulmean | he is a funny man :) |
| 07:09:56 | brixen | every crowd needs a nonconformist |
| 07:10:30 | toulmean | did you see his last tweets ? |
| 07:10:49 | toulmean | oh well :) |
| 07:10:57 | toulmean | he's been entertaining me for so long now. |
| 07:16:26 | toulmean | it now chokes on require "initializer" |
| 07:16:37 | toulmean | not sure where that is. It is rails related. |
| 07:17:18 | toulmean | brixen: do you have to require rubygems explicitely ? |
| 07:17:25 | toulmean | I am starting to think that's the problem. |
| 07:19:23 | toulmean | yep - require "rubygems" fixes it. |
| 07:20:19 | brixen | we have rubygems, but no, you have to require it |
| 07:20:55 | brixen | and now, I require some Zzzz's :) |
| 07:22:29 | brixen | toulmean: oh, next step, can you get us some -Xprofile on what's slow by chance? |
| 07:22:47 | brixen | flips the light switch to "off" |
| 07:24:56 | toulmean | have a good night. |
| 07:25:00 | toulmean | I will do that. |
| 08:09:12 | Defiler | You know, I'm not sure I know the answer to this question yet: http://readlist.com/lists/ruby-lang.org/ruby-talk/8/44027.html |
| 14:38:47 | dbussink | good day people |
| 15:17:59 | dbussink | brixen: ping? |
| 17:12:21 | brixen | dbussink: ? |
| 17:13:06 | dbussink | brixen: i've got a fix here locally for http://github.com/evanphx/rubinius/issues#issue/358 but i wonder how to spec it |
| 17:13:22 | dbussink | because it's a combination of $KCODE, regexps and Array#pack |
| 17:14:06 | dbussink | brixen: this is the fix i have, basically the problem is that with a KCODE set, regexp will iterate over each character here: https://gist.github.com/bb37fa51fbbeb9df7d96 |
| 17:14:22 | dbussink | and m[0] then only accesses the first byte of a multi byte character |
| 17:16:31 | brixen | well, what's your question about how to spec it? |
| 17:16:40 | brixen | you wonder where to spec it? |
| 17:17:44 | brixen | blast, next isn't running ensures? :( |
| 17:19:00 | dbussink | brixen: well, how to spec the interaction between KCODE and array pack here |
| 17:19:09 | dbussink | probably belongs in pack i assume |
| 17:19:24 | cremes | brixen: any chance you could peek at http://github.com/evanphx/rubinius/issues#issue/389 ? |
| 17:19:40 | cremes | it's a git commit privilege problem |
| 17:19:50 | brixen | dbussink: I get 10 from your code example in irb... |
| 17:20:04 | dbussink | brixen: in rbx? |
| 17:20:16 | brixen | dbussink: oh haha |
| 17:20:26 | brixen | I was in rbx, and then for some reason started irb |
| 17:20:30 | brixen | my bad :P |
| 17:20:31 | dbussink | hehe |
| 17:21:08 | brixen | cremes: I can't do anything with repo permissions |
| 17:21:17 | brixen | cremes: I can push a commit for you |
| 17:21:51 | cremes | brixen: ok; i already committed by spec & fix to my local copy so i don't know how to get it back as a patch |
| 17:21:53 | brixen | dbussink: I get nil for p a rather than 1 |
| 17:22:01 | brixen | dbussink: did you run that in a script? |
| 17:22:05 | dbussink | brixen: yeah |
| 17:22:11 | brixen | dbussink: ok |
| 17:22:16 | dbussink | just ran it here locally |
| 17:22:21 | brixen | cremes: git format-patch head^^ |
| 17:22:23 | dbussink | definitely outputs 1 :) |
| 17:22:32 | brixen | cremes: or HEAD^^ |
| 17:22:48 | brixen | dbussink: maybe your output got clipped :D |
| 17:23:06 | dbussink | brixen: if i change it to a 2, it outputs a 2 :P |
| 17:23:09 | cremes | got 'em back; neat |
| 17:23:17 | brixen | dbussink: oh darn, there go my theories |
| 17:23:18 | cremes | want them as a gist or can i email them to you? |
| 17:23:26 | brixen | cremes: gist is great |
| 17:25:11 | cremes | brixen: http://gist.github.com/454200 |
| 17:26:00 | cremes | this is a fix so the Mongo BSON C extension can serialize Time objects |
| 17:26:42 | brixen | dbussink: how to spec Array#pack with $KCODE http://gist.github.com/454204 |
| 17:27:00 | brixen | dbussink: put all that in a ruby_version_is ""..."1.9" |
| 17:27:30 | brixen | cremes: ok, cool, thanks |
| 17:27:34 | brixen | one sec... |
| 17:36:55 | boyscout | spec to test that Time objects return type T_DATA to match MRI - e28d9d7 - Chuck Remes |
| 17:36:55 | boyscout | Time objects return T_DATA to match MRI C API - f0f098b - Chuck Remes |
| 17:39:59 | dbussink | brixen: ok, cool, will try that out |
| 17:40:09 | dbussink | brixen: able to repro that ensure issue? |
| 17:44:20 | brixen | dbussink: yep |
| 17:45:09 | boyscout | CI: rubinius: f0f098b successful: 3456 files, 13607 examples, 41171 expectations, 0 failures, 0 errors |
| 18:08:50 | dbussink | brixen: so, going to watch the game? :P |
| 22:08:53 | jcxplorer | evan: I guess here is better than twitter for this. I ran the app for a couple of minutes, and got this out: http://gist.github.com/454374 |
| 22:09:40 | jcxplorer | That's with Rubinius 1.0.1 |
| 22:22:27 | dbussink | jcxplorer: with what is this? it's spending almost all it's time in select() |
| 22:22:35 | dbussink | probably waiting for some i/o |
| 22:22:49 | jcxplorer | That's with Unicorn |
| 22:23:17 | jcxplorer | And that's just how Unicorn works |
| 22:24:26 | dbussink | jcxplorer: ah ok, well, problem is that that makes the other stuff pretty much noise |
| 22:25:10 | dbussink | jcxplorer: that bson issue should have been fixed btw |
| 22:47:02 | jcxplorer | dbussink: Just did a third run with Thin http://gist.github.com/454374#file_third run (thin) |
| 22:48:32 | jcxplorer | Array#fast_pack seems to be the culprit |
| 22:53:15 | dbussink | Array#pack is a known issue in general performance wise yeah |
| 22:54:20 | jcxplorer | Shame. It makes it unusable, since pages take up to 4 or 5 seconds to load. |
| 22:56:06 | dbussink | jcxplorer: where does fast_pack come from? |
| 22:56:32 | jcxplorer | No idea, but I'll try to find |
| 22:57:03 | dbussink | jcxplorer: what are you running? |
| 22:57:28 | jcxplorer | Rails 3 beta 4 with mongo, bson_ext and mongoid |
| 22:58:08 | dbussink | ah, that probably depends a lot on packing performance for the bson part i guess |
| 23:00:10 | dbussink | jcxplorer: are you running current master? |
| 23:01:11 | jcxplorer | Array#fast_pack is defined in bson_ext (ext/cbson/cbson.c:849) |
| 23:01:31 | jcxplorer | dbussink: Of rubinius? Yes. |
| 23:03:21 | evan | jcxplorer: hi hi |
| 23:03:36 | dbussink | but i'm going to head to bed |
| 23:04:11 | evan | jcxplorer: strange, those -Xprofile runs say almost nothing. |
| 23:04:16 | evan | or, rather, that one |
| 23:04:18 | dbussink | evan: another fun control flow issue: http://github.com/evanphx/rubinius/issues#issue/358 |
| 23:04:30 | evan | yeah, i know |
| 23:04:37 | evan | i was sitting next to mike when he put that in. |
| 23:04:37 | dbussink | night people! |
| 23:04:40 | evan | nite! |
| 23:04:48 | dbussink | evan: ah ok, you alread investigated what was up? |
| 23:04:58 | dbussink | i saw you guys sitting there yeah |
| 23:04:59 | evan | no, not yet. |
| 23:05:12 | evan | not sure about the cause |
| 23:05:37 | dbussink | ah ok, well, he was seeing two things actuallu |
| 23:05:41 | dbussink | but i added it there |
| 23:05:48 | evan | jcxplorer: i see, I see. |
| 23:05:53 | evan | you can't use -Xprofile with unicorn |
| 23:05:55 | dbussink | have a fix for the pack issue, but need to add a spec |
| 23:05:56 | evan | because of it's forking |
| 23:06:03 | evan | profiling is disabled when you fork. |
| 23:06:13 | evan | dbussink: which issue? |
| 23:06:28 | dbussink | evan: that was also in #358 |
| 23:06:30 | jcxplorer | evan: right. I tried with webrick, but got no profile info at all. |
| 23:06:36 | evan | really? thats odd. |
| 23:07:05 | dbussink | evan: already have the mail specs passing here locally |
| 23:07:07 | evan | jcxplorer: how were you generating hits? |
| 23:07:10 | evan | just reloading a few pages? |
| 23:07:31 | jcxplorer | the runs i did with unicorn was just reloading, with thin i used ab |
| 23:07:47 | evan | dbussink: good find on the next/ensure though! |
| 23:07:50 | evan | very nice |
| 23:07:53 | evan | i didn't see that |
| 23:08:02 | evan | jcxplorer: what about with thin |
| 23:08:11 | evan | since we have to ignore the unicorn runs for now |
| 23:08:41 | jcxplorer | the thin run was a mix of reloading and ab (about 40-50 hits) |
| 23:08:56 | evan | aj |
| 23:08:57 | evan | ok |
| 23:09:04 | jcxplorer | ab stopped at some point, so i'm not sure how many got through |
| 23:09:27 | evan | hm, ok. |
| 23:09:34 | jcxplorer | can't even have been that many, 10 requests took 42 seconds |
| 23:09:42 | evan | people have reported that bson_ext is bad boy extension |
| 23:09:48 | evan | it handles Time in a very hacky way |
| 23:09:51 | evan | thats why you're seeing that |
| 23:10:08 | evan | jcxplorer: really? ... |
| 23:10:12 | evan | could you try mongrel? |
| 23:10:17 | evan | i've profiled under that |
| 23:10:27 | evan | i worry that the EventMachine usage in thin is confusing things |
| 23:10:58 | jcxplorer | i'll try with mongrel now. anything in particular i should do? |
| 23:11:47 | evan | when I do is start up mongrel in production mode |
| 23:11:57 | evan | and then hit it with ab a bit |
| 23:12:10 | evan | be sure to start in production mode though |
| 23:12:20 | evan | so that we can factor out any rails dev mode stuff for now |
| 23:12:38 | evan | if production is fine, then we know it's something about dev mode, and can focus on finding out why |
| 23:13:28 | evan | my my, Array#fast_pack in bson_ext is very strange. |
| 23:15:29 | jcxplorer | how many requests do you want? they're taking 4 seconds each |
| 23:15:57 | evan | a minutes worth |
| 23:16:14 | evan | we need to shake out the majority cases |
| 23:17:06 | jcxplorer | 31 requests: http://gist.github.com/454434 |
| 23:17:49 | evan | holy cow. |
| 23:17:50 | evan | wtf. |
| 23:18:09 | evan | why is #recieve so high.... |
| 23:18:23 | evan | jcxplorer: ok, one more thing |
| 23:18:26 | evan | same thing, but this time |
| 23:18:38 | evan | -Xprofile -Xprofiler.graph |
| 23:18:58 | evan | that will give us the full call graph with times |
| 23:22:00 | jcxplorer | here you go: http://gist.github.com/454437 |
| 23:23:09 | evan | hm, ok, the Channel thing might be a red herring, because it appears to be from the main thread waiting to join worker threads |
| 23:23:17 | evan | but it definitely warrants investigation. |
| 23:23:36 | jcxplorer | The document I'm getting from the database is about 4KB |
| 23:23:41 | evan | jcxplorer: what I'll need to do next is recreate these profiling scenarios here |
| 23:23:50 | evan | so that I can see if my changes help |
| 23:24:18 | jcxplorer | I'll create a Rails app and send it to you |
| 23:24:58 | evan | oh that would be wonderful! thanks! |
| 23:25:24 | jcxplorer | (i was all happy working on my open-source project until i decided to try rubinius once again) ;) |
| 23:26:22 | evan | hah |
| 23:26:41 | evan | I can give you a note that you can give to project from the doctor, if you need :) |
| 23:27:55 | jcxplorer | no need, but my boss will be disappointed. i told him i'd have it ready on monday |
| 23:28:17 | evan | it looks like, based on previous data, we need to break things out into a few benchmarks also |
| 23:28:28 | evan | one that isolates mongo usage outside of a web context |
| 23:28:43 | evan | and then also static performance of the various webservers |
| 23:28:52 | evan | those data points, plus what we've got |
| 23:29:04 | evan | should definitely push us in the right direction |
| 23:29:16 | evan | jcxplorer: let me know if you need a note for your boss, i'm happy to write it. :) |
| 23:30:06 | jcxplorer | feel free to write one :) |
| 23:38:38 | evan | jcxplorer: https://gist.github.com/7b9486fa5c8d76d615b8 |
| 23:39:05 | jcxplorer | :D |
| 23:46:25 | cremes | evan: i fixed the Time issue with bson_ext; it was a missing case in rb_type; check the last couple of commits |
| 23:46:42 | evan | oh, i looks wrong on github still |
| 23:46:43 | evan | url? |
| 23:49:08 | cremes | evan: http://github.com/evanphx/rubinius/blob/master/vm/capi/object.cpp#L182 |
| 23:49:20 | cremes | that fixed the bson_ext problem where it couldn't serialize Time objects |
| 23:49:21 | evan | oh, you change it that way. |
| 23:49:31 | evan | by saying that a Time object is a data type |
| 23:49:31 | evan | ok |
| 23:49:34 | evan | gotcha. |
| 23:49:37 | cremes | that matches MRI too |
| 23:49:41 | evan | i thought you meant you changed bson_ext |
| 23:49:45 | evan | cool, thanks! |
| 23:49:58 | cremes | i thought i had to but then i discovered it was a rbx issue, so i fixed that instead :) |
| 23:50:09 | evan | yep, totally the right way. |
| 23:50:32 | cremes | don't worry, it's got a spec too... ;) |
| 23:50:38 | evan | :D |
| 23:51:20 | cremes | currently trying to get ruby to compile under mingw-w64... i wouldn't have to if we had rbx on windows (hint, hint) |
| 23:51:42 | evan | i need help from a windows expert! |
| 23:52:16 | cremes | we need more windows guys on the rbx team; i wonder how we could recruit some...? |
| 23:53:13 | jcxplorer | evan: here's that rails app http://dl.dropbox.com/u/1799649/rbx_rails.zip |
| 23:53:27 | jcxplorer | getting up to 3 reqs/s! |
| 23:53:44 | evan | progress! |
| 23:54:12 | jcxplorer | Just run rake db:seed and hit / |
| 23:54:42 | cremes | what are the gcc switches that print all of the defined macros? (like _WIN32) |
| 23:54:55 | evan | cremes: cpp -dM |
| 23:54:57 | evan | then hit ^D |
| 23:55:22 | evan | cpp -dM < /dev/null |
| 23:55:23 | evan | works too |
| 23:55:56 | cremes | got it... thanks |