Inihahanda ng Linux ang eBPF para gumawa ng mga task scheduler

Linux

Estamos ilang araw pagkatapos ng paglabas ng stable na bersyon ng Linux 6.10, isang bersyon na magsasama ng isang serye ng mga medyo kawili-wiling pagbabago, pati na rin ang mahusay na mga pagpapabuti sa mga tuntunin ng suporta sa device, mga function at higit pa.

Sa takdang panahon ay pag-uusapan natin ang pagpapalabas na ito, dahil ang dahilan ng artikulong ito ay tumutukoy sa susunod na inaasahang bersyon ng Linux, na "Linux 6.11", isang release kung saan ang ilang mga pagbabago ay inihayag na binanggit ko sapat na oras, gusto kong tugunan sila sa isa pang post.

Ok, ngayon ay lumipat sa punto ng artikulo, na nasa pagtukoy sa isang anunsyo na ginawa ni Linus Torvalds tungkol sa kanilang pagpayag na isama sa Linux 6.11 kernel, ang ilan mga patch na nagpapatupad ng mekanismo “sched_ext” (SCX).

Ang mekanismong itoo nilayon na gumamit ng eBPF upang lumikha ng mga scheduler ng CPU sa loob ng Linux kernel. Narito ang isang buod ng kung paano ito gagana:

  • eBPF at CPU Programmer: Sa paggamit ng eBPF, ang mga scheduler ng CPU ay maaaring dynamic na mai-load at maisakatuparan sa loob ng Linux kernel. Ang Just-In-Time (JIT) compilation ay nagsasalin ng eBPF bytecode sa mga tagubilin sa makina para sa pagpapatupad.
  • SCHED_EXT klase: Ito ay isang bagong programming class, na ang kernel call priority ay kabilang sa mga klase SCHED_IDLE at SCHED_NORMAL. Mga driver ng BPF na naka-link sa SCHED_EXT maaaring pangasiwaan ang mga gawain na may mas mababang priyoridad kaysa sa real-time na pagpapatupad, nang hindi naaapektuhan ang mga gawaing naka-attach na sa normal na scheduler SCHED_NORMAL.
  • Operasyon: Sinusuri ng mga driver ng BPF ang mga pila ng mga gawain na naghihintay na maisagawa sa CPU at piliin kung aling gawain ang itatalaga kapag ang isang CPU core ay napalaya. Kung walang mga aktibong driver ng BPF na naka-on SCHED_EXT, Ang mga gawain ay hinahawakan gamit ang scheduler SCHED_NORMAL.
  • Benepisyo: Ang mekanismo sched_ext pinapadali ang pag-eksperimento sa iba't ibang mga diskarte at diskarte sa programming sa isang dynamic na paraan. Binibigyang-daan ka nitong mabilis na lumikha ng mga functional na prototype ng mga programmer at palitan ang mga ito sa mabilisang mga kapaligiran ng produksyon. Halimbawa, maaari itong i-tune upang magkasya sa mga partikular na katangian ng isang application at baguhin ang diskarte sa pag-iiskedyul batay sa status ng system at iba pang mga salik.

Ito ay nagkakahalaga ng pagbanggit na Ang "sched_ext" ay unang iminungkahi para sa pagsasaalang-alang ng mga developer ng kernel noong 2022, na sinundan ng paglabas ng anim na patch revision. Sa kabila ng hindi suportado sa pangunahing kernel, Maraming distribusyon tulad ng Ubuntu, Arch Linux, Fedora at NixOS ang nag-aalok ng pag-install ng "sched_ext" sa pamamagitan ng mga karagdagang pakete. Isinasaalang-alang ng Canonical ang pagsasama ng mga bahagi ng «sched_ext»sa Ubuntu 24.10, at ang Valve ay nagtatrabaho sa pagsasama nito para sa Steam Deck. Sa Meta, ang programmer batay sa «sched_ext» ay ginagamit na sa imprastraktura ng produksyon.

Bilang karagdagan, nabanggit na, sa kasalukuyan, humigit-kumulang isang dosenang programmer batay sa "sched_ext", bawat isa ay may lohika sa pag-iiskedyul ng gawain na tinukoy sa espasyo ng gumagamit at na-load sa kernel gamit ang mga programa ng BPF.

  1. scx_layered: Isang hybrid na scheduler na naghahati sa mga gawain sa mga layer, bawat isa ay may sariling diskarte sa pag-iiskedyul. Binibigyang-daan kang magtalaga ng ilang partikular na gawain sa mga partikular na layer na may garantisadong mapagkukunan ng CPU o dagdagan ang priyoridad ng mga indibidwal na application. Binuo ng Meta, ang logic ng userspace nito ay nakasulat sa Rust.
  2. scx_rustland: Na-optimize upang unahin ang mga interactive na gawain kaysa sa CPU-intensive. Halimbawa, pinapabuti nito ang FPS sa larong Terraria sa panahon ng concurrent kernel compilation kumpara sa karaniwang EEVDF scheduler. Binuo ng isang Canonical na empleyado, na may lohika sa Rust.
  3. scx_lavd: Ipinapatupad ang algorithm ng LAVD (Latency-criticality Aware Virtual Deadline), binabawasan ang latency sa mga laro sa computer at mga interactive na gawain sa pamamagitan ng pagsasaalang-alang sa kaugnayan ng pagbabawas ng mga pagkaantala at pag-unlad ng proseso. Binuo ni Igalia at Valve, na may lohika sa Rust.
  4. scx_rusty, scx_rlfifo, scx_mitosis: Mga scheduler na nagbabalanse sa mga pangkat ng gawain batay sa pagkarga, nagpapatupad ng simpleng FIFO scheduler, at nagbubuklod sa mga pangkat ng gawain sa mga core ng CPU. Lahat ay may mga sangkap na kalawang.
  5. scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland: Mga halimbawa ng mga programmer na may mga bahaging C, na nagpapakita ng iba't ibang kakayahan ng "sched_ext".

Sa wakas, sulit na idagdag na ang Google ay nag-eeksperimento sa paggamit ng sarili nitong framework, ghOSt, upang maimpluwensyahan ang mga desisyon ng task scheduler gamit ang mga BPF program, at sinimulan ang paglipat ng ghOSt sa sched_ext. Bilang karagdagan, ang Google ay gumagawa ng isang port ng "sched_ext" para sa ChromeOS.

Fuente: https://lkml.org


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.