[01:35] *** eikenberry has joined #kamaelia |
[04:21] *** salmon_ has joined #kamaelia |
[05:13] *** Uraeus has joined #kamaelia |
[05:53] *** Uraeus has joined #kamaelia |
[08:02] *** MS- has parted #kamaelia |
[09:17] *** MS- has joined #kamaelia |
[09:19] < MS-> greetings |
[09:24] < Lawouach_> afternoon |
[09:29] < Lawouach_> http://www.catonmat.net/blog/wp-content/plugins/wp-downloadMonitor/user_uploads/screen.cheat.sheet.txt < -- my new best bookmark :) |
[10:29] *** MS- clicks |
[10:29] < MS-> Oh that's handy |
[10:44] < Lawouach_> indeed |
[11:11] < Lawouach_> I've spent a few days investigating a really odd issue with some of my XMPP clients running on our servers |
[11:12] < Lawouach_> Quite regularly (but not precisely at the period interval), we would see high CPU times usage |
[11:12] < Lawouach_> Meaning the OS was spending lots of time within the process even though the CPU wasn't usually doing much |
[11:13] < Lawouach_> I though I had a bug in my code, then was worried it could be Kamaelia |
[11:13] < Lawouach_> Now I'm leaning towards the logging package |
[11:13] < Lawouach_> I'm using rotating logs |
[11:13] < Lawouach_> and I've witnessed those peaks usually around the time the rotation occurs |
[11:14] < Lawouach_> I've disabled the logs to see if my theory is right |
[11:14] < Lawouach_> if so then... lame lame logging module :/ |
[12:11] *** MS- reads scrollback |
[12:11] < MS-> "Quite regularly (but not precisely at the period interval), we would see high CPU times usage" |
[12:11] < MS-> The garbage collector ? |
[12:12] < Lawouach_> We still consider that option yes |
[12:12] < Lawouach_> But it's tricky to track down |
[12:13] < MS-> Indeed. |
[12:52] < MS-> Oooh, just identified an interesting side effect of threaded components which can allow them to burn more CPU than they should. |
[12:52] < MS-> It's a logical burn, but unexpected |
[12:52] < MS-> If you're using self.pause() in a threaded component to sleep for a given time |
[12:53] < MS-> And send out messages periodically |
[12:53] < MS-> That works OK if the consumer is consuming them slower than you're sending |
[12:53] < MS-> since then you'll sleep |
[12:53] < MS-> However, given a message being removed from an outbox (by the recipient) causes a component to unpause |
[12:54] < MS-> then if you're sending messages when awoken from that pause |
[12:54] < MS-> then you can go into a CPU burn |
[12:54] < MS-> It's not a particularly massive problem, but is an interesting edge case. |
[12:55] < Lawouach_> I see |
[12:56] < Lawouach_> I have to come dislike threaded component even though I do understand they are required in some circumstances |
[12:56] < Lawouach_> I much prefer generator based components |
[12:56] < MS-> Likewise. I'm doing something which is time related here hence looking at it |
[12:57] < MS-> I'm beginning to think though that threaded components as a concept is a nice idea, but a threadedchassis is a better one |
[12:59] < Lawouach_> My main concern about them is not so much about the implementation but that they feel less well-behaved than regular components |
[12:59] < Lawouach_> With potential side-effects like the one you mention |
[12:59] < Lawouach_> It's hard to trust them |
[12:59] < Lawouach_> :) |
[13:00] < MS-> Well, they are harder to trust - they're running potentially truly in parallel in a shared memory space, which is akin to playing with fire |
[13:00] < MS-> But that's threads for you :) |
[13:02] < Lawouach_> :) |
[13:04] *** salmon_ has joined #kamaelia |
[15:10] *** chumpalump has joined #kamaelia |
[16:38] < MS-> Right, hometime. back online later this evening. Plan is to continue reviewing the HTTP improvements. |
[16:38] *** MS- is hungry :) |
[16:38] < MS-> cya |
[16:38] *** MS- has parted #kamaelia |
[19:03] *** salmon_ has joined #kamaelia |
[19:54] *** MS- has joined #kamaelia |
[19:54] < MS-> evening |
[21:10] *** MS- has parted #kamaelia |