[04:10] *** salmon_ has joined #kamaelia |
[04:18] *** salmon_ has joined #kamaelia |
[04:19] *** Lawouach_ has joined #kamaelia |
[06:16] < MS-> morning |
[06:20] < Lawouach_> morning |
[06:23] < MS-> I have some fantastic subject lines in my spam today |
[06:24] < MS-> "Of the Quangle Wangle Quee" |
[06:24] < MS-> "That Pobbles are happier without their toes" |
[06:34] < MS-> right back in a bit |
[06:34] *** MS- has parted #kamaelia |
[06:57] *** Uraeus has joined #kamaelia |
[08:23] *** Davbo has joined #kamaelia |
[08:26] *** Uraeus has joined #kamaelia |
[09:10] *** MS- has joined #kamaelia |
[09:10] < MS-> greetings |
[10:28] < Lawouach_> same ol' same ol' |
[13:44] *** salmon_ has joined #kamaelia |
[14:05] < Lawouach_> the internals of Axon and Kamaelia are really funnily indented |
[14:05] < Lawouach_> my emacs doesn't like it :) |
[14:23] < Lawouach_> hmm |
[14:24] < Lawouach_> it takes almost 350microseconds for data to go from the CSA to another component directly linked to the CSA's outbox |
[14:24] < Lawouach_> no other components is running at the same time |
[14:24] < Lawouach_> it's raher slow :/ |
[14:26] < Lawouach_> it's a bit less actually 300microseconds |
[14:27] < Lawouach_> the recv('inbox') takes up to 130microseconds |
[14:35] < Lawouach_> right-o |
[14:36] < Lawouach_> it's due to the wakOnPop list in Box.py |
[14:39] < MS-> ooh, activity |
[14:39] *** MS- reads back |
[14:39] < Lawouach_> going to go back home though |
[14:39] < Lawouach_> I'm doing some heavy profiling of the code |
[14:40] < MS-> k |
[14:40] < Lawouach_> and it seems there are some performance hits in Axon/Kamaelia |
[14:40] < MS-> Indentation used to be 3 spaces because that was what I was used to. moved to 5 |
[14:40] < Lawouach_> that being said |
[14:40] < MS-> 4 even |
[14:40] < MS-> That is *a lot* longer than I would expect |
[14:40] < Lawouach_> it's only noticeable if you need less than a 1milisecond delay between various components |
[14:40] < Lawouach_> indeed |
[14:41] < Lawouach_> the wakeOnPop list is quite a hit |
[14:41] < Lawouach_> and I can't explain the delay for the CSA |
[14:41] < MS-> Interesting |
[14:41] < MS-> Looks like I need to spend more time on the Axon2 code |
[14:41] < Lawouach_> It's not massively bad but I wat to justify why I'd go for Kamaelia rather than "everything in erlang" |
[14:42] *** MS- nods |
[14:42] < Lawouach_> If you feel like tested, I'm just output some various timestamps within various components |
[14:43] < MS-> Obviously if you find particular pain points, let me know and I'll take a look and see if we can alleviate those |
[14:43] < Lawouach_> print "%s %f" % (self.__class__, time()) |
[14:43] < MS-> k |
[14:43] < Lawouach_> well one thing I've noticed in the CSA is that it will keep reading until there is nothing on the socket |
[14:43] < MS-> Also, if you spot any easy wins, we can always merge |
[14:43] < Lawouach_> but |
[14:44] < Lawouach_> it does send data each time it reads something without yielding back to the scheduler immediatly |
[14:44] < Lawouach_> so we have a pattern like this: R, R, R, N, S where R = Read, N = Nothing to read, S Scheduler |
[14:45] < Lawouach_> it also means it can end up filling up the inbox of the plugged component before that component got any chance to do anything |
[14:46] < MS-> That's why most consumer components are written as |
[14:46] < MS-> for msg in self.Inbox("bla"): |
[14:46] < MS-> consume |
[14:46] < MS-> yield |
[14:46] < MS-> rather tha |
[14:46] < MS-> for msg in self.Inbox("bla"): |
[14:46] < MS-> consume |
[14:46] < MS-> yield |
[14:46] < MS-> We found that yielding too often hurt overall system performance |
[14:46] < Lawouach_> the producer should on ther hand yield each time IMO |
[14:47] < MS-> We could change the CSA to have a flag that says it should yield |
[14:47] < MS-> If you want to force it to only produce at the speed at which a consumer consumers, you can set a pipewidth. |
[14:47] < MS-> Need to check that the CSA would handle that correctly, but that's the better mechanism |
[14:48] < Lawouach_> I don't know if that would make things better but it's worth a try |
[14:48] < MS-> A pipewidth of 1 is equivalent to your yielding after each message |
[14:48] < MS-> Me neither fwiw. |
[14:48] < Lawouach_> i'll look at it tomorrow |
[14:49] < MS-> Thanks for mentioning it here! :) |
[14:49] < Lawouach_> Performances aren't that bad but the scheduler is the current hit in the overall performances I'm getting |
[14:49] *** MS- nods |
[14:49] < Lawouach_> Once the message has reached my handler, I'm processing rather fastly |
[14:50] < MS-> Well, that is an area I want to address, and if there's a very specific need, and there is, then that's a good motivator :) |
[14:50] < Lawouach_> Basically the XML handler performs some operations which take roughly 90microseconds overall |
[14:50] < Lawouach_> The overall treatment though may take up 600microseconds |
[14:50] < Lawouach_> I'm still drilling things down |
[14:51] < Lawouach_> so I can't point at a particular area yet :p |
[14:51] *** MS- nods |
[14:52] < MS-> Nothing like this sort of thing for making code better :) |
[14:52] < MS-> OK, i need to head off too. |
[14:52] < MS-> cya later & thanks :) |
[14:52] *** MS- has parted #kamaelia |
[16:11] *** MS- has joined #kamaelia |
[16:11] < MS-> back |
[17:17] *** Lawouach has joined #kamaelia |
[17:19] *** Lawouach has joined #kamaelia |
[17:22] *** Lawouach has joined #kamaelia |
[17:25] *** Lawouach has joined #kamaelia |
[19:19] *** Davbo has joined #kamaelia |
[19:22] < MS-> Davbo: evening |
[20:37] < MS-> Renamed "Paint" to "GSOCPaint", since that way we can package cleanly and merge (which is what I'm aiming to do) |
[20:37] < MS-> Trying to clean out /branches slowly but surely |
[20:46] < MS-> OK, I think I've somewhat tidied up private_DK_PaintDev. Still needs hacking around to replace the magnadoodle component with something useful, but this is a good base to move forward from probably |
[20:47] < MS-> need sleep |
[20:47] < MS-> night all |