Domanda:
Ho bisogno di un RTC se il mio Raspberry Pi è continuamente connesso a Internet?
ON5MF Jurgen
2018-02-21 01:48:38 UTC
view on stackexchange narkive permalink

Quanto sarebbe precisa l'ora sul mio Raspberry Pi 3 se è continuamente connesso a Internet, ma senza un RTC?

Ora non ho una risposta precisa, ma è molto meglio di un secondo. Quanto è preciso hai bisogno?
Una precisione di circa 1 secondo sarebbe sufficiente.
L'RTC non viene utilizzato per il cronometraggio quando il sistema è attivo. È una lettura hwclock all'avvio e una scrittura hwclock allo spegnimento. Quando il sistema è attivo, vengono utilizzati HPET o altri timer della CPU, sono molto più precisi.
Cinque risposte:
#1
+13
crasic
2018-02-21 02:56:01 UTC
view on stackexchange narkive permalink

Poiché il protocollo NTP tenta di misurare e compensare la latenza di rete e altri ritardi, è molto accurato anche quando si utilizzano time server pubblici.

RTC viene utilizzato per mantenere l'ora del sistema quando viene tolta l'alimentazione, e non è necessariamente nemmeno preciso, dopo che il tuo raspberry PI si è avviato e ha ricevuto l'ora da NTP continuerà a contare il tempo senza un RTC anche se la rete è scollegata.

Quando si utilizza NTP non ci si sincronizza continuamente con la rete, l'ora del sistema viene mantenuta con un timer basato sull'orologio della cpu.


Quando eseguito con un time server di rete locale, NTP può raggiungere una precisione di <1ms.

Quando viene eseguito l'internet pubblica, l'instradamento dinamico e potenzialmente asimmetrico dei pacchetti contribuisce a una stima più scarsa dei ritardi di rete. Tuttavia, puoi aspettarti una precisione ben al di sotto di 1s con la maggior parte della documentazione che richiede una precisione di 100 ms su Internet pubblico.

Se hai bisogno di una migliore sincronizzazione, senza una migliore precisione, potresti considerare di eseguire un server NTP locale per sincronizzare più raspberry pi l'uno rispetto all'altro con una sincronizzazione migliore di 1ms (buona per allineare i dati del sensore).

Se hai bisogno sia della precisione che della sincronizzazione, puoi eseguire un server NTP Stratum 1 utilizzando il GPS come origine dell'ora.

Infatti, su una buona connessione Internet l'errore è solitamente espresso in millisecondi a una cifra. Queste specifiche risalgono a quando i computer e le connessioni di rete erano entrambi un po 'più lenti.
#2
+12
goldilocks
2018-02-21 02:53:48 UTC
view on stackexchange narkive permalink

Secondo wikipedia, il Network Time Protocol utilizzato per impostazione predefinita su Raspbian e milioni di altri dispositivi e computer in rete:

ha lo scopo di sincronizzare tutti i computer partecipanti a entro pochi millisecondi

In effetti, NTP viene utilizzato su sistemi (server, PC, ecc.) che hanno un RTC per correggere la deriva degli orologi dei computer. Significa che se hai aggiunto un RTC, sarebbe mantenuto accurato utilizzando gli stessi identici meccanismi di rete che sono già usati per impostare l'orologio del "software" del sistema operativo (che, realisticamente, è legato alla frequenza del processore, cioè c'è del cristallo dentro da qualche parte che tenga effettivamente il tempo mentre il sistema è acceso).

#3
+8
R.. GitHub STOP HELPING ICE
2018-02-21 06:13:17 UTC
view on stackexchange narkive permalink

La presenza o l'assenza di RTC non ha nulla a che fare con la precisione del cronometraggio. È solo questione di essere in grado di mantenere (una scarsa approssimazione) l'ora corrente mentre il dispositivo è spento in modo che l'ora di sistema sia corretta prima di attivare il dispositivo di rete e ntpd.

Nota che se se si desidera una sorgente di clock remota sicura piuttosto che un semplice ntp, è necessario avere un'idea approssimativa dell'ora corrente (precisa su scala mensile) per convalidare i certificati; questo è probabilmente il principale scopo moderno di un RTC su dispositivi connessi a Internet.

#4
+3
Tribmos
2018-02-22 04:00:54 UTC
view on stackexchange narkive permalink

Dopo aver fatto esperimenti con C ++ sul mio RPI3 (Stretch) utilizzando la funzione sys / time.h gettimeofday (**) e l'API wiringPi quindi misurando rispetto a un ambito, le applicazioni semplificate possono ottenere una risoluzione inferiore al millisecondo e una precisione sui tempi.

Ora, se utilizzi altre lingue sull'RPI, potresti non essere in grado di ottenere quelle velocità.

#5
+2
Chris H
2018-02-21 03:55:14 UTC
view on stackexchange narkive permalink

Otteniamo una precisione migliore di un secondo su diverse unità utilizzando un server NTP pubblico dall'altra parte di una rete complessa e occupata. Abbiamo anche bisogno solo di una precisione dell'ordine di 1 (che l'orologio di sistema può mantenere per giorni mentre è acceso).

Controlla la pagina man di ntpd, ma dopo aver configurato un server , assicurandoti che ntpd -g venga eseguito all'avvio dovrebbe essere tutto ciò di cui hai bisogno. Il -g ti riporta in tempo reale se l'orologio è fuori uso, ad esempio dopo una perdita di alimentazione.

`chrony` funziona molto meglio di` ntpd` su sistemi che potrebbero avere la loro connessione andare e venire in qualsiasi momento.
@hobbs che è interessante. Meglio in che modo? I miei sono cablati a causa di un [problema con l'archiviazione della password] (https://unix.stackexchange.com/q/242811/47326) e la connessione è affidabile. In effetti è più probabile che perdano energia rispetto alla rete, ma a volte si verificano rallentamenti.
https://chrony.tuxfamily.org/comparison.html#Performance
Oltre al funzionamento "rete inaffidabile", Chrony può apportare una correzione maggiore alla frequenza di clock del sistema. Se la differenza tra la frequenza di clock nominale e la frequenza di clock osservata è superiore a ± 500 parti per milione, ntpd non la correggerà. Fondamentalmente, chrony funziona meglio in una macchina virtuale rispetto a ntpd.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...