Sobes.tech
Junior — Middle

Kokiais atvejais sistemos iškvietimai veikia greičiau: PostgreSQL procesuose ar programos viduje esančiose gorutinose?

sobes.tech AI

Atsakymas iš AI

Sisteminiai iškvietimai (syscalls) patys savaime vykdomi operacinės sistemos branduolyje ir turi maždaug vienodą kainą, nepriklausomai nuo konteksto, iš kurio jie kviečiami. Tačiau našumo skirtumai gali atsirasti dėl programos architektūros.

  • PostgreSQL kiekvienas kliento užklausas apdoroja atskiras procesas. Sisteminio iškvietimo iš PostgreSQL proceso yra tiesioginis perėjimas į branduolį.
  • Go, gorutinos yra lengvi srautai, planuojami viename ar keliuose sisteminiuose srautuose. Sisteminio iškvietimo iš gorutinos iš tikrųjų įvyksta iš sisteminio srauto, kuriame ji vykdoma.

Sisteminio iškvietimo greitis priklauso nuo to, kaip greitai programa gali perjungti tarp kontekstų ir valdyti srautus.

Išvada:

  • PostgreSQL procesų sisteminiai iškvietimai paprastai neturi papildomos naštos, susijusios su planuotoju, nes procesas yra atskiras kontekstas.
  • Go, gorutinos gali greičiau perjungti užduotis, tačiau sisteminis iškvietimas vis dar vyksta sisteminiame sraute.

Taigi, sisteminiai iškvietimai iš PostgreSQL procesų ir iš gorutinos Go yra maždaug lyginami pagal greitį. Tačiau Go galima efektyviau valdyti didelį skaičių paralelinių operacijų be daugybės procesų kūrimo, kas suteikia mastelio naudą, bet ne atskirą sistemos iškvietimo greitį.