RejectedSoftware Forums

Sign up

Most stable vibed config

Hey guys,

So after a few years of casual development I'm nearing the point where I may actually be running my vibed-based game metaserver in a more serious production environment. To that end, while it has been very stable to date, I wanted to query the community for recommendations on the most reliable and "battle-tested" config.

I've been using dmd + libevent on Linux (ubuntu) and it has been quite stable, but the load has been relatively light compared to what the production config may see. I mostly chose dmd at the time because a few years ago it was the most stable and complete of the various options, but I'm getting the impression that both GDC and LDC are getting pretty decent at this point as well, and may have significantly more capable garbage collectors (seemingly a weak point of dmd). I've also heard some concerning talk of code gen issues with destructors in the latest versions of dmd, although I'm not sure on the details.

libevent has been pretty good but apparently there's also an actively developed "libasync" backend now as well. While performance is relevant, stability is still my #1 concern. To that end, is libevent still the most actively tested backend or would you guys recommend something else?

Thanks in advance for any insight! Cheers,
Andrew

Re: Most stable vibed config

On Tue, 29 Sep 2015 05:21:18 GMT, punkuser wrote:

Hey guys,

So after a few years of casual development I'm nearing the point where I may actually be running my vibed-based game metaserver in a more serious production environment. To that end, while it has been very stable to date, I wanted to query the community for recommendations on the most reliable and "battle-tested" config.

I've been using dmd + libevent on Linux (ubuntu) and it has been quite stable, but the load has been relatively light compared to what the production config may see.
I mostly chose dmd at the time because a few years ago it was the most stable and complete of the various options, but I'm getting the impression that both GDC and LDC are getting pretty decent at this point as well, and may have significantly more capable garbage collectors (seemingly a weak point of dmd).

Their garbage collectors are the same, but their code generation is superior in terms of performance. It always depends on the kind of code, but sometimes they can give a huge performance improvement.

I've also heard some concerning talk of code gen issues with destructors in the latest versions of dmd, although I'm not sure on the details.

This should be fixed for DMD 2.068.2, at least as far as I'm aware of.

libevent has been pretty good but apparently there's also an actively developed "libasync" backend now as well. While performance is relevant, stability is still my #1 concern. To that end, is libevent still the most actively tested backend or would you guys recommend something else?

libevent is definitely still the recommended implementation in terms of stability. The libasync driver is improving, but it needs more time until it can be considered stable. I think is also still faster than libasync, but that should hopefully change at some point in the future.

Re: Most stable vibed config

Their garbage collectors are the same, but their code generation is superior in terms of performance. It always depends on the kind of code, but sometimes they can give a huge performance improvement.

Ok makes sense. I've been mostly RAM-bound on this workload (and VMs, etc) so the raw performance isn't quite as critical to me as GC and stability, etc.

libevent is definitely still the recommended implementation in terms of stability. The libasync driver is improving, but it needs more time until it can be considered stable. I think is also still faster than libasync, but that should hopefully change at some point in the future.

Great info, thanks. I gave libasync a quick try but it did crash under a few semi-common scenarios with this workload (ex. remote disconnects, failed REST requests and so on) so I'll stick with libevent and dmd for the time being.

Thanks a lot for the reply, advice, and of course all the great work on vibe.d!