Předně "Kde jsou ty prachy Lebowski!" resp. v tomhle případě "Kde jsou ta data Lebowski!".
Ideální zátěž běží tak, že má DATA u PROCESORU.
N+1 stupeň neideální zátěže
Proces běží na procesoru B, ale data jsou v paměti procesoru A.
N+2 stupeň neideální zátěže
Proces běží na procesoru B, ale data jsou v paměti procesoru A a navíc procesor A paměť intenzivně využívá.
N+3 stupeň neideální zátěže
Proces běží na procesoru B, ale data jsou v paměti procesoru A a navíc jsou data sdílená, jsou tam možné semafory a locky, tedy se čeká na uvolnění semaforu.
N+N+1 stupeň neideální zátěže
Procesy běží na procesoru B, ale data jsou v paměti procesoru A a všechny tyto procesy se naráz různě zkouší dostat k těmto datům.
...penalizace 10% je v podstatě důkaz toho, že to je dobře udělané.
Problematika přidělování paměti procesům je sama o sobě zajímavá.
Původní strategie byla taková, že jak se paměť plnila, zabíraly se jednotlivé paměťové banky.
Tj. nejprve se kompletně naplnila paměť u procesoru A, pak se teprve začala zabírat paměť u procesoru B.
Teď je to myslím tak, že se data dávají do paměti "mateřského procesoru", tedy tam, kde se paměť poprvé naalokovala.
Pokud spouštíš samostatné procesy, bude distribuce zřejmě ideální, ale pokud pouštíš jeden proces a ten proces si alokuje paměť, měla by data být primárně přístupná z domény daného hlavního procesu a tedy na tom procesoru s tím, že plánovač by neměl stěhovat vlákna na další CPU, dokud se mu to bude zdát OK.
Jaký je aktuální stav na linuxu nevím (!!!).