Show enters and exits. Hide enters and exits.
| 00:00:27 | evan | brixen: ok, so the GIL patch is improving things |
| 00:00:27 | evan | good. |
| 00:00:31 | brixen | yeah |
| 00:00:37 | bougyman | no GIL now? |
| 00:01:00 | brixen | bougyman: a fix for the existing GIL |
| 00:01:06 | bougyman | ah |
| 00:01:08 | brixen | bougyman: the no gil is on the hydra branch |
| 00:04:34 | evan | lots of GIL work in general lately it seems. |
| 00:04:41 | evan | hydra isn't ready for primetime yet. |
| 00:14:14 | evan | brixen: i like that I can remove the timer thread with this new GIL algo |
| 00:17:16 | evan | if any of you want to really dig into the GIL tradeoffs, check out http://bugs.python.org/issue7946 |
| 00:17:25 | evan | and specificly http://bugs.python.org/file17504/bfs.patch |
| 00:17:33 | evan | which is really quite interesting |
| 00:31:49 | brixen | evan: yeah, that's cool about the timer thread |
| 00:32:12 | brixen | I read both beazley's presentation slides yesterday |
| 00:32:24 | brixen | makes a lot more sense now |
| 00:32:43 | brixen | reads up on the bugs |
| 00:33:55 | evan | the python "bugs" are behavior changes from going from their opcode counter based model to a wall clock timer model |
| 00:34:03 | evan | largely |
| 00:34:16 | evan | he talks about the fact that a hot loop of |
| 00:34:20 | evan | while True: pass |
| 00:34:35 | evan | hits the counter ever like 2 microseconds |
| 00:34:47 | evan | ie, ever 2 microseconds it would give up the GIL. |
| 00:35:12 | evan | thats because the counter defaults to 100 |
| 00:35:17 | evan | so every 100 instructions, give up the GIL |
| 00:35:30 | evan | you can see how with that hot loop, 100 instructions would only take 2 microseconds |
| 01:00:07 | evan | ok, i like this patch enough i'm going remove the timer thread code and throw it on a public branch |
| 01:09:15 | brixen | cool |
| 01:10:23 | evan | man the thread specs make me cry. |
| 01:10:43 | evan | they serve as thread torture tests atm |
| 01:10:52 | evan | thread and human torture |
| 01:28:49 | boyscout | Implement a new GIL algorithm to prevent starvation - 512c054 - Evan Phoenix (newgil) |
| 01:31:00 | brixen | evan: testing on ubuntu and fedora |
| 01:31:13 | brixen | and leopard I guess |
| 01:31:18 | evan | k |
| 10:28:22 | dbussink | you can always try ;) |
| 10:28:30 | dbussink | there's also #ruby-lang for general ruby questiobs |
| 10:28:32 | dbussink | questions |
| 10:37:05 | kronos_vano | |--|, 5 > size of the array |
| 11:56:19 | alisson | what is the newgil branch |
| 12:10:53 | dbussink | it contains an improved version of the gil |
| 12:10:57 | dbussink | global interpreter lock |
| 12:15:24 | alisson | ahhh understood :) |
| 14:59:56 | Tasser | dbussink, still didn't get rid of that? |
| 17:31:51 | dbussink | Tasser: the gil isn't something you "just get rid of" :) |
| 17:32:00 | dbussink | but it's coming along in the hydra branch |
| 17:32:13 | dbussink | but that's not ready for 1.1 |
| 17:35:54 | scoopr | "Rule number one of the GIL club is, that you don't 'just' get rid of the GIL club." .. or uhh, something ;) |
| 17:39:39 | brixen | evan: ubuntu 10.04 32bit: 322s after gil patch, 394s before running specs |
| 17:39:52 | brixen | before, while running specs |
| 17:40:04 | evan | thats under a VM i'm assuming |
| 17:40:09 | evan | i see about 109s normally. |
| 17:40:12 | brixen | that's vbox yes |
| 17:40:13 | evan | k |
| 17:40:24 | evan | so so far, so good. |
| 17:40:28 | brixen | I'm going to fix the Net::HTTP and Net::FTP specs |
| 17:40:38 | brixen | yeah, looks to be going well |
| 17:41:43 | brixen | the kernel in 10.04 is 2.6.32-24 and in fedora 13 it's 2.6.33.8 |
| 17:41:55 | evan | k |
| 17:42:01 | brixen | interesting that the 2.6.32 seems to show more improvement from the patch |
| 17:42:27 | evan | gotta be related to kernel scheduler changes |
| 17:42:38 | brixen | yeah, I would expect |
| 17:42:53 | brixen | perhaps the 2.6.33 scheduler is slightly better at dealing with this condition |
| 17:43:06 | evan | certainly possible. |
| 17:43:09 | evan | also, don't forget |
| 17:43:14 | evan | being on a VM effects this |
| 17:43:21 | brixen | sure |
| 17:43:31 | evan | because the core-ness and timing |
| 17:44:48 | scoopr | 'effects' or 'affects'? =) |
| 17:46:12 | evan | both. |
| 17:47:31 | dbussink | the effects affect :P |
| 18:30:29 | rue | Affected effect |
| 18:30:48 | dbussink | evan: do you think it would be possible to perhaps write rbx specific extensions that use primitives to bind to other libraries? |
| 18:30:58 | dbussink | evan: so as an alternative to the c api with less overhead? |
| 18:31:14 | evan | um |
| 18:31:14 | evan | no. |
| 18:31:18 | evan | i'd prefer not. |
| 18:31:29 | evan | i'd rather we have another mechanism |
| 18:31:36 | evan | primitives are controlled |
| 18:31:42 | evan | they're the VM exported data to ruby land |
| 18:31:42 | dbussink | true yeah |
| 18:31:51 | evan | they're not the wild west. |
| 18:31:55 | dbussink | hehe |
| 18:31:57 | rue | Be better if the C API were less crazy but I am not getting the vibe that it can be changed for 2.0 |
| 18:32:22 | dbussink | just wondering if there would be anything non wild west for people writing sane extensions :P |
| 18:32:41 | evan | i've thought about that |
| 18:32:51 | evan | i'd prefer to work on a 3rd mechanism for those people to use |
| 18:32:53 | rue | dbussink: I would really, really prefer to push FFI. |
| 18:33:20 | evan | rue: we need to come up with a solution to the FFI struct layout problem. |
| 18:33:34 | evan | namely, that it's incredibly trial and error to get it right by most users |
| 18:33:35 | rue | Yef |
| 18:34:00 | evan | thats one place where a C extension shines |
| 18:37:34 | rue | But the subset that really *needs* an extension as opposed to FFI is very small. Assuming a sufficiently fast Ruby and sufficiently capable FFI |
| 18:38:59 | evan | well, lots of C libraries require you to read a struct |
| 18:39:11 | evan | and when a user hits that, they hit a bunch of pain in FFI |
| 18:39:26 | evan | not that it's not solvable by the user, but it's not trivial. |
| 22:37:03 | boyscout | Implement a new GIL algorithm to prevent starvation - 6d55328 - Evan Phoenix |
| 22:37:03 | boyscout | Only add -lruby if MRI was compiled with shared - 7646d69 - Evan Phoenix |
| 22:37:56 | _ko1 | seems interesting... > 6d55328 |
| 22:38:23 | evan | _ko1: yep! |
| 22:38:28 | evan | 1.9 has the same problem |
| 22:38:36 | _ko1 | any description>? |
| 22:38:45 | _ko1 | or Python 3.1 algorithm? |
| 22:38:45 | evan | the commit details the problem |
| 22:38:47 | evan | and my fix |
| 22:38:56 | evan | lots of comments in that commit |
| 22:39:02 | evan | to explain the situatino |
| 22:39:27 | evan | the main bug is pthread_unlock(gil); sched_yield(); pthread_lock(gil); |
| 22:39:34 | evan | can easily starve all other threads on the system |
| 22:41:01 | _ko1 | http://www.dabeaz.com/python/GIL.pdf |
| 22:41:05 | _ko1 | same as this issue? |
| 22:41:55 | _ko1 | i made a patch for CRuby, but not verified (and leave it ...) |
| 22:42:32 | evan | yes, check out the newgil.pdf |
| 22:42:37 | evan | thats the one that details the fix |
| 22:43:01 | evan | _ko1: there are 3 urls in that commit |
| 22:43:03 | evan | at the top |
| 22:43:05 | evan | that discuss it |
| 22:43:17 | _ko1 | can I check via web? |
| 22:43:22 | evan | yep |
| 22:43:26 | evan | one sec, i'll get you a url. |
| 22:43:36 | _ko1 | i'm very newbe on git :( |
| 22:43:42 | evan | http://github.com/evanphx/rubinius/commit/6d55328ca73092b2d89491e25c2f0c078048e716 |
| 22:43:44 | evan | no problem. |
| 22:43:45 | evan | there you go. |
| 22:44:11 | _ko1 | ah, great |
| 22:44:14 | _ko1 | thank |
| 22:44:15 | _ko1 | s |
| 22:44:20 | evan | this is a little easier to read: http://github.com/evanphx/rubinius/blob/master/vm/global_lock.cpp |
| 22:45:30 | evan | _ko1: i'm going to go for a run |
| 22:45:36 | evan | i'll be back in an hour or so |
| 22:45:43 | evan | and we can discuss if you'd like |
| 22:45:44 | evan | ok? |
| 22:45:44 | _ko1 | OK |
| 22:45:57 | _ko1 | but i have no time because today is RubyKaigi! |
| 22:46:04 | evan | no problem! |
| 22:46:09 | evan | you know where I always am |
| 22:46:12 | _ko1 | this is morning here. |
| 22:46:13 | evan | anytime to discuss is fine. |
| 22:46:16 | evan | yep! |
| 22:46:29 | evan | say konichiwa to everyone at rubykaigi for me! |
| 22:46:52 | _ko1 | ok |
| 22:46:53 | evan | (i wonder if i spelled that right) |
| 22:47:15 | _ko1 | correct |
| 22:47:33 | evan | ok, i'll be back in about an hour |
| 22:52:43 | boyscout | CI: rubinius: 7646d69 successful: 3520 files, 15244 examples, 43093 expectations, 0 failures, 0 errors |
| 23:46:42 | duncanmv | yo |
| 23:47:33 | brixen | sup |
| 23:49:42 | duncanmv | everyone sleeping, trying to move my struct c api forward :-) |
| 23:52:54 | brixen | did you file a ticket? |
| 23:53:11 | duncanmv | for? |
| 23:53:21 | brixen | your patch? |
| 23:53:32 | duncanmv | for the rb_hash function I did a pull request |
| 23:53:42 | duncanmv | for the struct part, I am not done yet |
| 23:54:02 | brixen | well, we prefer a git fp in a ticket |
| 23:54:34 | duncanmv | fp? |
| 23:54:59 | brixen | format-patch |
| 23:55:45 | brixen | a ticket is a sure way not to lose something |
| 23:55:58 | brixen | github message spam is a pain |