Google M:N урсгалын загварын хэрэгжилтийг нээж эхэллээ

Google санал болгосон Линукс цөмд оруулахын тулд M: N урсгалтай загварын ажлыг хангахад шаардлагатай бүрэлдэхүүн хэсгүүдийн хэрэгжилт бүхий эхний багц нөхөөсийг оруулна. Google-ийн санаачилга нь хаалттай хаалганы цаана боловсруулсан API-г нээхтэй холбоотой юм сэлгэх M: N урсгалын загварыг ашигладаг хэрэглэгчийн орон зайд хэрэгжсэн олон урсгалтай дэд системээр хангадаг Linux цөмийн хувьд. Дэд системийг Google хамгийн бага саатал шаарддаг үйлчилгээ үзүүлэхэд ашигладаг. Сэдвийн хуваарилалтын хуваарь, удирдлагыг бүхэлд нь хэрэглэгчийн орон зайд гүйцэтгэдэг бөгөөд энэ нь системийн дуудлагын гүйцэтгэлийг багасгах замаар контекст шилжүүлэгчийн тоог мэдэгдэхүйц бууруулж чадна.

Энэхүү дэд системийн ажиллагааг хангахын тулд SwitchTo API-г Линуксийн цөмийн түвшинд хэрэгжүүлсэн бөгөөд хүлээх, үргэлжлүүлэх, солих (шилжих) гэсэн гурван үндсэн үйлдлийг санал болгодог. Цөмд оруулахын тулд шинэ FUTEX_SWAP үйлдлийн кодыг санал болгож байна. FUTEX_WAIT ба FUTEX_WAKE, мөн олон урсгалтай хэрэглэгчийн орон зайн сангуудыг бий болгох тогтолцоог бий болгодог. FUTEX_SWAP нь RPC-тэй адил даалгавруудын хооронд мессеж дамжуулахад ашиглагдаж болно. Жишээлбэл, одоогийн байдлаар даалгавруудын хооронд мессеж дамжуулахын тулд FUTEX_WAIT болон FUTEX_WAKE руу дор хаяж дөрвөн дуудлага хийх шаардлагатай бол FUTEX_SWAP нь нэг үйлдлийг 5-10 дахин хурдан гүйцэтгэх боломжийг олгоно.

Google M:N урсгалын загварын хэрэгжилтийг нээж эхэллээ

Одоогийн байдлаар практикт 1: 1 ба N: 1 урсгалын загваруудыг голчлон ашиглаж байна. 1:1 загварыг ашиглаж байна NPTL (POSIX хэлхээнүүд) болон LinuxThreads, мөн хэрэглэгчийн орон зайн хэлхээг цөмийн түвшинд урсгалтай (гүйцэтгэх хуваарийн нэгж) шууд зураглахыг хэлнэ. N:1 загвар нь хэрэгжиж байна GNU Pth, хэрэглэгчийн орон зайд урсгалын хуваарийг авчирч, N хэрэглэгчийн орон зайн хэлхээг цөм дэх нэг урсгалтай холбох боломжийг олгодог бөгөөд цөм нь хэрэглэгчийн урсгалын талаар мэддэггүй.

1:1 загварын гол сул тал нь цөм болон хэрэглэгчийн орон зай хооронд контекст шилжихэд ихээхэн зардал гардаг. N:1 загвар нь энэ асуудлыг шийдэж байгаа боловч шинээр бий болгодог - цөм дэх thread нь гүйцэтгэлийн хуваарийн хуваагдашгүй нэгж учраас үйлдлийн системийн цөм дэх нэг урсгалтай холбогдсон хэрэглэгчийн хэлхээнүүд нь CPU-ийн цөмүүдийг дамжуулж чадахгүй бөгөөд нэг CPU цөм.

M:N загвар нь эрлийз бөгөөд N хэрэглэгчийн зайны урсгалыг M цөмийн хэлхээнд буулгаснаар дээрх бүх сул талуудыг шийдэж, контекст шилжүүлэгчийн ачааллыг багасгаж, CPU-ийн цөмд масштабыг багасгадаг. Энэ сонголтын үнэ нь хэрэглэгчийн орон зайд урсгал төлөвлөгчийг хэрэгжүүлэхэд тулгарч буй томоохон хүндрэл бөгөөд цөмийн хуваарьлагчтай үйлдлийг зохицуулах механизмын хэрэгцээ юм.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх