1. ntpd deamon란?
ntpd 는, ntp 서버를 참조해 시스템 클록을 보정하면서, 클라이언트에 시간을 제공하는 데몬.
2. ntpd 설정방법
1) /etc/ntp.conf
# restric 설정은 peer 들이 본 서버로 sync 하는 것에 대한 제한
restrict 127.0.0.1
restrict -6 ::1
# NTP 서버 설정
server ntp 서버1
server ntp 서버2
# driftfile 란, 시간 오차치를 보존해 두는 파일 ntpd 데몬에 의해 자동생성된다.
driftfile /var/lib/ntp/drift
# 인증 받기 위한 key가 저장되는 파일
keys /etc/ntp/keys
3. ntpd 확인 방법
기본적인 명령어를 통하여 ntpd가 정상적으로 작동을 하는지 확인을 할 수 있다.
1) ntpq -p
예시)
remote |
refid |
st |
t |
when |
poll |
reach |
delay |
offset |
jitter |
================================================================ | |||||||||
+172.31.x.x |
.GPS. |
1 |
u |
18 |
64 |
377 |
0.397 |
-525.92 |
342.898 |
*172.31.x.x |
.GPS. |
1 |
u |
57 |
64 |
377 |
0.326 |
-707.41 |
186.074 |
라벨 |
설명 |
remote |
Remote Server 의 Host명 |
refid |
참조ID(명확하지 않을 때는 0.0.0.0 으로 표시됨) |
st |
stratum 번호,서버가 어떤 Layer 인지를 표시함. |
t |
단층(Layer)의 타입 (l:local,u:unicast,m:multicast,b:broadcast) |
when |
마지막으로 Packet 을 수신한 이후 경과한 시간 (단위:초) |
poll |
Polling 간격 (단위:초) |
reach |
도달가능한 register 를 8 진수로 표현한 값 |
delay |
Polling insterval 지연예상시간 (단위:밀리초) |
offset |
단층(Layer)의 offset (단위:밀리초) |
jitter |
단층(Layer)의 분산 (단위:밀리초) |
MARK |
설명 |
' '(reject) |
거리가 멀어서 사용되지 않는 서버 |
'x'(falsetick |
falseticker 검사결과 사용되지 않는 서버 |
'.'(excess) |
참조서버가 많아서 사용되지 않는 서버 |
'-'(outlyer |
clustering 검사결과 사용되지 않는 서버 |
'+'(candidat) |
접속 테스트를 합격하여 언제든지 참조가 가능한 서버 |
'#'(selected) |
동기 거리가 멀지만 참조가 가능한 서버 |
'*'(sys.peer) |
동기중인 서버 |
'o'(pps.peer) |
동기중인 서버(동기는 PPS 신호로부터 간접적으로 행해짐 |
정상 일 경우 | |||||||||
remote |
refid |
st |
t |
when |
poll |
reach |
delay |
offset |
jitter |
================================================================ | |||||||||
+172.31.x.x |
.GPS. |
1 |
u |
18 |
64 |
377 |
0.397 |
-525.92 |
342.898 |
*172.31.x.x |
.GPS. |
1 |
u |
57 |
64 |
377 |
0.326 |
-707.41 |
186.074 |
연결이 원할 하지 않을 경우 - 1 | |||||||||
remote |
refid |
st |
t |
when |
poll |
reach |
delay |
offset |
jitter |
================================================================ | |||||||||
x172.31.x.x |
.GPS. |
1 |
u |
102 |
256 |
377 |
0.366 |
-1053.6 |
306.647 |
x172.31.x.x |
.GPS. |
1 |
u |
77 |
256 |
377 |
0.354 |
-1472.2 |
269.880 |
연결이 원할 하지 않을 경우 - 2 | |||||||||
remote |
refid |
st |
t |
when |
poll |
reach |
delay |
offset |
jitter |
================================================================ | |||||||||
172.31.x.x |
.STEP. |
16 |
u |
21 |
64 |
0 |
0.000 |
0.000 |
0.001 |
172.31.x.x |
.STEP. |
16 |
u |
25 |
64 |
0 |
0.000 |
0.000 |
0.001 |
2) poll에대한 부과 설명
각 서버마다 network이나 기타 이유로 인하여 poll은 달라지게 된다. 기본적으로 minpoll은 64s(26)이고. maxpoll은 1,024s(210)이다. 이 옵션의 경우에는 ntp.conf에 삽입하여 사용도 가능하다.
minpoll 64 ; 16s(24)보다 작을 수 없다.
maxpoll 1024 ; 36.4h(217) 보다 클 수 없다.
4. 기타 참조
1) clocksource
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
acpi_pm jiffies tsc pit → 사용 가능한 clocksource
# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc → 현재 사용 중인 clocksource
2) Tickless Linux Kernels
2.6.18 이 후 커널에서는 tick counting을 사용하지 않기 시작했고, 몇몇 새로운 커널에서는 주기적인 타이머 인터럽트 프로그래밍이 아닌 불규칙한 인터럽트를 사용하게 되었다. 이것이 바로 tickless kernels라고 부른다. tickless kernels에서는 PIT를 사용하는 것이 아닌 Local APIC timer interrupts를 사용한다. 이것을 이용하여 정상적으로 시간 카운트가 되는지 확인 하는 방법은 하기와 같다.
Redhat Enterprise Linux 4: HZ = 1000Hz
Redhat Enterprise Linux 5: HZ = 1000Hz
# cat /proc/interrupts ; sleep 10; cat /proc/interrupts
CPU0 CPU1
0: 125251 79291 IO-APIC-edge timer
1: 591 585 IO-APIC-edge i8042
8: 0 0 IO-APIC-edge rtc
9: 0 0 IO-APIC-level acpi
12: 67 8 IO-APIC-edge i8042
14: 753 643 IO-APIC-edge ide0
169: 2840 142 IO-APIC-level ioc0
177: 748 19 IO-APIC-level eth0
NMI: 43 35
LOC: 204282 204830
ERR: 0
MIS: 0
CPU0 CPU1
0: 134539 80039 IO-APIC-edge timer
1: 592 585 IO-APIC-edge i8042
8: 0 0 IO-APIC-edge rtc
9: 0 0 IO-APIC-level acpi
12: 67 8 IO-APIC-edge i8042
14: 771 715 IO-APIC-edge ide0
169: 2840 147 IO-APIC-level ioc0
177: 800 19 IO-APIC-level eth0
NMI: 43 36
LOC: 214314 214862
ERR: 0
MIS: 0
before = 125251 + 79291 = 204542
after = 134539 + 80039 = 214578
timer rate = (214578 - 204542) / 10 seconds = 1003/sec
5. 참조 URL