Google hà cuminciatu à apre l'implementazione di u mudellu di filettatura M: N

Google suggeritu per include in u kernel Linux u primu settore di patches cù l'implementazione di cumpunenti necessarii per assicurà l'operazione di u mudellu di filettatura M:N. L'iniziativa di Google hè ligata à l'apertura di una API chì si sviluppava à porte chjuse Cambia à per u kernel Linux, chì furnisce u funziunamentu di un subsistema multi-threaded implementatu in u spaziu di l'utilizatori, utilizendu u mudellu di threading M: N. U subsistema hè utilizatu da Google per assicurà l'operazione di servizii chì necessitanu ritardi minimi. A pianificazione è a gestione di a distribuzione di filu hè realizatu interamente in u spaziu di l'utilizatori, chì ponu riduce significativamente u numeru di operazioni di cambiamentu di u cuntestu minimizendu l'esekzione di e chjama di u sistema.

Per assicurà u funziunamentu di u subsistema specificatu à u livellu di u kernel Linux, l'API SwitchTo hè stata implementata, chì offre trè operazioni basi - aspettate, riprende è scambià (switching). Per l'inclusione in u kernel, u codice di una nova operazione FUTEX_SWAP hè pruposta, cumplementarii FUTEX_WAIT è FUTEX_WAKE, è furnisce un framework per creà biblioteche multi-threaded in u spaziu di l'utilizatori. FUTEX_SWAP pò ancu esse usatu per trasfiriri missaghji trà i travaglii, simili à RPC. Per esempiu, attualmente, per trasfiriri un missaghju trà i travaglii, avete bisognu di fà almenu quattru chjama à FUTEX_WAIT è FUTEX_WAKE, ma cù FUTEX_SWAP vi permetterà di ottene una operazione, chì serà cumpletata 5-10 volte più veloce.

Google hà cuminciatu à apre l'implementazione di u mudellu di filettatura M: N

Attualmente, i mudelli di flussu 1: 1 è N: 1 sò principalmente usati in a pratica. U mudellu 1: 1 hè usatu in NPTL (flussi POSIX) è LinuxThreads, è implica una mappatura diretta di un filu in u spaziu di l'utilizatori à un filu (unità di scheduling di esecuzione) à u livellu di u kernel. U mudellu N:1 implementatu in GNU Pth, porta a spedizione di filu in u spaziu di l'utilizatori è permette à N fili in u spaziu di l'utilizatori per esse ligati à un filu unicu in u kernel, senza chì u kernel hà cunniscenze di i fili d'utilizatori.

U principale svantaghju di u mudellu 1: 1 hè a grande overhead di u cuntestu chì cambia trà u kernel è u spaziu di l'utilizatori. U mudellu N: 1 risolve stu prublema, ma crea un novu - postu chì un filu in u kernel hè una unità indivisibile di scheduling di esecuzione, i fili di l'utilizatori ligati à un filu in u kernel di u sistema operatore ùn ponu micca scala in i core di CPU è finiscinu ligatu à un unicu core CPU.

U mudellu M: N hè hibridu è elimina tutti i svantaghji sopra descritti cartografiandu N fili in u spaziu di l'utilizatori à i fili M in u kernel OS, chì permette à tempu di riduce l'overhead di u cambiamentu di cuntestu è di assicurà a scala in i core CPU. U costu di sta opzione hè a grande cumplessità di implementà un pianificatore di filu in u spaziu di l'utilizatori è a necessità di miccanismi per coordinà l'azzioni cù u pianificatore di u kernel.

Source: opennet.ru

Add a comment