Saturday March 12, 2011

[Time] NameMessage
[08:14] pieterh hi dermoth|home... who are the chanserv admins then?
[08:53] guido_g good morning all
[08:55] pieterh hi guido_g!
[08:55] guido_g howdy pieterh
[08:56] guido_g but in general in works :)
[08:57] pieterh nice
[08:58] guido_g did my first steps with oprofile last night
[08:59] pieterh sounds like a profiler... any good?
[08:59] guido_g oh yes
[08:59] guido_g one need to knwo al lot in advance
[08:59] guido_g omg
[08:59] guido_g more coffee
[08:59] pieterh heh
[09:00] guido_g this thing does a overall profiling of the whole system
[09:00] guido_g so you can see how your app is interfering w/ the kernel
[09:00] guido_g amazing
[09:00] guido_g as well in complexity as in usefulness
[09:00] pieterh hmm, do keep notes, this sounds like useful stuff
[09:01] guido_g and i only discovered it because i got crashes when i tried to use the -pg option (gprof)
[09:02] guido_g as i said, it's a beast <- just for short look, if you dare
[09:02] pieterh nope, I don't dare
[09:03] pieterh but do keep notes and perhaps make a page explaining how you used it to profile your 0MQ app...
[09:03] guido_g ok
[09:04] guido_g will try, but i'm not good at keeping notes :/
[09:04] pieterh just copy the commands you used, with one line of 'why' each time
[09:04] pieterh if you like I'll help turn that into a tutorial
[09:04] pieterh if it's useful and I can understand it...
[09:04] guido_g ok
[09:05] guido_g i'm sure i'll have a deeper look at it next week
[09:05] pieterh I was going to use -pg/gprof but didn't have time to yet
[09:05] guido_g as i said, -pg crashes w/ the normal libzmq build
[12:21] Guthur pieterh, I think this signal catching will working as a solution for clrzmq2 on MONO
[12:21] Guthur it's made the binding code a little bit messier though
[12:21] Guthur too many precompiler directives flying around for my liking now
[12:38] Guthur welcome back sustrik
[12:38] Guthur hope you had a nice time in the USA
[12:39] sustrik hi
[12:39] sustrik yeah, it was quite ok
[12:40] Guthur sounds like the meetup was productive, at least
[12:40] sustrik yeah, seem the minutes?
[12:42] Guthur seen the messages on the mailing list
[12:43] sustrik meeting in office space seems to be more productive than meeting in a pub :)
[12:43] sustrik where are you located, btw?
[12:43] Guthur Northern Ireland
[12:44] Guthur I would be hard pushed to take time off for the london meetup this month, even if it wasn't a pub
[12:44] Guthur I'd already arranged to go to the European Lisp Symposium this month in Hamburg
[12:45] sustrik you can meet guido_g there
[12:45] sustrik he's from hamburg iirc
[12:45] Guthur oh, i'd know that
[12:45] Guthur i didn't*
[12:45] guido_g hmm what?
[12:45] guido_g oh yes, i'm in hamburg
[12:46] Guthur I'm there for a Lisp conference at the end of the month
[12:46] guido_g Guthur: cool, drop me a note if you see time to meet
[12:46] Guthur sure
[12:47] Guthur I'm there from 30th march to 2n april
[12:47] sustrik i would suggest asking on the mailing list, there may be more 0mq users in that location
[12:47] guido_g Guthur: that's nice
[12:47] Guthur super Idea
[12:50] Guthur It's a shame I never thought of producing a presentation for the ELS of Common Lisp and 0MQ
[12:50] Guthur the main topic this year is Concurrent Computing
[12:51] Guthur well one of the topics at least
[12:52] sustrik it would fit it
[12:52] sustrik in
[12:53] mikko sustrik: welcome back
[12:53] sustrik hi
[12:53] sustrik how it's going?
[12:53] Guthur I'll definitely be mentioning 0MQ to anyone I speak to
[12:53] mikko same old same old
[12:53] Guthur spread the word and all... hehe
[12:53] mikko how was US?
[12:53] sustrik good
[12:53] sustrik met a lot of people there
[12:54] sustrik i've met the original author of Tibco RV :)
[12:54] Guthur oh cool
[12:54] sustrik btw, i've wanted to update openpgm in master but got some compilation errors
[12:54] Guthur There has been some interest in work at comparing 0MQ to Tibco RV
[12:54] sustrik Guthur: yes, seen it
[12:55] sustrik mikko: pieter mentioned you've already experimented with that in stable
[12:56] guido_g Guthur: your attending the welcome at on march 30?
[12:57] guido_g Guthur: if this is the right event at all
[12:58] Guthur guido_g, I unfortunately booked the flights before I knew about the welcome event
[12:58] Guthur that is the correct event
[12:59] guido_g ok
[12:59] Guthur they only added that date later, a shame
[12:59] guido_g Guthur: the event is quite a bit outside of hamburg city
[12:59] Guthur yeah, it's proofing bothersome on the accomodation front
[12:59] guido_g Guthur: so planning in advance is unavoidable for a good overall experience
[13:00] Guthur guido_g, is the public transport good in hamburg
[13:01] Guthur I've only been to Berlin, top rate there
[13:01] guido_g Guthur: it's ok
[13:01] guido_g Guthur: and friday night counts as weekend, so no problem
[13:01] guido_g Guthur: but harburg <-> city takes some time
[13:06] guido_g Guthur: for your bookmarks: public transport in and around hamburg
[13:06] guido_g Guthur: if you've questions, feel free to ask
[13:06] Guthur cool, cheers guido_g
[13:14] pieterh sustrik: welcome back!
[13:14] pieterh Guthur: glad you got the signal handling working
[13:15] sustrik hi!
[13:15] sustrik Guthur: yust reading the signal thread
[13:15] sustrik have you solved the problem?
[13:16] pieterh sustrik: wrt multicast loop
[13:16] sustrik yes?
[13:16] pieterh do you really consider this part of the 0MQ API?
[13:17] sustrik it would definitely break the applications using it
[13:17] pieterh do we know of any using it?
[13:17] sustrik people ask about it once a while on the ml
[13:17] guido_g and here too
[13:17] pieterh ok, I'll restore it in 2.1 then
[13:18] sustrik ok
[13:18] sustrik as for the rate limit, i am not sure
[13:18] pieterh btw, we've tested Mikko's patch for OpenPGM 5.x integration, it appears to work perfectly
[13:18] sustrik great, send it to the ml
[13:18] pieterh so mikko should be able to send you a patch for 2.2
[13:18] pieterh yes
[13:19] sustrik i'll port it to master
[13:19] pieterh also btw, the contribution-to-release process is starting to work
[13:19] pieterh you saw I rewrote the contributing page because it wasn't fully accurate
[13:20] sustrik yes, nice
[13:21] pieterh it's based on walking people through the actual process...
[13:21] pieterh so we'll have releases for 2.0 and 2.1 in a few days
[13:22] sustrik goodo
[13:22] sustrik i though of actually moving to 3.0 afterwards
[13:22] sustrik the sooner it's done the less pain it will involve
[13:22] pieterh we should close 2.2 functionality first, no?
[13:22] pieterh or do we jump from 2.1 to 3.x?
[13:22] sustrik the latter
[13:22] pieterh I like it.
[13:23] pieterh however, note that people will be using 2.1.x for a long time
[13:23] pieterh maybe even several months... :-)
[13:23] sustrik that's why we have stable
[13:24] sustrik it's less contentious to break the backward compatibility now
[13:24] pieterh what I mean is, it's quite hard to backport fixes from 2.2 to 2.0, we should be careful about big internal changes for 3.0
[13:24] pieterh external API changes is perfectly fine
[13:24] sustrik the 2->3 shift is about API/ABI
[13:24] sustrik it would involve a lot of pain in bindings
[13:24] sustrik and a slighly less pain for end users
[13:24] pieterh shrug, we've been through that, it's moderate
[13:25] sustrik but it has to be done
[13:25] pieterh I mean, the pain seems to be tolerable
[13:25] pieterh so indeed the sooner the better
[13:25] sustrik exactly
[13:25] sustrik so i'll wait for stable 2.1 release
[13:25] sustrik and move on afterwards
[13:26] pieterh ... hmm, so...
[13:26] pieterh there'll be no 2.2 release then
[13:26] sustrik yes
[13:26] pieterh and the source repository should be called zeromq3 in that case
[13:26] pieterh rename/fork it's all the same
[13:27] pieterh pure rename means old links break, which you don't really want
[13:27] pieterh I'd keep the zeromq2, start a new zeromq3
[13:27] sustrik what with zeromq2 then?
[13:27] sustrik it won't be used at all
[13:27] pieterh well, true, it becomes irrelevant
[13:27] pieterh we have zeromq2-1, zeromq2-0, zeromq3
[13:27] pieterh nice enough
[13:28] pieterh I'd just like to keep the naming consistent with version numbers
[13:28] sustrik it will break build tools :(
[13:28] pieterh so later we can make zeromq3-0 for releases, etc.
[13:28] pieterh the build tools... mikko will take care of it
[13:28] sustrik but it's up to mikko, i assume
[13:29] pieterh mikko uses git submodules to pull in the zeromq repos for building
[13:29] pieterh quite neat
[13:29] pieterh hmm, if we stop using zeromq2 for development, I can change that README to act as an index
[13:29] pieterh that'll work nicely for people still using the old URL
[13:30] pieterh sustrik: I only have one concern with the stuff you discussed in London...
[13:31] pieterh having spent several weeks making reliability designs *on top* of 0MQ, for the Guide, I'm going to gnash my teeth when it all goes into the core and my work is for nothing...
[13:31] pieterh :-)
[13:32] sustrik index?
[13:32] sustrik i don't get it
[13:32] pieterh index = web page that sends people off to the correct gits
[13:33] pieterh table of contents
[13:33] sustrik don't make it part of any particular git
[13:33] pieterh dermoth|home: yesterday I asked to register the channel too
[13:34] pieterh but I don't know who the admins are...
[13:34] pieterh hello admins, are you there?
[13:34] sustrik admins of what?
[13:34] pieterh this channel
[13:34] sustrik dermoth: you've done the setting up iirc
[13:34] sustrik i think you said i am an admin back then
[13:34] pieterh sustrik, try /kick pieterh
[13:35] sustrik i have to log in first
[13:35] pieterh :-)
[13:35] sustrik a sec
[13:35] pieterh dermoth|home: anyhow, it'd be useful if anyone can change the topic IMO
[13:35] pieterh if and when we find spammers coming here we can lock it down
[13:37] pieterh two things
[13:37] pieterh a welcome message to new joiners explaining that the IRC channel is logged
[13:37] yrashk "You are under surveillance. Beware!" :)
[13:37] sustrik hm, "You're not channel operator"
[13:37] pieterh and secondly, either in the topic or the welcome message, something like "Before asking for advice here, Please Read the Guide"
[13:38] sustrik dermoth|home: any idea how can i log in as a channel operator?
[13:38] pieterh perhaps also a third warnings, "And ps., don't share sockets between threads, even if it seems excellent design, seriously, just don't do it!"
[13:38] sustrik :)
[13:38] yrashk sustrik: /msg chanserv op #zeromq
[13:38] yrashk may be add your name too
[13:38] yrashk dont remember
[13:38] pieterh yay!
[13:39] yrashk power trip!
[13:39] yrashk :D
[13:39] sustrik :D
[13:39] pieterh all bow before our sustrik overlords
[13:39] sustrik ok
[13:39] pieterh aight
[13:39] sustrik what now
[13:39] sustrik ?
[13:39] pieterh dermoth|home:
[13:40] pieterh sustrik: shrug, it's enough for now we know dermoth|home and you are chanops
[13:40] sustrik ok
[13:40] pieterh heh :-) magic
[13:41] pieterh BTW if anyone wants short URLs for 0MQ projects, give me a shout
[13:41] pieterh The Guide is e.g. also at
[13:42] pieterh and I've just created ->
[13:42] pieterh :-)
[13:44] pieterh sustrik: leaping to 3.0 is a great idea, I see San Francisco inspired you
[13:44] sustrik it calmed down my fear wrt the api breakage
[13:45] sustrik the people haven't seem to mind it that much
[13:45] sustrik although there were no binding maintainers there
[13:45] pieterh I think a key thing is to prove we have a healthy 2.1
[13:45] sustrik ack
[13:46] sustrik when there's a stable branch, the changes to master become somehow less threatening
[13:46] pieterh indeed
[13:47] sustrik Guthur: you there?
[13:47] pieterh btw, there's a really good article by Zed Shaw on coders vs. sysadmins:
[13:47] pieterh very relevant to this discussion
[13:52] yrashk interesting to know what his ideas are that he has mentioned in the very end
[13:53] yrashk with Zed you can never predict what he comes up with next
[13:53] pieterh with 0MQ we split the traffic right up front, at the main page
[13:53] pieterh ah, yrashk, yes, you can... Zed will always create a new project :-)
[13:54] yrashk pieterh: well that, yes
[13:54] yrashk but what will be there...
[13:54] Guthur sustrik, back
[13:54] Guthur sorry was AFK there
[13:54] sustrik i've just read the EINTR thread
[13:54] Guthur As I binding author I'm actually in a small way looking forward to the jump to ZMQ3
[13:54] sustrik have you solved that already?
[13:55] Guthur it'll let me make some changes
[13:55] yrashk when zmq3 is due?
[13:55] sustrik when, 2.1 is stable
[13:55] yrashk I as a binding author is interested in it, too
[13:55] Guthur sustrik, For clrzmq2, yes, I just catch SYSINT and SYSTERM, and exit the program
[13:55] sustrik so, the bump is actually just an API/ABI change, so it can be done quickly
[13:55] sustrik basically in 1 go
[13:55] yrashk hey my binding ends with 2, too!
[13:56] pieterh Guthur: do you re-enter the poll call?
[13:56] Guthur pieterh, yeah
[13:56] Guthur I have a timer to track how long has elapsed
[13:56] pieterh so that worked... excellent...
[13:56] Guthur yep, all good
[13:56] Guthur pieterh, cheers for the suggestion
[13:56] pieterh np, happy to help
[13:57] sustrik yrashk: what's that, a collision in binding names?
[13:57] yrashk sustrik: nope
[13:57] sustrik ok, good
[13:57] yrashk sustrik: clrzmq2 and erlzmq2
[13:57] yrashk just both are -twos
[13:57] yrashk :D
[13:57] pieterh sustrik: just happy naming conventions
[13:57] sustrik as for 3.0 bump
[13:58] sustrik anybody who's interested in the bump, check the wiki page
[13:58] pieterh Guthur: yrashk: please do *not* bump that to x3 when 0MQ/3 comes out...
[13:58] Guthur oh
[13:58] yrashk is 3.0 api gonna be significantly different btw?
[13:58] sustrik not really
[13:58] pieterh just cleaner
[13:58] sustrik there are some shortcoming though
[13:58] sustrik yes
[13:58] Guthur pieterh, my rational is that I would like to clean up some API issues I perceive
[13:58] yrashk pieterh: sure. erlzmq2 is v2 to erlzmq only
[13:58] Guthur I can't remove them for backwards compatibility reasons
[13:59] pieterh Guthur: you can in fact make your own version jump any time you like
[13:59] sustrik i guess the C and Erlang APIs are not tightly connected
[13:59] sustrik exactly
[13:59] pieterh that's a contract between you and your users
[13:59] pieterh feel free to refer to the 0MQ contract as your guide
[13:59] pieterh 'release policy' is the page
[14:00] yrashk sustrik: they are not, but they are very close
[14:00] Guthur pieterh, I suppose I was being slightly sneaky and was going to spin it as a move to ZMQ3
[14:00] Guthur sorry, hehe
[14:00] pieterh sustrik: I found another case where one *has* to set linger on a socket or term freezes
[14:00] yrashk sustrik: I effectively imitate 0mq api more or less
[14:00] pieterh that's when there are pending outgoing connects
[14:00] yrashk sustrik:
[14:01] sustrik pieterh: yes
[14:01] pieterh that doesn't seem accurate semantics
[14:01] yrashk sustrik: they only addition is brecv which is a vm blocking receive (if somebody will ever need that)
[14:01] sustrik pieterh: 0mq has to connect first to be able to send pending messages
[14:02] pieterh hmm, true but IMO at termination time, pending connections should be killed
[14:02] pieterh well
[14:02] pieterh sigh
[14:02] pieterh indeed
[14:02] pieterh *sigh*
[14:02] pieterh it's all logical but my fear is lots and lots of people are going to stumble on this
[14:02] sustrik yrashk: however, the changes between 2 and 3 likely have no counterpart in Erlang API
[14:02] yrashk btw with erlang api, you can terminate the context and then start closing sockets in parallel :)
[14:02] pieterh sustrik: any chance we can revert zmq_term() to acting like 2.0, in 2.1 stable?
[14:03] sustrik pieterh: why would you want that?
[14:03] pieterh recall, we discussed it
[14:03] yrashk our zmq_term even has an optional timeout value
[14:03] pieterh two zmq_term methods, one blocking and one non-blocking
[14:03] pieterh blocking with timeout
[14:03] sustrik yes?
[14:04] pieterh old name, old semantics, compatible
[14:04] pieterh new name, new semantics
[14:04] pieterh in fact the 2.1 change broke the API IMO
[14:04] sustrik pieterh: ah, backward compatibility
[14:04] pieterh I know it was for good reasons but it broke the API
[14:04] pieterh and people are going to bitch when they move from 2.0 and stuff stops working
[14:04] sustrik yes, it would make sense to make linger default to 0
[14:04] pieterh yes
[14:05] sustrik but at the moment most people are using 2.1 with default of "infinite" :(
[14:05] pieterh 2.1 is not stable yet, it's rc2
[14:05] sustrik it was a fault not to preserve backward compatibility when moving to 2.1
[14:05] pieterh well, I did argue for it quite loudly iirc
[14:05] sustrik well, it's more about how many people you are going to hurt
[14:06] sustrik you did
[14:06] pieterh to be honest there are marginal areas we *should* improve but don't because of the API contract
[14:06] pieterh and here we have something that breaks a majority of code...
[14:06] sustrik yes
[14:06] sustrik that's why 3.0 should be done asap
[14:07] sustrik it was a fault back then
[14:07] pieterh that would help, but doesn't make 2.1 less dangerous IMO
[14:07] sustrik i am sorry for it
[14:07] pieterh sorry shmorry, can we fix this before it's too lare?
[14:07] pieterh *late
[14:07] sustrik it's already to late
[14:07] pieterh why?
[14:07] pieterh 2.1 is not stable
[14:08] sustrik majority has already migrated
[14:08] pieterh you have figures?
[14:08] pieterh to be honest I don't believe that
[14:08] pieterh besides, it's not the point
[14:08] pieterh we have a release policy, which 2.1 broke, and should unbreak
[14:08] sustrik that means second breaking
[14:09] sustrik one was enough
[14:09] pieterh otherwise the release policy is not credible and when you refer to it, I'll mock you bitterly
[14:09] pieterh "oh, it's fine when YOU want to break it..."...
[14:09] pieterh seriously... :-/
[14:09] sustrik the problem is that the contract was written after 2.1
[14:09] pieterh that is untrue
[14:09] pieterh you modified it afterwards, but it's from 2.0
[14:09] sustrik it was discussed because of 2.1
[14:09] pieterh I'll provide you the date it was written... hang on
[14:09] sustrik and introduced
[14:10] pieterh I wrote it on 4th August 2010
[14:10] sustrik yep
[14:10] pieterh it was written for 2.0 to be precise
[14:10] pieterh I flatly disagree that it did not apply, does not *now* apply to 2.1
[14:10] pieterh that is completely wrong
[14:11] sustrik i recall explicitly addressing 2.1 compatibility issues when writing it
[14:11] pieterh We wrote it in August
[14:11] pieterh your memory is ... curious
[14:11] sustrik ah, yes, i think thr 2.1 work started back then
[14:11] pieterh Check the history
[14:11] sustrik remember the great heats in BTS?
[14:12] pieterh please, sustrik, check the dates when you introduced the zmq_term blocking
[14:12] pieterh anyhow, this is irrelevant
[14:12] sustrik yes, it was at the same time
[14:12] pieterh you have a release policy and we are about to release a stable 2.1
[14:12] pieterh which breaks the release policy
[14:12] pieterh I'm formally against that
[14:12] pieterh and formally asking you to respect the documented policy
[14:13] sustrik i am against repeated breaking of API
[14:13] sustrik 2.1.1->2.1.2
[14:13] pieterh the API includes the semantics of zmq_term
[14:13] sustrik well, let's do a poll then
[14:13] pieterh blocking or non-blocking?
[14:13] pieterh yes, let's do a poll
[14:14] sustrik default linger of 0 vs. infinite
[14:14] pieterh indeed
[14:14] pieterh note, you can add zmq_term_blocking () which does infinite blocking with a timeout
[14:15] sustrik sure, but that's not the point
[14:15] pieterh yes it is
[14:15] pieterh if people absolutely need the semantics, they are present
[14:15] sustrik we are discussing backward comaptibility not new apis
[14:15] pieterh ok, setting LINGER gives the same results
[14:15] sustrik anyway, let's ask people
[14:15] yrashk I vote for keeping it as is
[14:15] yrashk :)
[14:15] yrashk if anybody's interested :)
[14:15] sustrik i am against :)
[14:15] pieterh yrashk: 'as is' depends where you are today
[14:15] yrashk master
[14:15] sustrik let me ask on ml
[14:16] pieterh could you please be specific: infinite blocking, or not
[14:16] yrashk infinite
[14:16] sustrik yes
[14:16] sustrik there are two sides to the problem
[14:16] sustrik i'll try to explain on the ml
[14:17] pieterh sustrik: please, do point out this is for the stable 2.1 to be released shortly
[14:17] pieterh and do explain that infinite blocking means all existing apps are likely to break
[14:17] pieterh when they migrate from 2.0 to 2.1
[14:17] sustrik 2.0 apps
[14:17] sustrik in the opposite case
[14:17] sustrik the 2.1 apps are going to break
[14:17] sustrik i'll explain that
[14:17] pieterh all the ones that don't explicitly set LINGER to zero, which is loads and loads
[14:18] pieterh (loads and loads take the effort to set LINGER to zero)
[14:18] pieterh yes, a poll will be interesting...
[14:19] pieterh BTW there's a line in the Release Policies page I am going to remove
[14:19] pieterh "In general we have a stable and an unstable releases of the product, e.g. 2.0.x and 2.1.x"
[14:19] pieterh that is just wrong
[14:21] pieterh bleh, the contract is vague for minor releases
[14:21] pieterh "It may even run"
[14:21] pieterh some lawyer has been editing that page...
[14:30] Guthur is the reactor pattern still ear marked for 3.0
[14:30] Guthur just thinking that if it was to replace Poll it might be a good opportunity to work IOCP into the windows version
[14:31] Guthur which would obviously immediately open up IPC
[14:32] pieterh Guthur: I don't think that's on the 3.0 roadmap
[14:32] Guthur it is according to the website
[14:32] Guthur
[14:33] Guthur it does say replacing OR supplementing though
[14:33] pieterh indeed, but I don't think it's on the roadmap
[14:33] Guthur ok, is there a more up to date doc
[14:34] pieterh sorry to be unhelpful but the only accurate doc is the NEWS when a feature's been released
[14:34] pieterh and then the man page...
[15:29] zedas pieterh: or write a book :-)
[15:29] pieterh :-) yeah, that's always a good option
[15:31] sustrik 3.0 road map is out of date
[15:31] sustrik :(
[15:32] sustrik i would rather use the page to collect the API changes
[15:32] pieterh sustrik: ctrl-e (stuff) ctrl-s
[15:32] sustrik new features, otoh, will anyway be only those that people contribute
[15:32] sustrik right
[15:36] Skaag sustrik: you heard about Sector and UDT?
[15:36] sustrik i know UDT
[15:36] sustrik don't know about Sector
[15:37] Skaag that's the funny thing
[15:37] Skaag I thought about implementing a filesystem based on ZMQ
[15:37] Skaag and while looking for prior work, I found Sector...
[15:37] Skaag
[15:37] Skaag I'm currently installing it and about to try it out
[15:37] Skaag on paper, it looks very interesting
[15:38] sustrik there are several distributed databases out there
[15:38] sustrik i am not an expert in the topic though
[15:38] Skaag this one offers a fuse client which makes it interesting
[15:38] Skaag the reason I mentioned it is UDT actually
[15:39] sustrik like in "uses UDT" fro communication between nodes, right?
[15:39] Skaag yes
[15:39] sustrik nice
[15:40] sustrik could work well for large-scale synchronisations over a WAN
[15:40] Skaag that's what I need to establish now
[15:40] Skaag I have at the moment machines in 7 ~ 8 different data centers
[15:41] Skaag by the way, zmq is working wonders for us
[15:41] Skaag we are graphing in real-time the data from 20+ nodes
[15:41] Skaag without the illnesses we were experiencing while using rabbitmq
[15:43] pieterh Skaag: we'd welcome a short story that we could publish on the wiki...
[15:43] pieterh about your experiences in moving to 0MQ
[15:43] Skaag ok
[15:44] sustrik Skaag: what's the project?
[15:45] Skaag it's a control panel for a CDN
[15:45] sustrik is there a link?
[15:45] Skaag I'm still making the site for it :-\
[15:45] sustrik i see
[15:45] sustrik when you have it, share the link
[15:45] Skaag will do
[15:45] sustrik it would be interesting to have a look
[16:17] CIA-103 zeromq2: 03Guido Goldstein 07master * rd0c8edd 10/ include/zmq.hpp :
[16:17] CIA-103 zeromq2: Added missing close method w/ check if socket is already closed.
[16:17] CIA-103 zeromq2: Signed-off-by: Guido Goldstein <> -
[17:04] guido_g sustrik: thx for mentioning the sign-off thingie
[17:04] guido_g didn't move the .gitconfig to the new machine
[22:48] nadime any zmq gurus around to help me figure out a performance bottleneck issue?
[22:49] nadime i think it's kind of interesting!
[22:53] mikko nadime: what's the issue?
[22:54] nadime i have the following setup
[22:54] nadime push socket fans out from a thread into N (defaults to 4) IO threads using push/pull to distribute the work to the io threads
[22:55] nadime the io threads then talk 1 to 1 with N io threads on a client
[22:55] nadime the io threads use pub/sub since it's 1 to 1
[22:55] nadime each io thread has 1 zmq io thread
[22:55] nadime and i set affinities
[22:55] nadime to make it as quick as possible
[22:55] nadime the issue i'm having
[22:56] nadime is that i see about 500k msgs/sec go into my push socket
[22:56] nadime but i fall way behind on my 4 io sockets
[22:56] nadime sorry the io sockets are tcp
[22:56] nadime so i didn't expec tthem to keep up, but i figured with 4 and a pretty solid machine (12 cores, about 1 thread per core)
[22:56] nadime they'd be ok
[22:57] mikko are they tcp over local loopback?
[22:57] mikko or over network?
[22:57] nadime local 1 GB network
[22:57] mikko what is your message size?
[22:57] nadime avg prolly 50b
[22:57] nadime sorry B
[22:57] nadime bytes
[22:59] mikko so, 50b messages x 500k would be roughly 238 megabytes per second
[22:59] nadime yeah but i fall WAY behind
[22:59] nadime like the io threads barely do 80kmsg/s
[22:59] mikko one gigabit per second is 128 megabytes per second
[23:00] nadime 50b is probably wrong, i don't see anywhere near full bandwidth utilization
[23:01] nadime the point though is that what the io threads do is nowhere near even 20% capacity
[23:02] mikko are you seeing high utilisation anywhere?
[23:02] mikko or just falling rates?
[23:03] nadime no high network utilization usually around 15%
[23:03] mikko what os is this?
[23:03] nadime win7
[23:03] nadime 64b
[23:04] mikko hmm, can't help you much there
[23:04] mikko i have got very little experience with windows and performance
[23:04] nadime i'm not missing anything though in terms of things you'd do with zmq?
[23:05] mikko sounds ok
[23:05] mikko i would maybe use zmq_pair socket for 1:1
[23:05] nadime k, i can try that
[23:05] nadime is the push/pull fair queuing slow?
[23:05] mikko shouldn't be
[23:06] nadime k
[23:06] mikko it's very simple algorithm
[23:06] nadime i would think
[23:06] mikko if you have a profiler available that might help
[23:06] mikko to see where time is spent
[23:06] nadime yeah i do
[23:06] nadime i will use it
[23:06] nadime i just thught i might be missing something obvious that would help
[23:08] mikko so, do i understand your architecture correctly:
[23:09] mikko you have push/pull socket, which balances work to four threads
[23:09] mikko each one of the threads has pub socket which publishes messages over tcp to workers
[23:09] mikko ?
[23:14] mikko i gotta head to bed
[23:15] mikko nadime: the channel is usually more lively during the day time in europe (large amount of devs from eu)
[23:39] cremes nadime: i have a few suggestions for things to look at
[23:39] cremes 1. if your PUSH socket is in the same process as your "io thread PULL sockets" you should be using inproc transport instead of tcp
[23:40] cremes 2. take a look at your message serialization; sometimes deserialization is more costly than serialization
[23:40] cremes however, i assume you are sending packed structures so you are probably just casting a pointer to get to your data
[23:41] cremes 3. instrument your messages so that you can measure how many nano/micro/milliseconds it takes for the PUSH to deliver to the PULL socket
[23:42] cremes 4. instrument the messages that go from the "server io threads" to the "client io threads" via PUB/SUB to measure latency