Gumagawa ang popcorn ng isang distributed thread execution system para sa Linux kernel.

Virginia Tech iminungkahi para sa talakayan ng mga developer ng Linux kernel, isang set ng mga patch na may pagpapatupad ng isang distributed thread execution system Papkorn (Distributed Thread Execution), na nagpapahintulot sa iyo na ayusin ang pagpapatupad ng mga application sa ilang mga computer na may pamamahagi at transparent na paglipat ng mga thread sa pagitan ng mga host. Sa Popcorn, maaaring ilunsad ang mga application sa isang host at pagkatapos ay ilipat sa isa pang host nang walang pagkaantala. Sa mga multithreaded na programa, pinapayagan ang paglipat ng mga indibidwal na thread sa ibang mga host.

Hindi tulad ng proyekto CRIUSa pamamagitan ng pagpayag na ma-save ang estado ng proseso at ipagpatuloy ang pagpapatupad sa ibang system, nagbibigay ang Popcorn ng tuluy-tuloy at dynamic na paglipat sa pagitan ng mga host sa panahon ng pagpapatupad ng application, na hindi nangangailangan ng pagkilos ng user at pagtiyak ng pare-parehong virtual memory sa lahat ng host na nagpapatakbo ng magkakasabay na mga thread.

Form ng stack ng software ng popcorn mga patch sa Linux kernel at aklatan na may mga pagsubok na nagpapakita kung paano magagamit ang mga Popcorn system call para mag-migrate ng mga thread sa mga distributed na application. Sa antas ng kernel, ang mga extension sa virtual memory subsystem ay iminungkahi sa pagpapatupad ng distributed shared memory, na nagpapahintulot sa mga proseso sa iba't ibang host na ma-access ang isang karaniwan at pare-parehong virtual address space. Ang pagkakaugnay ng pahina ng virtual na memorya ay sinisiguro ng isang protocol na ginagaya ang mga pahina ng memorya sa host kapag nabasa ang mga ito at nagpapawalang-bisa sa mga pahina ng memorya kapag nakasulat.

Ang pakikipag-ugnayan sa pagitan ng mga host ay isinasagawa gamit ang isang kernel-level handler para sa mga mensaheng ipinadala sa pamamagitan ng isang TCP socket. Nabanggit na ang TCP/IP ay ginagamit upang pasimplehin ang pag-debug at pagsubok sa panahon ng proseso ng pagbuo. Nauunawaan ng mga developer na, mula sa isang pananaw sa seguridad at pagganap, ang TCP/IP ay hindi ang pinakamahusay na paraan upang ilipat ang mga nilalaman ng mga istruktura ng kernel at mga pahina ng memorya sa pagitan ng mga host. Ang lahat ng mga host na nagpapatakbo ng mga distributed application ay dapat magkaroon ng parehong antas ng tiwala. Pagkatapos ng pagpapapanatag ng mga pangunahing algorithm, isang mas mahusay na paraan ng transportasyon ang gagamitin.

Ang popcorn ay nabuo mula noong 2014 bilang isang proyekto sa pananaliksik upang pag-aralan ang mga posibilidad ng paglikha ng mga ipinamamahaging aplikasyon, ang mga thread na maaaring isagawa sa iba't ibang mga node sa magkakaiba mga computing system na maaaring pagsamahin ang mga core batay sa iba't ibang mga arkitektura ng set ng pagtuturo (Xeon/Xeon-Phi, ARM/x86, CPU/GPU/FPGA). Ang hanay ng mga patch na iminungkahi sa mga developer ng Linux kernel ay sumusuporta lamang sa pagpapatupad sa mga host na may x86 CPU, ngunit mayroon ding mas functional na bersyon ng Popcorn Linux, na nagpapahintulot sa mga application na tumakbo sa mga host na may iba't ibang mga arkitektura ng CPU (x86 at ARM). Upang magamit ang Popcorn sa magkakaibang kapaligiran, dapat kang gumamit ng espesyal compiler batay sa LLVM. Kapag tumatakbo nang distributedly sa mga host na may parehong arkitektura, hindi kinakailangan ang muling pagtatayo gamit ang isang hiwalay na compiler.

Gumagawa ang popcorn ng isang distributed thread execution system para sa Linux kernel.

Bilang karagdagan, maaari itong mapansin anunsyo medyo katulad na proyekto Telefork sa pagpapatupad ng isang paunang prototype na API para sa paglulunsad ng mga child na proseso sa iba pang mga computer sa cluster (tulad ng fork(), ngunit inililipat ang forked na proseso sa ibang computer).
Ang code ay nakasulat sa Rust at sa ngayon ay pinapayagan lamang ang pag-clone ng napakasimpleng proseso na hindi gumagamit ng mga mapagkukunan ng system tulad ng mga file. Kapag ginawa ang isang telefork na tawag, ang memorya at mga istrukturang nauugnay sa proseso ay na-clone sa isa pang host na nagpapatakbo ng server handler (telepad). Gamit ang ptrace, ang memory reflection ng isang proseso ay serialized at, kasama ang estado ng proseso at mga rehistro, inilipat sa ibang host. Pinapayagan ka rin ng API na i-save ang estado ng proseso sa isang file at ibalik ito sa pamamagitan nito.

Pinagmulan: opennet.ru

Magdagdag ng komento