mirror of
https://github.com/sheumann/hush.git
synced 2025-02-21 19:29:03 +00:00
ntpd: avoid printing messages between send and recv. good for fast networks
function old new delta ntpd_main 887 929 +42 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
b124c3491b
commit
e8ce285395
@ -107,7 +107,10 @@
|
|||||||
#define FREQ_TOLERANCE 0.000015 /* frequency tolerance (15 PPM) */
|
#define FREQ_TOLERANCE 0.000015 /* frequency tolerance (15 PPM) */
|
||||||
#define BURSTPOLL 0 /* initial poll */
|
#define BURSTPOLL 0 /* initial poll */
|
||||||
#define MINPOLL 5 /* minimum poll interval. std ntpd uses 6 (6: 64 sec) */
|
#define MINPOLL 5 /* minimum poll interval. std ntpd uses 6 (6: 64 sec) */
|
||||||
#define BIGPOLL 10 /* drop to lower poll at any trouble (10: 17 min) */
|
/* If offset > discipline_jitter * POLLADJ_GATE, and poll interval is >= 2^BIGPOLL,
|
||||||
|
* then it is decreased _at once_. (If < 2^BIGPOLL, it will be decreased _eventually_).
|
||||||
|
*/
|
||||||
|
#define BIGPOLL 10 /* 2^10 sec ~= 17 min */
|
||||||
#define MAXPOLL 12 /* maximum poll interval (12: 1.1h, 17: 36.4h). std ntpd uses 17 */
|
#define MAXPOLL 12 /* maximum poll interval (12: 1.1h, 17: 36.4h). std ntpd uses 17 */
|
||||||
/* Actively lower poll when we see such big offsets.
|
/* Actively lower poll when we see such big offsets.
|
||||||
* With STEP_THRESHOLD = 0.125, it means we try to sync more aggressively
|
* With STEP_THRESHOLD = 0.125, it means we try to sync more aggressively
|
||||||
@ -124,13 +127,13 @@
|
|||||||
|
|
||||||
/* Poll-adjust threshold.
|
/* Poll-adjust threshold.
|
||||||
* When we see that offset is small enough compared to discipline jitter,
|
* When we see that offset is small enough compared to discipline jitter,
|
||||||
* we grow a counter: += MINPOLL. When it goes over POLLADJ_LIMIT,
|
* we grow a counter: += MINPOLL. When counter goes over POLLADJ_LIMIT,
|
||||||
* we poll_exp++. If offset isn't small, counter -= poll_exp*2,
|
* we poll_exp++. If offset isn't small, counter -= poll_exp*2,
|
||||||
* and when it goes below -POLLADJ_LIMIT, we poll_exp--
|
* and when it goes below -POLLADJ_LIMIT, we poll_exp--.
|
||||||
* (bumped from 30 to 40 since otherwise I often see poll_exp going *2* steps down)
|
* (Bumped from 30 to 40 since otherwise I often see poll_exp going *2* steps down)
|
||||||
*/
|
*/
|
||||||
#define POLLADJ_LIMIT 40
|
#define POLLADJ_LIMIT 40
|
||||||
/* If offset < POLLADJ_GATE * discipline_jitter, then we can increase
|
/* If offset < discipline_jitter * POLLADJ_GATE, then we decide to increase
|
||||||
* poll interval (we think we can't improve timekeeping
|
* poll interval (we think we can't improve timekeeping
|
||||||
* by staying at smaller poll).
|
* by staying at smaller poll).
|
||||||
*/
|
*/
|
||||||
@ -732,6 +735,12 @@ send_query_to_peer(peer_t *p)
|
|||||||
free(local_lsa);
|
free(local_lsa);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Emit message _before_ attempted send. Think of a very short
|
||||||
|
* roundtrip networks: we need to go back to recv loop ASAP,
|
||||||
|
* to reduce delay. Printing messages after send works against that.
|
||||||
|
*/
|
||||||
|
VERB1 bb_error_msg("sending query to %s", p->p_dotted);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Send out a random 64-bit number as our transmit time. The NTP
|
* Send out a random 64-bit number as our transmit time. The NTP
|
||||||
* server will copy said number into the originate field on the
|
* server will copy said number into the originate field on the
|
||||||
@ -759,7 +768,6 @@ send_query_to_peer(peer_t *p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
p->reachable_bits <<= 1;
|
p->reachable_bits <<= 1;
|
||||||
VERB1 bb_error_msg("sent query to %s", p->p_dotted);
|
|
||||||
set_next(p, RESPONSE_INTERVAL);
|
set_next(p, RESPONSE_INTERVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2077,8 +2085,23 @@ int ntpd_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
timeout++; /* (nextaction - G.cur_time) rounds down, compensating */
|
timeout++; /* (nextaction - G.cur_time) rounds down, compensating */
|
||||||
|
|
||||||
/* Here we may block */
|
/* Here we may block */
|
||||||
VERB2 bb_error_msg("poll %us, sockets:%u, poll interval:%us", timeout, i, 1 << G.poll_exp);
|
VERB2 {
|
||||||
|
if (i > ENABLE_FEATURE_NTPD_SERVER) {
|
||||||
|
/* We wait for at least one reply.
|
||||||
|
* Poll for it, without wasting time for message.
|
||||||
|
* Since replies often come under 1 second, this also
|
||||||
|
* reduces clutter in logs.
|
||||||
|
*/
|
||||||
|
nfds = poll(pfd, i, 1000);
|
||||||
|
if (nfds != 0)
|
||||||
|
goto did_poll;
|
||||||
|
if (--timeout <= 0)
|
||||||
|
goto did_poll;
|
||||||
|
}
|
||||||
|
bb_error_msg("poll %us, sockets:%u, poll interval:%us", timeout, i, 1 << G.poll_exp);
|
||||||
|
}
|
||||||
nfds = poll(pfd, i, timeout * 1000);
|
nfds = poll(pfd, i, timeout * 1000);
|
||||||
|
did_poll:
|
||||||
gettime1900d(); /* sets G.cur_time */
|
gettime1900d(); /* sets G.cur_time */
|
||||||
if (nfds <= 0) {
|
if (nfds <= 0) {
|
||||||
if (G.script_name && G.cur_time - G.last_script_run > 11*60) {
|
if (G.script_name && G.cur_time - G.last_script_run > 11*60) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user