Você não mencionou qual sistema operacional está sendo executado - já que você está usando o ntpd, assumirei seu Linux / Unix / BSD.
O relógio em que o sistema operacional obtém seus timestamps é não o clock do hardware - são duas entidades separadas (o IIRC não faz parte do POSIX, mas a maioria dos sistemas Unix fornece um hxclock utilitário para interagir com o relógio do hardware). O clock do sistema é definido a partir do clock do hardware no momento da inicialização (e o clock do hardware deve ser definido a partir da hora do sistema no desligamento - mas as implementações variam).
Você marcou isso como ntpd - mas atualmente está executando o ntpd (configurado para usar um servidor válido e acesso de leitura / gravação ao arquivo de desvio)? Se não, então até mesmo alguns segundos por hora não é uma grande quantidade de preocupação - apenas configure o ntpd e ele aprenderá como o relógio do sistema deriva em relação ao tempo do servidor e descobrir como compensar via adjtime [x]. Se você já está executando um ntpd corretamente configurado e treinado, então há algo muito maluco acontecendo aqui.