[02:09] *** Lawouach_ has joined #kamaelia |
[07:34] < Lawouach_> morning |
[08:15] *** MS- has joined #kamaelia |
[08:15] < MS-> morning |
[08:33] < Lawouach_> hi MS- |
[08:34] < Lawouach_> how's life? |
[08:35] < MS-> Not too bad. Writing up summaries for 4 proposals that I'm pitching for the new workplan tomorrow. |
[08:35] < MS-> Using the Kamaelia PTP format as a guide for summarising them in fact :) |
[08:35] < MS-> (this format that is : http://www.kamaelia.org/Developers/Projects/ProjectTaskPageTemplate ) |
[08:38] < MS-> Hopefully one particular one will go through out of the ideas, which will be cool but also have a very clear reason for using kamaelia in it. |
[08:39] < MS-> Indeed, I've put that as a staff requirement for the project :-) |
[08:39] < Lawouach_> good man :) |
[08:39] < MS-> And yourself? |
[08:39] < Lawouach_> doing good too |
[08:39] < Lawouach_> I started my new job last week |
[08:39] < Lawouach_> Working for a small company that is set on the Google Android market |
[08:39] < MS-> Cool. I saw you'd started somewhere, and some erlang comments... |
[08:40] < Lawouach_> Using also XMPP a lot thus ejabberd |
[08:40] < MS-> Sounds like a good idea :) |
[08:40] < MS-> Ahhh. I see |
[08:40] < Lawouach_> So currently I'm doping lots of erlang |
[08:40] *** MS- nods |
[08:40] < Lawouach_> which is rather fun |
[08:40] < Lawouach_> How's the scheduler refactoring coming? |
[08:54] < MS-> Well, its more of a complete rewrite |
[08:55] < MS-> Based on experimenting with getting the hackysacker thing going as fast as possible through benchmark whoring |
[08:55] < MS-> the hackysack benchmark is really a measure of "this is the scalability when you have very large numbers of players, and almost 100% of work being message passing" rather than the usual kamaelia workload |
[08:56] < MS-> So it's rather atypical, but if you can minimise the cost, it's useful |
[08:56] < MS-> I suspect pygame components would benefit for example |
[08:56] < MS-> I've created a scratch project on code.google for playing btw |
[08:57] < MS-> http://code.google.com/p/kamaelian/source/browse/sketches/Axon/Axon.py contains the pathological case - what happens if you optimise for speed |
[08:57] < MS-> That runs quicker than stackless's code |
[08:58] < MS-> And is amenable to performance boosts using psyco - which gives it an extra 40% or so |
[08:58] < MS-> (ie around twice the speed of stackless) |
[08:58] < MS-> http://code.google.com/p/kamaelian/source/browse/sketches/Axon/Axon2.py is much closer to something real |
[08:58] < MS-> for example it includes: |
[08:58] < MS-> self.link(self, "outbox", (kickto, "inbox")) |
[08:58] < MS-> self.send(self, "outbox") |
[08:59] < MS-> Which runs about 2-3 times as fast as fibra at present and a bit slower than stackless. |
[08:59] < MS-> I think it can be improved further |
[09:00] < MS-> Whether these changes get refactored into the core, or if this replaces the core yet, I'm not sure |
[09:01] < MS-> I still need to integrate threads as well, since at present that's a cause for concern |
[09:01] < MS-> The interesting thing is that this has crucially simplified the scheduler |
[09:09] *** Uraeus has joined #kamaelia |
[09:40] < Lawouach> Thread components have always been a bit of a misunderstanding to me |
[09:40] < Lawouach> they seem almost against the general idea behind Axon |
[09:41] < Lawouach> so I can understand they don't blend well |
[10:17] < MS-> fwiw, I'm actually more thinking of doing what we did with processes |
[10:18] < MS-> ie you have a threaded chassis |
[10:18] < MS-> So Pipeline(A,B,C) is a normal pipeline |
[10:18] < MS-> and Threaded(X) puts X in a separate thread |
[10:19] < MS-> Historically the reason for introducing threaded components was for 2 reasons: |
[10:19] < MS-> 1) a platform we targeted needed to do TCP stuff, but didn't have poll, select or anything similar - it only had threads |
[10:19] < MS-> (so it kinda had to happen) |
[10:20] < MS-> 2) It's really needed for anything that may block |
[10:20] < MS-> Otherwise you hit the performance of the system |
[10:20] < MS-> The reason for the split between component & threaded component |
[10:20] < MS-> ie the reason for NOT having Threaded(X) earlier is simple - thread safety |
[10:21] < MS-> There was no clear way to guarantee that Threaded(X) was safe, so it wasn't allowed. |
[10:21] < MS-> Specifically using services (eg backplanes, Selector, pygame display) would be unsafe without that co-ordination |
[10:22] < MS-> Due to the implementation of the CAT. |
[10:22] < MS-> And also component activation etc |
[10:23] < MS-> But, having written the STM code now, I can see how that can be made significantly safer - especially given we now have a wide variety of (real world) use cases now. |
[10:25] < MS-> Also threaded components give you something rather special on Jython & Ironpython - multicore support for "free" :) |
[10:26] < MS-> (To get blocking handled transparently, you need to monkey patch the stdlib and have true co-routines - ala stackless) |
[11:28] < Lawouach_> I like the Threaded(X) bit |
[15:24] *** MS- has parted #kamaelia |
[17:06] *** Uraeus has joined #kamaelia |
[17:11] *** vmlemon_ has joined #kamaelia |
[17:12] < vmlemon_> Hi |
[17:24] *** vmlemon_1 has joined #kamaelia |
[22:24] *** vmlemon_1 has parted #kamaelia |