Što je krađa posla?

Moderna računala imaju više procesorskih jezgri. Pod pretpostavkom da ima dovoljno obrade tako da svaka jezgra može ostati neprekidno zauzeta. bit će im dodijeljen red računskih radnih stavki. Ili niti koje treba dovršiti planer.

Tijekom izvršavanja ovih niti, moguće je stvoriti nove niti ili radne stavke. To su zasebne niti koje se mogu obrađivati ​​istovremeno. Možda će morati poslati rezultate natrag u programe za mriještenje ili ostati potpuno odvojeni na neodređeno vrijeme. Obično su ove podređene niti dodijeljene istoj procesnoj jezgri kao i roditelj.

Sve ovo pretpostavlja da su sve jezgre zauzete. To će se dogoditi ako niti jedna nit ne završi ili se nove niti generiraju istom brzinom ili brže od završetka postojećih niti. U stvarnom svijetu, međutim, dugotrajno radno opterećenje rijetko je tako jednostavno, osobito u računalnim uređajima krajnjih korisnika. Na kraju će procesorska jezgra vjerojatno izvršiti sve dodijeljene zadatke. Kada se to dogodi, umjesto da miruje i gubi potencijalnu izvedbu, umjesto toga provjerava radne redove drugih procesorskih jezgri i krade radnu stavku od njih.

Prednosti i nedostaci

Krađa posla znači da će procesna jezgra u mirovanju aktivno tražiti posao kako bi ga dovršila. To sprječava da potencijalno veliki dio ukupnog procesora ostane neaktivan, što je korisno. Ipak, krađa posla može imati određene troškove. Na primjer, nova procesorska jezgra vjerojatno će morati učitati sve relevantne podatke u svoju predmemoriju.

To može potrajati, posebno ako se mora zatražiti iz RAM-a sustava umjesto da ga opslužuje sloj dijeljene predmemorije. Moguće je da bi originalni procesor mogao nastaviti s tom radnom stavkom u tom vremenskom okviru, što bi dovelo do bržeg ukupnog izvršenja. To čak može biti slučaj ako procesna jezgra iz koje je ukraden radni predmet nikada nije započela njegovu obradu. Neke predmemorirane vrijednosti mogu biti identične između nadređenih i podređenih niti.

Implementacije

Nekoliko programskih jezika ima vrijeme izvođenja koje može rasporediti rad izravno na namjenskim procesorima. Na primjer, programski jezik Cilk, runtime Rust Tokio i .Net Task Parallel Library mogu to učiniti. Alternativno, operativni sustav može biti zadužen za raspoređivanje stvarnog vremena procesora. Program jednostavno dodaje zadatke u skup "radničkih niti", koje same raspoređuje operativni sustav.

To se događa u sustavima u kojima program nema namjenski izravan pristup jezgrama obrade, već mora dijeliti pristup s drugim procesima. U ovom scenariju potrebno je posvetiti dodatnu pozornost kako bi se osiguralo da se nit više puta ne ukrade dok miruje.

Postoje različiti pristupi odabiru radnih predmeta za krađu. U izvornom konceptu pristup je bio odabir druge nasumične jezgre. Ako je imao jednu ili više radnih stavki u redu čekanja, uzmite posljednju. Ovisno o preferencama hoće li proces dijete odmah izvršiti izvorni procesor. Ili, ako se gurne u red čekanja procesora, a nadređeni proces se nastavi izvršavati, nadređena ili podređena nit bit će ukradena.

Sve se to može sažeti kao Work Stealing, tehnika balansiranja opterećenja koja osigurava ravnomjernu raspodjelu opterećenja među dostupnim procesorima. Na taj način svi procesori čine nešto da pomognu.

Zaključak

Krađa posla je proces koji se automatski odvija u višejezgrenim procesorima. Svaka jezgra ima red zadataka koje treba izvršiti. Kada procesor dovrši svoje zadatke, on tada krade još jedan zadatak iz reda druge procesorske jezgre. To pomaže u sprječavanju procesora da neke jezgre miruju dok druge još uvijek imaju niz zadataka koje moraju izvršiti.