Ua hoʻomaka ʻo Google e wehe i ka hoʻokō ʻana i ke kumu hoʻohālike M:N

Google manaʻo ʻia e hoʻokomo i loko o ka Linux kernel ka hoʻonohonoho mua o nā patches me ka hoʻokō ʻana i nā ʻāpana e pono ai e hōʻoia i ka hana o ka M:N threading model. Pili ka hana a Google i ka wehe ʻana o kahi API e ulu ana ma hope o nā pani pani. Hoʻololi iā no ka Linux kernel, e hāʻawi ana i ka hana o kahi subsystem multi-threaded i hoʻokō ʻia ma kahi o ka mea hoʻohana, me ka hoʻohana ʻana i ke kumu hoʻohālike M:N threading. Hoʻohana ʻia ka subsystem e Google e hōʻoia i ka hana o nā lawelawe e koi ana i nā lohi liʻiliʻi. Hana ʻia ka hoʻonohonoho ʻana a me ka hoʻokele ʻana o ka hāʻawi ʻana i ke kaula i loko o ka lumi hoʻohana, hiki ke hōʻemi nui i ka nui o nā hana hoʻololi pōʻaiapili ma ka hoʻemi ʻana i ka hoʻokō ʻana i nā kelepona ʻōnaehana.

No ka hōʻoia ʻana i ka hana o ka subsystem i kuhikuhi ʻia ma ka pae kernel Linux, ua hoʻokō ʻia ka SwitchTo API, e hāʻawi ana i ʻekolu mau hana maʻamau - kali, hoʻomaka a hoʻololi (hoʻololi). No ka hoʻokomo ʻana i ka kernel, ua noi ʻia ke code o kahi hana hou FUTEX_SWAP, hoʻokō FUTEX_WAIT a me FUTEX_WAKE, a hāʻawi i kahi hoʻolālā no ka hoʻokumu ʻana i nā hale waihona puke ma nā wahi mea hoʻohana. Hiki ke hoʻohana ʻia ʻo FUTEX_SWAP e hoʻoili i nā memo ma waena o nā hana, e like me RPC. No ka laʻana, i kēia manawa, e hoʻoili i kahi leka ma waena o nā hana, pono ʻoe e hana ma ka liʻiliʻi ʻehā mau kelepona iā FUTEX_WAIT a me FUTEX_WAKE, akā me ka hoʻohana ʻana i FUTEX_SWAP e ʻae iā ʻoe e loaʻa me ka hana hoʻokahi, e hoʻopau ʻia 5-10 mau manawa wikiwiki.

Ua hoʻomaka ʻo Google e wehe i ka hoʻokō ʻana i ke kumu hoʻohālike M:N

I kēia manawa, hoʻohana nui ʻia nā hiʻohiʻona kahe 1:1 a me N:1 i ka hana. Hoʻohana ʻia ke kumu hoʻohālike 1:1 ma NPTL (POSIX pae) a LinuxThreads, a e hōʻike ana i ka palapala ʻāina pololei o kahi thread ma kahi o ka mea hoʻohana i kahi thread (unit of execution scheduling) ma ka pae kernel. Hoʻohālike N:1 i hoʻokō ʻia ma ʻO GNU Pth, lawe mai i ka hoʻouna ʻana i ke kaula i loko o ka lumi o ka mea hoʻohana a hiki ke hoʻopaʻa ʻia nā kaula N ma kahi o ka mea hoʻohana e hoʻopaʻa ʻia i hoʻokahi kaula i loko o ka kernel, me ka ʻike ʻole o ka kernel i nā loina mea hoʻohana.

ʻO ka hemahema nui o ka hoʻohālike 1:1 ʻo ia ka nui o ka hoʻololi ʻana o ka pōʻaiapili ma waena o ka kernel a me ka wahi hoʻohana. Hoʻoponopono ka hoʻohālike N: 1 i kēia pilikia, akā hana i kahi mea hou - no ka mea ʻo kahi kaula i loko o ka kernel kahi ʻāpana ʻokoʻa o ka hoʻonohonoho hoʻokō, ʻaʻole hiki i nā loina mea hoʻohana i hoʻopaʻa ʻia i hoʻokahi kaula i loko o ka ʻōnaehana hana kernel ʻaʻole hiki ke hoʻopaʻa ʻia i nā cores CPU a hoʻopau i ka nakinaki ʻia. hoʻokahi kumu CPU.

ʻO ka M:N model he hybrid a hoʻopau i nā hemahema āpau i hōʻike ʻia ma luna o ka palapala ʻana i nā kaula N i loko o ka mea hoʻohana i nā kaula M i ka OS kernel, e hiki ai iā lāua ke hōʻemi i ke poʻo o ka hoʻololi ʻana i ka pōʻaiapili a e hōʻoia i ka scaling ma waena o nā cores CPU. ʻO ke kumukūʻai o kēia koho ʻo ia ka paʻakikī nui o ka hoʻokō ʻana i kahi mea hoʻonohonoho thread ma kahi o ka mea hoʻohana a me ka pono o nā mīkini e hoʻonohonoho i nā hana me ka mea hoʻonohonoho kernel.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka