Yav dhau los, kuv tau tham txog yuav ua li cas kuaj thiab pab Hugepages ntawm Linux.
Kab lus no tsuas yog siv tau yog tias koj muaj qhov chaw siv Hugepages tiag tiag. Kuv tau ntsib ntau tus neeg uas dag los ntawm kev cia siab tias Hugepages yuav ua kom muaj txiaj ntsig zoo. Txawm li cas los xij, hugepaging yog ib lub ntsiab lus nyuaj thiab tuaj yeem txo qis kev ua haujlwm yog tias siv tsis raug.
Ntu 1: Txheeb xyuas tias cov nplooj ntawv loj loj tau qhib rau ntawm Linux (thawj no)
Teeb meem:
Koj yuav tsum xyuas seb HugePages tau qhib rau koj lub cev.
yeej ib txwm txhais tau tias transparent hugepages ib txwm enabled rau tag nrho cov txheej txheem. Qhov no feem ntau txhim kho kev ua tau zoo, tab sis yog tias koj muaj cov ntaub ntawv siv uas ntau cov txheej txheem tau noj me me ntawm lub cim xeeb, ces tag nrho cov cim xeeb tuaj yeem nce ntau.
yeej tsis txhais tau tias transparent hugepages yuav tsis suav nrog txawm tias thaum thov siv madvise. Yog xav paub ntxiv, hu rau cov ntaub ntawv Linux kernels.
Yuav hloov tus nqi li cas
Qhov 1: Hloov ncaj qha sysfs (tom qab reboot lub parameter yuav rov qab mus rau nws tus nqi qub):
echo always >/sys/kernel/mm/transparent_hugepage/enabled
echo madvise >/sys/kernel/mm/transparent_hugepage/enabled
echo never >/sys/kernel/mm/transparent_hugepage/enabled
Qhov 2: Hloov cov txheej txheem ua ntej los ntawm kev rov ua cov ntsiav nrog kev hloov kho (qhov kev xaiv no tsuas yog pom zoo yog tias koj siv cov ntsiav kev cai):
Txhawm rau teeb tsa ib txwm los ntawm lub neej ntawd, siv:
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# Comment out CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
Txhawm rau teeb tsa madvise ua lub neej ntawd, siv:
CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
# Comment out CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
Lub cim xeeb virtual muab faib ua nplooj ntawv. Txhua nplooj ntawv taw qhia rau qhov tshwj xeeb lub cev nco, nws tuaj yeem taw tes rau thaj tsam hauv RAM, lossis nws tuaj yeem taw tes rau qhov chaw nyob muab rau lub cev, xws li daim npav video.
Feem ntau ntawm cov nplooj ntawv koj cuam tshuam nrog taw tes rau RAM lossis hloov pauv, txhais tau tias lawv khaws cia rau hauv koj lub hard drive lossis SSD. Lub kernel tswj lub cev layout ntawm txhua nplooj ntawv. Yog tias nplooj ntawv spoofed nkag mus, cov ntsiav nres cov xov uas sim nkag mus rau lub cim xeeb, nyeem nplooj ntawv los ntawm hard drive / SSD rau hauv RAM, thiab tom qab ntawd txuas ntxiv ua cov xov.
Cov txheej txheem no yog kwj pob tshab, txhais tau tias nws tsis tas nyeem ncaj qha los ntawm HDD / SSD. Qhov loj ntawm nplooj ntawv ib txwm yog 4096 bytes. Cov nplooj loj loj yog 2 megabytes.
Translation-associative buffer (TLB)
Thaum ib qho kev pab cuam nkag mus rau nplooj ntawv ntawm lub cim xeeb, CPU yuav tsum paub tias nplooj ntawv twg los nyeem cov ntaub ntawv los ntawm (uas yog, muaj daim ntawv qhia chaw nyob virtual).
Txawm li cas los xij, nplooj ntawv cov lus yog qhov nyuaj thiab qeeb, yog li peb tsuas tuaj yeem tsis tuaj yeem txheeb xyuas tag nrho cov ntaub ntawv qauv txhua zaus cov txheej txheem nkag mus rau lub cim xeeb.
Hmoov zoo, peb cov processor muaj TLB uas caches daim ntawv qhia ntawm qhov chaw nyob virtual thiab lub cev. Qhov no txhais tau hais tias txawm hais tias peb yuav tsum txheeb xyuas nplooj ntawv ntawm thawj qhov kev sim nkag, txhua qhov kev nkag mus rau nplooj ntawv tom ntej tuaj yeem ua haujlwm hauv TLB, tso cai rau kev ua haujlwm ceev.
Vim tias nws tau siv los ua lub cev lub cev (uas ua rau nws ceev ceev hauv thawj qhov chaw), nws lub peev xwm tsuas yog txwv. Yog li yog tias koj xav nkag mus rau ntau nplooj ntawv, TLB yuav tsis tuaj yeem khaws cov ntawv qhia rau txhua tus ntawm lawv, ua rau koj qhov kev pabcuam ua haujlwm qeeb dua.
Cov nplooj loj loj los cawm
Yog li peb tuaj yeem ua li cas kom tsis txhob TLB dhau? (Peb xav tias qhov program tseem xav tau tib lub cim xeeb).
Qhov no yog qhov uas Hugepages tuaj rau hauv. Hloov chaw ntawm 4096 bytes tsuas yog xav tau ib qho TLB nkag, ib qho TLB nkag tam sim no tuaj yeem taw tes rau 2 megabytes. Cia peb xav tias TLB muaj 512 qhov nkag, ntawm no tsis muaj Hugepages peb tuaj yeem phim:
4096 bβ 512=2 MB
Tom qab ntawd peb tuaj yeem piv nrog lawv li cas:
2 MBβ 512=1 GB
Qhov no yog vim li cas Hugepages yog txaus. Lawv tuaj yeem txhim kho cov khoom tsim tau yam tsis muaj kev siv zog ntau. Tab sis muaj cov caveats tseem ceeb ntawm no.
Hugepages spoofing
Lub kernel cia li saib xyuas ntau npaum li cas txhua nplooj ntawv nco tau siv. Yog tias tsis muaj lub cim xeeb txaus (RAM), cov ntsiav yuav txav cov nplooj ntawv tseem ceeb (tsawg dua siv) cov nplooj ntawv rau lub hard disk kom tso qee RAM rau nplooj ntawv tseem ceeb dua.
Hauv txoj cai, tib yam siv rau Hugepages. Txawm li cas los xij, cov ntsiav tuaj yeem hloov pauv tag nrho nplooj ntawv, tsis yog ib tus bytes.
Cia peb hais tias peb muaj qhov program zoo li no:
Hauv qhov no, cov ntsiav yuav xav tau hloov (nyeem) ntau npaum li 2 megabytes ntawm cov ntaub ntawv los ntawm hard drive / SSD tsuas yog rau koj nyeem ib byte. Raws li cov nplooj ntawv tsis tu ncua, tsuas yog 4096 bytes yuav tsum tau nyeem los ntawm lub hard drive / SSD.
Yog li ntawd, yog tias nplooj ntawv loj loj dhau mus, nws tsuas yog nyeem sai dua yog tias koj xav tau nkag mus rau tag nrho nplooj ntawv. Qhov no txhais tau hais tias yog tias koj tab tom sim nkag mus rau qhov sib txawv ntawm lub cim xeeb thiab tsuas yog nyeem ob peb kilobytes, koj yuav tsum siv nplooj ntawv tsis tu ncua thiab tsis txhob txhawj txog lwm yam.
Ntawm qhov tod tes, yog tias koj xav tau nkag mus rau ib feem loj ntawm kev nco ua ntu zus, cov nplooj ntawv loj loj yuav txhim kho koj qhov kev ua tau zoo. Txawm li cas los xij, koj yuav tsum sim nws tus kheej (tsis yog nrog cov software paub daws teeb) thiab pom tias ua haujlwm sai dua.
Muab faib rau hauv nco
Yog tias koj sau C, koj paub tias koj tuaj yeem thov qhov me me (lossis yuav luag arbitrarily loj) cov cim xeeb los ntawm heap siv malloc(). Cia peb hais tias koj xav tau 30 bytes ntawm lub cim xeeb:
char* mymemory = malloc(30);
Rau ib tus programmer, nws yuav tshwm sim tias koj tab tom "thov" 30 bytes ntawm lub cim xeeb los ntawm kev ua haujlwm thiab xa rov qab tus taw tes rau qee lub cim xeeb virtual. Tab sis ua tau malloc () tsuas yog C muaj nuj nqi uas hu los ntawm hauv cov haujlwm brk thiab sbrk thov los yog pub dawb nco los ntawm lub operating system.
Txawm li cas los xij, kev thov ntau thiab ntau lub cim xeeb rau txhua qhov kev faib yog tsis muaj txiaj ntsig; Nws yog feem ntau hais tias qee ntu nco tau raug tso tawm lawm (free()), thiab peb tuaj yeem rov siv tau. malloc() siv cov algorithms nyuaj heev rau rov siv lub cim xeeb dawb.