[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