Bahlongoze ukufaka ku-Linux kernel ukuqaliswa okufika izikhathi ezi-4 ngokushesha kwe-memchr

Muva nje kukhishwe isiphakamiso se-Linux kernel, lapho kuhlongozwa khona ukuthi kufakwe isethi yamapeshi ane a ukuqaliswa okulungiselelwe komsebenzi we-memchr() esetshenziselwa ukusesha uhlamvu ohlwini.

Umsebenzi we-memchr() uskena amabhayithi angu-n aholayo wendawo yenkumbulo ekhonjwe ngo-s ngesikhathi sokuqala sika-c. Kokubili u-c kanye namabhayithi endaweni yenkumbulo akhonjwe ngu-s kuhunyushwa njengezinhlamvu ezingasayiniwe.

Isiphakamiso uthembisa kube ngokushesha ukuthola umlingisi ngaphakathi kwebhlokhi yememori. Ekuhlolweni konjiniyela, ukusetshenziswa okusha kungashesha cishe ngokuphindwe kane kusesho olukhulu

Ngokungafani nenguqulo yangaphambilini, esebenzise ukuqhathanisa kwe-byte-byte, ukuqaliswa okuhlongozwayo kwakhiwa uma kucatshangelwa ukusetshenziswa okugcwele kwamarejista e-CPU angu-64-bit namabhithi angu-32. Esikhundleni samabhayithi, ukuqhathanisa kwenziwa kusetshenziswa amagama omshini, okuvumela okungenani amabhayithi angu-4 ukuba aqhathaniswe ngesikhathi.

Lolu chungechunge lwamapeshi lwenze "memchr()" lwathuthukisa futhi lwengeza i-macro ye
"memchr_inv()" ukuze yomibili imisebenzi ikwazi ukuyisebenzisela ukukhiqiza i-bitmask.

Ukuqaliswa kwangempela kwe-"memchr()" kusekelwe ekuqhathanisweni kwebhayithi,
engasebenzisi ngokugcwele irejista engu-64 noma engu-32 ku-CPU. Sisebenzisa a
ukuqhathanisa ngamagama ukuze okungenani amabhayithi ama-4 aqhathaniswe nokufana
isimo sezulu. I-memchr() elungiselelwe ishesha cishe izikhathi ezi-4 kuneyokuqala
ngamaketanga amade. Ku-Linux Kernel, sithola ukuthi ubude bentambo
okuseshwe ngayo ngu-"memchr()" kufika ku-512 bytes ku-drivers/misc/lkdtm/heap.c.

Lapho usesha ezintanjeni ezinkulu, inguqulo entsha ivele yashesha izikhathi ezi-4 kunendala (isibonelo, kuyunithi yezinhlamvu zezinhlamvu eziyi-1000). Ngamaketanga amancane, ukusebenza kahle kokuqaliswa okusha akubalulekile kangako, kodwa kusephezulu kunenguqulo yokuqala.

Into ethokozisayo ngesiphakamiso esisha ukuthuthukiswa kwamaketanga amakhulu, okuthuthukisa kakhulu izikhathi. Kuhle ukusho ukuthi ku-Linux kernel, usayizi wezintambo ezicutshungulwe ku-memchr() ufinyelela ku-512 bytes. Ezivivinyweni zethu, ukusebenza kuzuza kweyunithi yezinhlamvu engu-512-byte, esimweni lapho uhlamvu losesho isekupheleni kwentambo, ingama-20%.

Kuhle ukusho ukuthi inguqulo yokuqala ye-memchr() isetshenziswa ngendlela yokuqhathanisa ehlakaniphile, engawasebenzisi ngokugcwele amarejista ku-64-bit noma 32-bit CPU.

Sisebenzisa isiqhathaniso samagama aphelele ukuze izinhlamvu eziyisi-8 ziqhathaniswe ngesikhathi esisodwa ku-CPU. Le khodi isuselwe ekusebenziseni kukaDavid Light.

Sakha amafayela amabili ukukala ukusebenza kwefayela lokuqala okuqukethe ngokwesilinganiso izinhlamvu eziyi-10 ngaphambi kohlamvu lwendawo. Ifayela lesibili liqukethe okungenani izinhlamvu eziyi-1000 ngaphambi kwe- uhlamvu oluqondiwe.

Ukusebenzisa kwethu okuthi "memchr()" kuncane kangcono ekuhlolweni kokuqala futhi cishe izikhathi ezi-4 ngokushesha kunokwasekuqaleni ukuqaliswa ekuhlolweni kwesibili.

Ukuhlolwa kwe-Kernel 5.18 ngokuhlukile okusha kwe-"memchr()" ye-32-bit kanye ne-64-bit architectures akazange aveze izinkinga.

Kwenzekani uma u-p engaqondile u-8 (noma u-4 kumabhithi angu-32) aqondanisiwe? Akuwona wonke amaphokophelo asekela imithwalo engaqondani (ephumelelayo), akunjalo?
 Ngicabanga ukuthi iyasebenza uma u-p engaqondile u-8 noma u-4 byte. Ake sithi intambo ingamabhayithi ayi-10. I-loop lapha izobheka amabhayithi angu-8 okuqala. Uma uhlamvu okuyiwa kulo likubhayithi yokugcina engu-2, owesibili weluphu uzoyithola. Isebenza kanjena emishinini engu-32-bit.

Inzuzo yokusebenza iyonke ayikalinganiselwa yezinhlelo ezingaphansi ze-kernel lapho kusetshenziswa okuhlukile kwe-"memchr()" okuthuthukisiwe, futhi akukaze kuxoxwe ngokuthi ukukhipha ukusetshenziswa (i-memchr() ikholi yomsebenzi yenzeka izikhathi eziyi-129 kukhodi ye-kernel, okuhlanganisa abashayeli nezinhlelo zamafayela).

Okokugcina Uma unesifiso sokwazi okwengeziwe ngakho, ungabheka imininingwane Kulesi sixhumanisi esilandelayo.


Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.