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.