Sobes.tech
Junior — Middle

U kojim slučajevima pozivi sistemskih poziva rade brže: u procesima PostgreSQL ili u gorutinama unutar aplikacije?

sobes.tech АИ

Одговор од АИ

Sistemski pozivi (syscalls) sami po sebi se izvršavaju u jezgru operativnog sistema i imaju otprilike istu cenu, bez obzira na kontekst iz kojeg se pozivaju. Međutim, razlike u performansama mogu nastati zbog arhitekture aplikacije.

  • U PostgreSQL-u, svaki klijentski zahtev se obrađuje u posebnom procesu. Poziv sistema iz procesa PostgreSQL je direktni prelaz u jezgro.
  • U Go-u, goroutine su lagani tokovi koji se planiraju unutar jednog ili više sistemskih tokova. Poziv sistema iz goroutine-a zapravo se dešava iz sistemskog toka na kojem se izvršava.

Brzina poziva sistema zavisi od toga koliko brzo aplikacija može da prebacuje između konteksta i upravlja tokovima.

Zaključak:

  • Pozivi sistema iz PostgreSQL procesa obično nemaju dodatni teret povezan sa scheduler-om, jer je proces poseban kontekst.
  • U Go-u, goroutine-ji mogu brže da prebacuju između zadataka, ali poziv sistema i dalje se izvršava u sistemskom toku.

Dakle, pozivi sistema iz PostgreSQL procesa i iz goroutine-a u Go su otprilike uporedivi po brzini. Međutim, u Go-u je moguće efikasnije upravljati velikim brojem paralelnih operacija bez kreiranja više procesa, što pruža prednost u skalabilnosti, ali ne i u brzini pojedinačnog poziva sistema.