# Chrony vs NTPsec vs NTP (ntpd)

**URL:** <https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193>\
**Category:** Server operators\
**Created:** [January 3, 2024, 11:46pm UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193 "2024-01-03T23:46:43Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![maximef](https://avatars.discourse-cdn.com/v4/letter/m/7ba0ec/32.png) [@maximef](https://community.ntppool.org/u/maximef)\
**Post date:** [January 3, 2024, 11:46pm UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/1 "2024-01-03T23:46:43Z")

</div>

Chrony, NTPsec, NTP(ntpd)…

Which one should I use?

I’ve used all tree of them over the years and i’ve had mostly no problem, but I mostly use Chrony for no specific reasons.

---

<div class="post-metadata">

**Author:** ![Badeand](https://avatars.discourse-cdn.com/v4/letter/b/c2a13f/32.png) [@Badeand](https://community.ntppool.org/u/Badeand)\
**Post date:** [January 4, 2024, 12:09am UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/2 "2024-01-04T00:09:15Z")

</div>

From my understanding:

- **Chrony** uses additional advanced algorithms to compensate for less than ideal consitions, such as network conditions and running under a hypervisor
- **NTPsec** is modified NTP classic, but with a minimalist approach, trimming away the fat as far as features go, making development simpler
- **NTPd/NTP classic** is the original, fully featured one

I don’t think it matters much which one you use for the pool, as they’ll all do a great job, but I believe you can get a tiny bit more accuracy out of Chrony. But I’ve only recently gotten into all of this NTP stuff, so if someone with more experience and insight disagrees, you should probably listen to them instead 😃

---

<div class="post-metadata">

**Author:** ![maximef](https://avatars.discourse-cdn.com/v4/letter/m/7ba0ec/32.png) [@maximef](https://community.ntppool.org/u/maximef)\
**Post date:** [January 4, 2024, 12:40am UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/3 "2024-01-04T00:40:14Z")

</div>

> [@Badeand](#):
>
> - **rony** uses additional advanced algorithms to compensate for less than ideal consitions, such as network conditions and running under a hypervisor
> - **NTPsec** is modified NTP classic, but with a minimalist approach, trimming away the fat as far as features go, making development simpler
> - **NTPd/NTP classic** is the original, fully featured one
> 
> I don’t think it matters much which one you use for the pool, as they’ll all do a great job, but I believe you can get a tiny bit more accuracy out of Chrony. But I’ve only recently gotten into all of this NTP stuff, so if

Thanks a lot. I saw on the main NTP pool website that they recommend using ntp.d (classic legacy NTP).

I tried to install NTP.d on Debian 12, but it seems that they replaced it with NTPsec by default in Debian12.

---

<div class="post-metadata">

**Author:** ![Badeand](https://avatars.discourse-cdn.com/v4/letter/b/c2a13f/32.png) [@Badeand](https://community.ntppool.org/u/Badeand)\
**Post date:** [January 4, 2024, 1:49am UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/4 "2024-01-04T01:49:41Z")

</div>

Think I saw a comment in a config file somewhere to volunteer to the pool in November, a little over a month ago. Then I did exactly this, seeing that NTPd was the recommended one due to being the most widespread and well known, so if you run into trouble, people will be able to help you. But, from reading the forum here, I get the impression that most people here are using Chrony.

I interpret it to mean you should use something proven and well known.

---

<div class="post-metadata">

**Author:** ![ask](https://sea2.discourse-cdn.com/flex016/user_avatar/community.ntppool.org/ask/32/907_2.png) [@ask](https://community.ntppool.org/u/ask)\
**Post date:** [January 4, 2024, 5:47am UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/5 "2024-01-04T05:47:04Z")

</div>

Updating the website would be appropriate! Maybe adding ntpd-rs, too?

Any of those implementations are appropriate. The more diversity in what people use the better, I’d think.

---

<div class="post-metadata">

**Author:** ![someone](https://avatars.discourse-cdn.com/v4/letter/s/b77776/32.png) [@someone](https://community.ntppool.org/u/someone)\
**Post date:** [January 4, 2024, 8:31pm UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/6 "2024-01-04T20:31:23Z")

</div>

I was using ntpd for years, since it came with debian by default.

Debian 12 switched to ntpsec which seemed to use more resources than old ntpd, so i switched to chrony like a half a year ago.

No relevant differentes encountered so far.

The only issue I ran into is that chrony unlike ntpd returns garbage on error (which seems to be ok according to the rfc) which the ntppool-server-tracking page still handles, so sometimes the graph shrinks since it shows a red dot with like a 2000 ms delay or something like that.

---

<div class="post-metadata">

**Author:** ![ask](https://sea2.discourse-cdn.com/flex016/user_avatar/community.ntppool.org/ask/32/907_2.png) [@ask](https://community.ntppool.org/u/ask)\
**Post date:** [January 11, 2024, 3:49am UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/7 "2024-01-11T03:49:36Z")

</div>

Do you have an example of those errors?

---

<div class="post-metadata">

**Author:** ![PoolMUC](https://sea2.discourse-cdn.com/flex016/user_avatar/community.ntppool.org/poolmuc/32/1473_2.png) [@PoolMUC](https://community.ntppool.org/u/PoolMUC)\
**Post date:** [January 11, 2024, 7:16am UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/8 "2024-01-11T07:16:02Z")

</div>

I faintly remember that the reason why I was looking at the logs in the first place at the time I found [holes in the CSV log](https://community.ntppool.org/t/holes-in-the-csv-log/3135/3) was due to seeing and wanting to understand a “graph shrinkage” effect in connection with exceptional conditions with my chrony instance. Due to the issue with the holes, and since it was a rare occurrence only, I did not pursue the investigation.

So I hope that @someone has a more current example.

---

<div class="post-metadata">

**Author:** ![someone](https://avatars.discourse-cdn.com/v4/letter/s/b77776/32.png) [@someone](https://community.ntppool.org/u/someone)\
**Post date:** [January 11, 2024, 12:42pm UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/9 "2024-01-11T12:42:14Z")

</div>

I dont. Sorry.

Last time I investigated it was in like July 2023 (?), found that its not really an issue with my systems (except that chrony doesnt behave 100% equally to ntpd/ntpsec, but still correctly) and moved on.

---

<div class="post-metadata">

**Author:** ![PoolMUC](https://sea2.discourse-cdn.com/flex016/user_avatar/community.ntppool.org/poolmuc/32/1473_2.png) [@PoolMUC](https://community.ntppool.org/u/PoolMUC)\
**Post date:** [January 21, 2024, 12:39pm UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/10 "2024-01-21T12:39:54Z")

</div>

@ask, not specific to chronyd, but here another occurrence of “graph shrinkage”:

![2001_470_7598_903_4658_6f6d_f230_68dc__offset](https://us1.discourse-cdn.com/flex016/uploads/ntppool/original/2X/c/cbe96f554cd1564a7eae543fff6e8a40ece5aba1.png)

In this case, the shrinkage seems caused by trying to graph offset values that can be assumed to be invalid/nonsense based on the INIT kiss code and the leap indicator value of 3. The CSV log does not show the stratum, would be interesting to see what value it had in this case (I would expect it to have been 0).

 ![2001_470_7598_903_4658_6f6d_f230_68dc__csv_log_extract](https://us1.discourse-cdn.com/flex016/uploads/ntppool/original/2X/4/4d0ece72bbd009ad3a206f3a61c8240eaff3e9f7.jpeg)

Apart from the effect on the graph, the INIT kiss code as well as probably at least the similar STEP kiss code are errors that come to mind with respect to the question how to score “errors […] that have a response but aren’t RATE”, RSTR, or DENY. Others, e.g., related to failures in security mechanisms the polled server expects, could be worthwhile to consider as well.

EDIT: I faintly remembered this had been raised before, but initially did not find it. But [here](https://community.ntppool.org/t/offset-graph-y-axis-blown-out-by-unsynced-response/3047) it is.

---

<div class="post-metadata">

**Author:** ![mnordhoff](https://sea2.discourse-cdn.com/flex016/user_avatar/community.ntppool.org/mnordhoff/32/1470_2.png) [@mnordhoff](https://community.ntppool.org/u/mnordhoff)\
**Post date:** [June 1, 2024, 5:38am UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/12 "2024-06-01T05:38:30Z")

</div>

It may use more electricity than Chrony, though, if that is a greater concern.

---

<div class="post-metadata">

**Author:** ![NTP-LINUX](https://avatars.discourse-cdn.com/v4/letter/n/dfb087/32.png) [@NTP-LINUX](https://community.ntppool.org/u/NTP-LINUX)\
**Post date:** [June 19, 2024, 12:12am UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/15 "2024-06-19T00:12:57Z")

</div>

I prefer Chrony, which is flexible, lightweight, and intelligent, chrony complete victory.

---

<div class="post-metadata">

**Author:** ![VinWz](https://avatars.discourse-cdn.com/v4/letter/v/9fc29f/32.png) [@VinWz](https://community.ntppool.org/u/VinWz)\
**Post date:** [January 25, 2025, 2:20pm UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/16 "2025-01-25T14:20:18Z")

</div>

Hi there!  
I have experience in large-scale environments with both NTPd and Chrony.  
My experience is night-and-day: chrony is robust, converges quickly, and fixes most ntpd issues we faced in ideal and less-ideal environments alike. A look at ntpsec client tool improvements ([Differences from NTP Classic](https://docs.ntpsec.org/latest/ntpsec.html)) and it seems that these hard-to-track bugs were not the fruit of my imagination, so ntpsec might offer the same benefit. Also, the offset was at least 1 order of magnitude better than ntpd (say, 150us versus 1 to 5ms, depending on the “location” of the client, topology-wise) for the very same clients after the switch over to chrony.

[Advanced use for latency-sensitive workloads] One limit of chrony is that it does (at least did) not offer similar APIs to allow an **external** PTP client to steer the clock ; we were using an external PTP client that would take or give control of the clock to ntpd in degraded mode. Now, there is nothing wrong to use chrony ptp client or ptp2. Just be sure to very cleanly perform trials and deploy progressively, with third parties (say app owners) enlightened awareness.

---

<div class="post-metadata">

**Author:** ![VinWz](https://avatars.discourse-cdn.com/v4/letter/v/9fc29f/32.png) [@VinWz](https://community.ntppool.org/u/VinWz)\
**Post date:** [January 25, 2025, 2:30pm UTC](https://community.ntppool.org/t/chrony-vs-ntpsec-vs-ntp-ntpd/3193/17 "2025-01-25T14:30:37Z")

</div>

Note on this last part (regarding: open source): the fact that an open source tool is missing APIs that an external vendor-driven client needs to integrate with it … this is why the vendor might want to get involved to the project. As a customer, I value when medium companies take the initiative to contribute to open source in their area.
