Linux operatsioonisüsteemis töötab aeg

Allikas: Imre kasutab arvutit
Redaktsioon seisuga 9. juuli 2026, kell 19:40 kasutajalt Imre (arutelu | kaastöö)
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

Linux operatsioonisüsteemis ajaga töötamisest tekkiv kasu seisneb selles, et arvutis toimuvad tegevused saavad juhtuda nö õigel ajal

  • mingi tegevus käivitatakse ettenäidatud ajal tulevikus (nö kalendriaja mõttes nt 8 juuni 2026 kell 13:54:55.002 UTC)
  • mingid tegevused käivitatakse ettenäidatud intervalliga (nt iga minuti järel kusjuures minut on pikk 60 sekundit ja * millisekundi täpsusega) - sekund on kusjuures see rahvusvaheliselt kokkulepitud sekund oma vältusega nagu ta on, tseesiumi isotoop jne (ehk SI mõõtühikute süsteemi sekund)
  • arvutis toimuvale ajaarvestusega seoses on olemas veahinnang (nt 1 ms, nt kui öeldakse et '8 juuni 2026 kell 13:54:55.002 UTC' siis kindlasti oli see vahemikus kell 13:54:55.001 kui 13:54:55.003)
  • logikirjetes on õige aeg
  • klastri komponendid ei eksi ära kuna saavad kellaajast erinevalt aru
  • saladused töötavad (nt sisselogimine, cookie, sertifikaat jms)

Üldiselt linux töötamisel ajaga on neli asjaolu, väljakutset, abivahendit jne

  • riistvaraline metronoom-loendur (nt clocksource väärtuseks on 'tsc') - loeb cpu siseseid tikseid alates süsteemi viimasest reboodist
  • metronoom-loenduri teisendamine kellaajaks (8 juuni 2026 kell 13:54:55.002 UTC moodi kujule)
  • välise kellaaja (8 juuni 2026 kell 13:54:55.002 UTC) abil süsteemi nö distsiplieerimine (korrigeerimine) - ntp, chrony, systemd-timesyncd
  • esitada süsteemile efektiivsed vahendid kellaaja küsimiseks (clock_gettime() üle vDSO)

Mõõtkavad

  • nanosekund - protsessori sees on füüsikalised võnked üksteisest ajaliselt eemal nanosekundites (nt registrite jms liitmistehe) - 'cpu cycle', cpu sisemise cache latentsus - tsc conter iseensest ei liigu SI moodi ühikutest, aga kui ajaliselt mõõte siis jäävad need liikumised nanosekunditesse
  • mikrosekund - cpu peale järgmise task saatmise otsuse tegemise aeg, arvuti tava-mälu latsentsus
  • millisekund - cpu plaanur annab cpu peal järjestikuliseks olekuks task'ile aega mõni millisekund, storage io latentsuses ok piiriks arvestatakse 4 ms tavaliselt, arvutis hoiatakse kellaaega õigena 1 ms täpsuse ümbruses tavaliselt
  • sekund - mitme node klastri õla ümberlülitus (nt keepalived abil)
  • minut - google authenticator lubab minuti sisestada koodi

Mõisted

  • loendur (ingl. k. counter)
  • clock - kasutatakse tihti counter tähenduses
  • time - kellaaeg (st mitte counter)
  • interval - ajavahemik
  • wall-clock time - rõhutab et tegeldakse kellaajaga kujul '8 juuni 2026 kell 13:54:55.002 UTC' vms
  • system time - praktiliselt sama tähendusega mis wall-clock-time (mida vastab 'date' käsk)
  • timer - seadme komponent, mille abil saab kindlaksmääratud ajahetkel tulevikus mingi tegevuse esile käivitada
  • tsc - time stamp counter
  • hpet - high precision event timer
  • ntp - network time protocol
  • nts - network time secure
  • ptp - precision time protocol

Tööpõhimõte

Üldised väited

  • füüsiline arvuti (ka vmware virtuaalne arvuti) iseenesest töötab loenduritega (counter) - counteri väärtuse suurenemisest järeldatakse aja kulgemist
  • arvuti riistvara ja süsteemi tarkvara (kernel jms) näevad omajagu vaeva counteritest wall-clock-time saamisega
  • arvuti kontekstis ajaga tegelemise puhul tekitab omajagu segadust, kas aja kulgemist käsitletakse counter või wall-clock-time põhiselt
  • arvuti kontekstis ajaga tegelemise puhul tekitab omajagu segadust, kas kõneldakse füüsilisest seadmest, millega midagi toimub või loogilise nähtusega (nö arvutustulemusega)
  • arvuti kontekstis ajaga tegelemise puhul tekitab omajagu segadust, kas suurus millega tegeldaks on loetav ja selle väärtust ei saa muuta (või ei ole kombeks muuta), või vastupidi
  • arvuti kontekstis ajaga tegelemise puhul tekitab omajagu segadust, kas suurus millega tegeldakse on millelegi sisendiks, või on millestki tuletatud

Arvuti kerneli jaoks on olemas kolm aja kulgemisega kaudsemalt ja otseselt seotud nähtust:

  • tsc (time stamp counter) - füüsiline nähtus, populaarne 'clocksource' lahendus, loendur, põhineb füüsilisel cpu registril, suureneb ühe võrra iga cpu 'clock cycle' toimimusel, väga olemas looduses st igasuguste tootjate igasugustel protsessoritel, ka paljudel virtuaalsetel
  • clock_realtime - loogiline nähtus , st kui arvutis töötav protsess tahab teada kellaaega, siis ta esitab function call'i ja vastuseks glibc ja user mode režiimis töötava cpu abil arvutatakse see üks väärtus kujul nt '8. juuli 2026 kell 15:57:04.004'
  • clock_monotonic - loogiline nähtus, st kui arvutis töötav protsess tahab teada mitte kellaaega, aga mingit sorti intervalli, siis ta esitab kaks function call'i ja vastuseks glibc ja user mode režiimis töötava cpu abil arvutatakse väärtused; kui küsida kaks korda järjestikuliselt clock_monotonic väärtust, siis nende arvude vahel ütleb mitu sekundit (või mikrosekundit vms) ajaliselt üksteisest kaugel pöördumised asuvad

20260709-linux-tootab-aeg-01.png