heartbeat a odchylka v casu

Zdenek Janis zdenek.janis na brajan.cz
Středa Březen 17 14:00:04 CET 2010


Zdravim.

Mam dve dvojce PC s debianem (lenny). Vzdy dvojce se hlida pomoci 
heartbeatu.
Jedna dvojce je s CPU AMD, druha s CPU Intelem. Instalace jsou naprosto 
totozne. Zatizeni nulove. Inteli dvojce funguje naprosto bez problemu, 
ale dvojce s AMD vypisuje do syslog tyto hlasky:

Mar 17 13:18:33 a heartbeat: [3680]: WARN: Gmain_timeout_dispatch: 
Dispatch function for send local status was delayed 910 ms (> 510 ms) 
before being called (GSource: 0x71f700)
Mar 17 13:18:33 a heartbeat: [3680]: info: Gmain_timeout_dispatch: 
started at 433580082 should have started at 433579991
Mar 17 13:18:33 a heartbeat: [3680]: WARN: Gmain_timeout_dispatch: 
Dispatch function for check for signals was delayed 910 ms (> 510 ms) 
before being called (GSource: 0x71fa60)
Mar 17 13:18:33 a heartbeat: [3680]: info: Gmain_timeout_dispatch: 
started at 433580082 should have started at 433579991

Chvili jsem patral a vytvoril nasledujici script:

#!/bin/bash

# kontrola presnosti casovace
# - overuje, zda sleep 0.5s se vejde o maximalni prodlevy 0.51s

AWK_PROC='
     BEGIN {
	A = ""; X=0.0;
	B = ""; Y=0.0;
	C = 0;
     }
     {
	A = $1; X = $2; C++;
	if (Y > 0.0) {
		Z = X - Y;
		printf("[%d] %s - %s -> %f\r", C, A, B, Z);
		if (Z > 0.51)
			printf("\n");
	}
	B = A; Y = X;
     }';

while true; do
     date +'%H:%M:%S.%N %s,%N'; # nekdy: ',' <-> '.'
     sleep "0.5s";
done | \
awk "$AWK_PROC";

Fungovat to ma tak, ze to kontroluje cas v intervalu 0.5s a pokud je 
odchylka vetsi jak 0.51s, tak ji vypise.
Byl jsem docela prekvapen, ze stroje s AMD toho vypisuji docela hodne a 
to i casy pres 1s. Naopak Inteli jsou uplne v pohode.

Napr:
[19585] 13:45:59.375112869 - 13:45:58.637203677 -> 0,737909
[19677] 13:46:46.396172367 - 13:46:45.075011514 -> 1,321161
[19702] 13:46:59.086349915 - 13:46:58.448268479 -> 0,638082
[19709] 13:47:03.401021157 - 13:47:02.098889475 -> 1,302132
[19730] 13:47:14.102820348 - 13:47:13.444363153 -> 0,658457
[19740] 13:47:19.404296643 - 13:47:18.622451046 -> 0,781846

Otazka je proc tak je? Ze by sleep kecalo? A nebo mi nejak blbne cas v PC?

-- 
S pozdravem
                  Zdenek Janis



Další informace o konferenci Linux