CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
# Comment out CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
Gawo 2: Ubwino ndi Kuipa kwa HugePages
Tidzayesa kufotokoza mosankha ubwino, kuipa ndi zovuta zomwe zingatheke pogwiritsa ntchito Hugepages. Popeza nkhani yaukadaulo komanso yoyenda pang'onopang'ono ikhala yovuta kumvetsetsa kwa anthu omwe apusitsidwa kuganiza kuti Hugepages ndi mankhwala othana ndi vuto, ndipereka kulondola kuti ndikhale wosavuta. Ndikoyenera kukumbukira kuti mitu yambiri ndi yovuta kwambiri kotero kuti ndiyosavuta kwambiri.
Chonde dziwani kuti tikulankhula za makina a 64-bit x86 omwe akuyendetsa Linux, ndikuti ndikungoganiza kuti makinawa amathandizira masamba akuluakulu owoneka bwino (popeza sizoyipa kuti masamba akulu sanalembedwenso), monga momwe zimakhalira pafupifupi Linux iliyonse yamakono. chilengedwe.
Ndiphatikizanso zambiri zaukadaulo pamalumikizidwe omwe ali pansipa.
Virtual Memory
Ngati ndinu C ++ wolemba mapulogalamu, mukudziwa kuti zinthu zomwe zili pamtima zimakhala ndi maadiresi enieni (ma pointer values).
Komabe, ma adilesi awa samawonetsa maadiresi omwe amakumbukira (maadiresi a RAM). Amayimira ma adilesi mu kukumbukira kwenikweni. Purosesa ili ndi gawo lapadera la MMU (memory management unit) lomwe limathandiza mapu a kernel kukumbukira malo enieni.
Njirayi ili ndi zabwino zambiri, koma zofunika kwambiri ndi izi:
Zokumbukira zenizeni zimagawidwa m'masamba. Tsamba lililonse lililonse limalozera ku kukumbukira kwakuthupi, limatha kuloza malo omwe ali mu RAM, kapena limatha kuloza ku adilesi yomwe yaperekedwa ku chipangizo chakuthupi, monga khadi ya kanema.
Masamba ambiri omwe mumakumana nawo amalozera ku RAM kapena kusinthidwa, kutanthauza kuti amasungidwa pa hard drive yanu kapena SSD. Kernel imayang'anira mawonekedwe a tsamba lililonse. Ngati tsamba la spoofed likupezeka, kernel imayimitsa ulusi womwe ukuyesa kukumbukira, imawerenga tsambalo kuchokera pa hard drive/SSD kupita ku RAM, kenako ndikupitiliza kutulutsa ulusiwo.
Izi ndizowoneka bwino, kutanthauza kuti sizimawerengedwa mwachindunji kuchokera ku HDD/SSD. Kukula kwamasamba abwinobwino ndi 4096 byte. Kukula kwakukulu ndi 2 megabytes.
Translation-associative buffer (TLB)
Pulogalamu ikafika patsamba lokumbukira, CPU iyenera kudziwa tsamba lomwe lingawerenge kuchokera (ndiko kukhala ndi mapu a adilesi).
Kernel ili ndi dongosolo la data (tebulo latsamba) lomwe lili ndi zonse zokhudzana ndi masamba omwe akugwiritsidwa ntchito. Pogwiritsa ntchito dongosolo la datali, mutha kuyika adilesi yeniyeni ku adilesi yanu.
Apa ndipamene Hugepages amabwera. M'malo mwa ma byte 4096 omwe amangofuna kulowa kwa TLB imodzi, kulowa kwa TLB kutha kuloza ku ma megabytes awiri. Tiyerekeze kuti TLB ili ndi zolemba 2, pano popanda Hugepages titha kufanana:
4096 bβ 512=2 MB
Ndiye tingayerekeze bwanji nawo:
2 MBβ 512=1 GB
Ichi ndichifukwa chake Hugepages ndiyabwino. Amatha kukulitsa zokolola popanda kuchita khama. Koma pali zochenjeza zazikulu apa.
Hugepages spoofing
Kernel imangoyang'anira kangati tsamba lililonse lokumbukira limagwiritsidwa ntchito. Ngati palibe kukumbukira kwakuthupi (RAM), kernel imasuntha masamba osafunikira (osagwiritsidwa ntchito pafupipafupi) kupita ku hard disk kuti amasule RAM pamasamba ofunikira kwambiri.
M'malo mwake, zomwezo zimagwiranso ntchito ku Hugepages. Komabe, kernel imatha kusintha masamba onse, osati ma byte amodzi.
Pankhaniyi, kernel iyenera kusintha (kuwerenga) zambiri za 2 megabytes kuchokera pa hard drive/SSD kuti muwerenge baiti imodzi. Ponena za masamba okhazikika, ma byte 4096 okha amafunikira kuwerengedwa kuchokera pa hard drive/SSD.
Chifukwa chake, ngati tsamba lalikulu lalembetsedwa, limangowerenga mwachangu ngati mukufuna kupeza tsamba lonse. Izi zikutanthauza kuti ngati mukuyesera kuti mulowe m'malo osiyanasiyana a kukumbukira ndikungowerenga ma kilobytes angapo, muyenera kugwiritsa ntchito masamba okhazikika osadandaula ndi china chilichonse.
Kwa wopanga mapulogalamu, zitha kuwoneka ngati "mukupempha" ma byte 30 a kukumbukira kuchokera pa opareshoni ndikubwezeretsa cholozera ku kukumbukira kwina. Koma kwenikweni malloc () ndi ntchito ya C yomwe imayitana kuchokera mkati mwa ntchitoyi brk ndi sbrk kupempha kapena kumasula kukumbukira kuchokera ku opaleshoni.
Komabe, kupempha kukumbukira kochulukira pagawo lililonse sikuthandiza; ndizotheka kuti gawo lina la kukumbukira lamasulidwa kale (free()), ndipo tikhoza kuzigwiritsanso ntchito. malloc() imagwiritsa ntchito ma aligorivimu ovuta kugwiritsanso ntchito kukumbukira komasulidwa.