Sobes.tech
Junior — Middle

V ktorých prípadoch sú systémové volania rýchlejšie: v procesoch PostgreSQL alebo v gorutinách v rámci aplikácie?

sobes.tech AI

Odpoveď od AI

Systémové volania (syscalls) sa samy o sebe vykonávajú v jadre operačného systému a majú približne rovnakú cenu bez ohľadu na kontext, z ktorého sú volané. Avšak rozdiely vo výkonnosti môžu vzniknúť kvôli architektúre aplikácie.

  • V PostgreSQL je každý klientsky požiadavok spracovávaný samostatným procesom. Volanie systému z procesu PostgreSQL je priama prechod do jadra.
  • V Go sú gorutiny ľahké vlákna, ktoré sú plánované v rámci jedného alebo viacerých systémových vlákien. Volanie systému z gorutiny sa v skutočnosti vykonáva zo systémového vlákna, na ktorom beží.

Rýchlosť volania systému závisí od toho, ako rýchlo sa aplikácia dokáže prepínať medzi kontextami a spravovať vlákna.

Záver:

  • Systémové volania z procesov PostgreSQL zvyčajne nemajú ďalšiu záťaž spojenú s plánovačom, pretože proces je samostatný kontext.
  • V Go môžu gorutiny rýchlejšie prepínať medzi úlohami, ale systémové volanie sa stále vykonáva v systémovom vlákne.

Takže systémové volania z procesov PostgreSQL a z gorutín v Go sú približne porovnateľné z hľadiska rýchlosti. Avšak v Go je možné efektívnejšie spravovať veľký počet paralelných operácií bez vytvárania viacerých procesov, čo prináša výhodu v škálovateľnosti, ale nie v rýchlosti jednotlivého systémového volania.