Live data from Hacker News

DNS server in Go - Big NTP Pool upgrade

news.ntppool.org

11–20 of 29 posts

Re: DNS server in Go - Big NTP Pool upgrade

#11
post #2

How can this even exist without generics, template meta-programming or a turing complete type system? I doubt that they know what they're doing.

The first time I read one of these comments by you on reddit[1] I thought it was sincere - replies to it suggested I was not alone, although I was surprised that one was on your side.

So, I guess your sarcasm was a bit too subtle. This one is better :)

[1] http://www.reddit.com/r/programming/comments/10zsz4/i_wrote_...

Re: DNS server in Go - Big NTP Pool upgrade

#12
post #2

How can this even exist without generics, template meta-programming or a turing complete type system? I doubt that they know what they're doing.

The first time I read one of these comments by you on reddit[1] I thought it was sincere - replies to it suggested I was not alone, although I was surprised that one was on your side. So, I guess your sarcasm was a bit too subtle. This one is better :) [1] http://www.reddit.com/r/programming/comments/10zsz4/i_wrote_...

FYI I'm the guy that replied to that, I was really interested to see how the OP of that post got around it.

Re: DNS server in Go - Big NTP Pool upgrade

#13
For people searching for performance benchmarks like me, here are the numbers I dug around from the post ( http://geo.bitnames.com)

If you need less than 200 DNS lookups per second per DNS server the Perl version is fine and might be a little easier to setup. The Go version is much faster (in prodution we've seen it do 5-6000 requests a second on commodity hardware and even virtual servers).

Is 6000 rps a high number for a DNS server? Let me do a back of the envelope calculation: one simple dns request (assuming udp here) response msg size is 100bytes, 6000rps x 100bytes /1024/1024 x 8 = 4.69mbps. Even we consider the request msg size is equal to that of response msg, the throughput is still 9.38mbps, far from saturating the network pipe. It sounds to me there is still space for improvement.

Re: DNS server in Go - Big NTP Pool upgrade

#14

For people searching for performance benchmarks like me, here are the numbers I dug around from the post ( http://geo.bitnames.com ) If you need less than 200 DNS lookups per second per DNS server the Perl version is fine and might be a little easier to setup. The Go version is much faster (in prodution we've seen it do 5-6000 requests a second on commodity hardware and even virtual servers). Is 6000 rps a high numbe…

Was it implied that the 6000 requests was peak performance of the software, or was it just the current max usage they've seen?

Re: DNS server in Go - Big NTP Pool upgrade

#17

For people searching for performance benchmarks like me, here are the numbers I dug around from the post ( http://geo.bitnames.com ) If you need less than 200 DNS lookups per second per DNS server the Perl version is fine and might be a little easier to setup. The Go version is much faster (in prodution we've seen it do 5-6000 requests a second on commodity hardware and even virtual servers). Is 6000 rps a high numbe…

Was it implied that the 6000 requests was peak performance of the software, or was it just the current max usage they've seen?

I suppose it's the latter. That number is pretty much hardware-specific, though it would give us a bit more details if they mentioned the hardware profile.

Re: DNS server in Go - Big NTP Pool upgrade

#18
This seems like a great time to prod more folks into joining the pool. If you have a static IP and a stable machine please consider becoming part of the pool:

http://www.pool.ntp.org/en/join.html

My firewall at home is part of the pool. You can configure how much traffic you can handle in the manage servers interface. With any decent cable connection you can set the speed to 768Kbit and never notice the traffic (ntp is just tiny udp datagrams).

While we are at it lets go through /etc/ntp.conf and remove any references to stratum one servers. With a recent version of ntp you can replace all of your server lines with:

  pool 0.CC.pool.ntp.org iburst
  pool 1.CC.pool.ntp.org iburst
  pool 2.CC.pool.ntp.org iburst
  pool 3.CC.pool.ntp.org iburst
Where CC is your country code {us,ca,de,mx,fr,etc}. I decided to err on the side of caution and give an example that will work with any reasonably recent version of ntp. With the most recent stable release the following one line will suffice:

  pool CC.pool.ntp.org iburst
That one line will work for Mountain Lion, debian/unstable and the most recent ubuntu release and ntp will automatically poll more servers as needed.

More info on using the pool can be found here:

http://www.pool.ntp.org/en/use.html

Re: DNS server in Go - Big NTP Pool upgrade

#19

For people searching for performance benchmarks like me, here are the numbers I dug around from the post ( http://geo.bitnames.com ) If you need less than 200 DNS lookups per second per DNS server the Perl version is fine and might be a little easier to setup. The Go version is much faster (in prodution we've seen it do 5-6000 requests a second on commodity hardware and even virtual servers). Is 6000 rps a high numbe…

High performance DNS software can handle well over 100k QPS on a single core on commodity hardware, but that's not an apples to apples comparison since the benchmarks I'm remembering didn't include any weighting or geo-distribution special sauce.
Post reply on HN