During this season of giving, you can show your support for the NTP Project by making a donation to Network Time Foundation.

ntpd Process Residency Issues

Introduction

In general, it is best for ntpd to get time packets with the smallest possible latency on the receive timestamp.

Over the years we have learned that on some (versions of some) OSes we can obtain better results with ntpd through the use of techniques like:

  • using a non-default scheduling priority
  • locking the process in memory
  • keeping sections of memory permanently resident

Originally, there was no ability to use any of these mechanisms to improve the performance of ntpd. As they became available we added existence checks to configure.ac so we could use these features if they were available.

As OS technology has matured, newer kernels have developed better ways to obtain the receive timestamp, and techniques like memory locking under these kernels have new problems or unexpected consequences or behaviors.

The previous memory locking (for example) interfaces are still provided for backward compatibility, but now there are times where they should no longer be used.

Moving forward

  • If SO_TIMESTAMP exists:
    • we do not need to use (any of?) these techniques to get better receive timestamps.
    • Are there any other reasons to use any of these techniques?
      • Yes, refclocks (other than LOCAL) have no timestamp capability, so prio/mlock is useful for them.
      • So, if no refclocks (other than LOCAL) are used then there is no need for prio/mlock.
      • Also, possibly even with refclocks, if kernel stream module used.

Also see: LockingNtpdInMemory
Topic revision: r5 - 25 Feb 2007, HarlanStenn
Copyright © by the contributing authors.Use of this website indicates your agreement with, and acceptance of, the PrivacyPolicy, the WikiDisclaimer, and the PrivateWebPolicy.