
แแฃแ แกแแก แกแขแฃแแแแขแแแแกแแแแก แแแแแแแแแฃแแ แกแขแแขแแแก แแแ แแแแแ .
แแแ แ แแแกแแฃแแ แ แแแแแ, แแฃ แ แแแแ แจแแแแแแฌแแแ แแ แฉแแ แแแ Hugepages-แแก แแแแแงแแแแแ Linux.
แแก แกแขแแขแแ แกแแกแแ แแแแแ แแฅแแแแ แแฎแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ แแฅแแแ แแแแแแแแแ แแแฅแแ แแแแแแ, แ แแ แแแแแแงแแแแ Hugepages. แแ แจแแแฎแแแ แฃแแแ แแ แแแแแแแแก, แ แแแแแแแช แแแขแงแฃแแแฃแแแ แแ แแแ แแ แแแ แกแแแฅแขแแแแ, แ แแ Hugepages แฏแแแแกแแฃแ แแ แแแแฃแแฏแแแแกแแแก แแ แแแฃแฅแขแแฃแแแแแก. แแฃแแชแ, แฃแแแ แแแแแ แ แแแแฏแแแแ แแแแแแแฅแกแฃแ แ แแแแแ แแ แแ แแกแฌแแ แแ แแแแแงแแแแแแก แจแแแแฎแแแแแจแ แจแแแซแแแแ แแแฅแแแแแแแก แจแแกแ แฃแแแแ.
แแแฌแแแ 1: แจแแแแแฌแแแ, แฉแแ แแฃแแแ แแฃ แแ แ hugepages Linux (แแ แแแแแแแ )
แแ แแแแแแ:
แแฅแแแ แฃแแแ แจแแแแแฌแแแ แฉแแ แแฃแแแ แแฃ แแ แ HugePages แแฅแแแแก แกแแกแขแแแแจแ.
แแแแแกแแแแแ:
แแก แกแแแแแแ แแแ แขแแแแ:
cat /sys/kernel/mm/transparent_hugepage/enabledแแฅแแแ แแแแฆแแแ แแกแแ แ แแแแก:
always [madvise] neverแแฅแแแ แแแฎแแแ แฎแแแแแกแแฌแแแแแ แแแ แแแแขแแแแก แฉแแแแแแแแแแก (แงแแแแแแแแก, แจแแจแแแแ, แแ แแกแแ แแก), แฎแแแ แแแแแแแ แแฅแขแแฃแ แ แแแ แแแแขแ แฉแแกแแฃแแ แแฅแแแแ แคแ แฉแฎแแแแแจแ (แแแแฃแแแกแฎแแแแแ แจแแจแแแแ).
แจแแจแแแแ แแแจแแแแก แ แแ transparent hugepages แฉแแ แแฃแแแ แแฎแแแแ แแแฎแกแแแ แแแแก แแแแแแแกแแแแก, แ แแแแแแแช แชแแแกแแฎแแ แแแฎแแแแ แฃแแแ แแแแแ แ แแแแ แแแแแก แแแแแงแแแแแแก .
แงแแแแแแแแก แแแจแแแแก แ แแ transparent hugepages แงแแแแแแแแก แฉแแ แแฃแแแ แงแแแแ แแ แแชแแกแแกแแแแก. แแก แฉแแแฃแแแแ แแ แแฃแแฏแแแแกแแแก แจแแกแ แฃแแแแแก, แแแแ แแ แแฃ แแฅแแแ แแแฅแแ แแแแแงแแแแแแก แจแแแแฎแแแแ, แ แแแแกแแช แแแแ แ แแ แแชแแกแ แแแแฎแแแ แก แแชแแ แ แ แแแแแแแแแ แแแฎแกแแแ แแแแก, แแแจแแ แแแฎแกแแแ แแแแก แแแแแแแ แแแขแแแ แแแ แจแแแซแแแแ แแแแแแ แแ แแแแแแ แแแก.
แแ แแกแแแแก แแแจแแแแก แ แแ transparent hugepages แแ แแฅแแแแ แฉแแ แแฃแแ แแแจแแแแช แแ, แ แแแแกแแช แแแแฎแแแแแแ แแฅแแแแ madvise-แแก แแแแแงแแแแแแ. แแแขแแก แแแกแแแแแแ, แแแฃแแแแจแแ แแแ แซแแ แแแแแ Linux.
แ แแแแ แจแแแชแแแแแ แแแแฃแแแกแฎแแแแ แแแแจแแแแแแแ
แแแ แแแแขแ 1: แแแ แแแแแ แจแแชแแแ sysfs (แแแแแขแแแ แแแแก แจแแแแแ แแแ แแแแขแ แ แฃแแ แฃแแแแแ แแแแฃแแแกแฎแแแ แแแแจแแแแแแแแก):
echo always >/sys/kernel/mm/transparent_hugepage/enabled
echo madvise >/sys/kernel/mm/transparent_hugepage/enabled
echo never >/sys/kernel/mm/transparent_hugepage/enabledแแแ แแแแขแ 2: แจแแชแแแแแ แกแแกแขแแแแก แแแแฃแแแกแฎแแแแ แแแ แแแ แจแแชแแแแแ แแแแคแแแฃแ แแชแแแ แฎแแแแฎแแ แจแแแแแแแ (แแก แแแ แแแแขแ แ แแแแแแแแแแฃแแแ แแฎแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ แแงแแแแแ แแแ แแแแฃแ แแแ แแแก):
- แงแแแแแแแแก แแแแฃแแแกแฎแแแแแ แแแกแแงแแแแแแแ แแแแแแงแแแแ:
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y # Comment out CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y - madvise แแแแฃแแแกแฎแแแแแ แแแกแแงแแแแแแแ แแแแแแงแแแแ:
CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y # Comment out CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
แแแฌแแแ 2: HugePages-แแก แฃแแแ แแขแแกแแแแแ แแ แฃแแ แงแแคแแแ แแฎแแ แแแแ
แฉแแแ แจแแแแชแแแแแ แจแแ แฉแแแแ แแแฎแกแแแ Hugepages-แแก แแแแแงแแแแแแก แฃแแแ แแขแแกแแแแแ, แฃแแ แงแแคแแแ แแฎแแ แแแแ แแ แจแแกแแซแแ แฎแแ แแแแแแ. แแแแแแแแ แขแแฅแแแแแแแฃแ แแ แ แแฃแแ แแ แแแแแแขแฃแ แ แกแขแแขแแ, แกแแแแ แแฃแแแ, แ แแฃแแ แแแกแแแแแ แแฅแแแแ แแ แแแแแแแแแแแกแแแแก, แ แแแแแแแช แชแแแแแแ, แ แแ Hugepages แแแแแชแแแ, แแ แจแแแฌแแ แแ แกแแแฃแกแขแแก แกแแแแ แขแแแแก. แฃแแ แแแแ แฃแแแ แแแแฎแกแแแแแก, แ แแ แแแแ แ แแแแ แแแ แแแแช แ แแฃแแแ แแ, แจแแกแแแแแแกแแ, แซแแแแแ แแแแแ แขแแแแแฃแแ.
แแแฎแแแ แแแแแแแแแกแฌแแแแ, แ แแ แฉแแแ แแกแแฃแแ แแแ 64-แแแขแแแ x86 แกแแกแขแแแแแแ, แ แแแแแแแช แแฃแจแแแแแ Linuxแแ แ แแ แแ แฃแแ แแแแ แแแแ แแฃแแแ, แ แแ แกแแกแขแแแ แแฎแแ แก แฃแญแแ แก แแแแญแแแ แแแแ แฃแแแ แแแแแ แแแแ แแแแก (แ แแแแแ แแก แแ แแ แแก แแแแแ, แ แแ แฃแแแ แแแแแ แแแแ แแแแก แแ แชแแแแแ), แ แแแแ แช แแก แแแแฅแแแก แแแแแกแแแแ แแแแแแแแ แแแ แแแ แแแแจแแ. Linux.
แแแแแขแแแแ แขแแฅแแแแฃแ แแฆแฌแแ แแก แแแแแแ แฅแแแแแ แแแชแแแฃแ แแแฃแแแแแ.
แฒแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแ
แแฃ แแฅแแแ แฎแแ แ C++ แแ แแแ แแแแกแขแ, แแชแแ, แ แแ แแแฎแกแแแ แแแแจแ แแ แกแแแฃแ แแแแแฅแขแแแก แแฅแแ แแแแแ แแขแฃแแ แแแกแแแแ แแแแ (แแแฉแแแแแแแแก แแแแจแแแแแแแแแ).
แแฃแแชแ, แแก แแแกแแแแ แแแแ แกแฃแแแช แแ แแกแแฎแแแก แแแฎแกแแแ แแแแจแ แแ แกแแแฃแ แคแแแแแฃแ แแแกแแแแ แแแแก (RAM แแแกแแแแ แแแแ). แแกแแแ แฌแแ แแแแแแแแแ แแแกแแแแ แแแแก แแแ แขแฃแแแฃแ แแแฎแกแแแ แแแแจแ. แแ แแชแแกแแ แก แแฅแแก แกแแแชแแแแฃแ แ MMU (แแแฎแกแแแ แแแแก แแแ แแแแก แแ แแแฃแแ) แแแแฃแแ, แ แแแแแแช แแฎแแแ แแแ แแแ แแแก แแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแแก แคแแแแแฃแ แแแแแแ แแแแแแ แแแแแขแแแแจแ.
แแ แแแแแแแแก แแแแ แ แฃแแแ แแขแแกแแแ แแฅแแก, แแแแ แแ แงแแแแแแ แแแแจแแแแแแแแแแ:
- แจแแกแ แฃแแแแ (แกแฎแแแแแกแฎแแ แแแแแแแก แแแแ);
- แแ แแแ แแแแก แแแแแแชแแ, แแแฃ แแแ แชแแ แแ แแ แแแ แแแ แแแ แฌแแแแแแฎแแแก แกแฎแแ แแ แแแ แแแแก แแแฎแกแแแ แแแแแแ.
แ แ แแ แแก แแแแ แแแแ?
แแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแ แแแงแแคแแแแ แแแแ แแแแแ. แแแแแแฃแแ แชแแแแแฃแแ แแแแ แแ แแแฃแแแแแแก แแแแแ แแขแฃแ แคแแแแแฃแ แแแฎแกแแแ แแแแแ, แแแก แจแแฃแซแแแ แแแฃแแแแแก RAM-แแก แแ แแแ, แแ แจแแแซแแแแ แแแฃแแแแแก แคแแแแแฃแ แแแฌแงแแแแแแแแแ แแแแแญแแแฃแ แแแกแแแแ แแแ, แ แแแแ แแชแแ แแแแแ แแแ แแแ.
แแแแ แแแแแก แฃแแแขแแกแแแ, แ แแแแแแแแแช แแฅแแแ แแแฅแแ แกแแฅแแ, แแแฃแแแแแแก RAM-แแ แแ แแ แแก แแแชแแแแแ, แ แแช แแแจแแแแก แ แแ แแกแแแ แแแแฎแแแ แแฅแแแแก แแงแแ แแแกแแแ แแ SSD-แแ. แแแ แแแ แแแ แแแแก แแแแแแฃแแ แแแแ แแแก แคแแแแแฃแ แแแแแแแแแแก. แแฃ แแแงแแแแแแฃแ แแแแ แแแ แฌแแแแแ แฎแแแแ, แแแ แแแ แแฉแแ แแแก แแแแแก, แ แแแแแแช แชแแแแแแก แแแฎแกแแแ แแแแก แฌแแแแแแก, แแแแฎแฃแแแแก แแแแ แแก แแงแแ แ แแแกแแแแแ/SSD-แแแ RAM-แจแ แแ แจแแแแแ แแแ แซแแแแแก แแแแแแแก แจแแกแ แฃแแแแแก.
แแก แแ แแชแแกแ แแแแญแแแ แแแแแ, แ แแช แแแแก แแแจแแแแก, แ แแ แแก แแฃแชแแแแแแแ แแ แแแแแฎแแแ แแแ แแแแแ HDD/SSD-แแแ. แฉแแแฃแแแแ แแแ แแแแ แแแแแก แแแแแ 4096 แแแแขแ. แฃแแแ แแแแแ แ แแแแ แแแแแก แแแแแ 2 แแแแแแแแขแ.
แแแ แแแแแแก แแกแแชแแแชแแฃแ แ แแฃแคแแ แ (TLB)
แ แแแแกแแช แแ แแแ แแแ แฌแแแแแ แแแฎแกแแแ แแแแก แแแแ แแแ, แแ แแชแแกแแ แแ แฃแแแ แแชแแแแก, แ แแแแแ แคแแแแแฃแ แ แแแแ แแแแแ แฌแแแแแแฎแแก แแแแแชแแแแแ (แแแฃ แแฅแแก แแแ แขแฃแแแฃแ แ แแแกแแแแ แแแก แ แฃแแ).
แแแ แแแก แแฅแแก แแแแแชแแแแ แกแขแ แฃแฅแขแฃแ แ (แแแแ แแแก แชแฎแ แแแ), แ แแแแแแช แจแแแชแแแก แงแแแแ แแแคแแ แแแชแแแก แแแแแงแแแแแฃแแ แแแแ แแแแแก แจแแกแแฎแแ. แแ แแแแแชแแแแ แกแขแ แฃแฅแขแฃแ แแก แแแแแงแแแแแแ, แจแแแแซแแแแ แแแ แขแฃแแแฃแ แ แแแกแแแแ แแ แคแแแแแฃแ แแแกแแแแ แแแ แแแแคแแฅแกแแ แแ.
แแฃแแชแ, แแแแ แแแแแก แชแฎแ แแแ แกแแแแแแ แ แแฃแแ แแ แแแแแ, แแแแขแแ แฉแแแ แฃแแ แแแแ แแแ แแแแแแแแแแแแแ แแแแแชแแแแ แแแแแแ แกแขแ แฃแฅแขแฃแ แแก แงแแแแ แฏแแ แแ, แ แแชแ แแ แแชแแกแ แแแฎแกแแแ แแแแก แฌแแแแแ.
แกแแแแแแแแ แแ, แฉแแแแก แแ แแชแแกแแ แก แแฅแแก TLB, แ แแแแแแช แแแแฎแแแก แ แฃแแแแก แแแ แขแฃแแแฃแ แแ แคแแแแแฃแ แแแกแแแแ แแแแก แจแแ แแก. แแก แแแจแแแแก, แ แแ แแแฃแฎแแแแแแ แแแแกแ, แ แแ แฉแแแ แแแญแแ แแแแ แแแแ แแแก แชแฎแ แแแแก แแแแแแแแแแแ แแแ แแแแ แฌแแแแแแก แแชแแแแแแแกแแก, แงแแแแ แจแแแแแแแ แฌแแแแแ แแแแ แแแ แจแแแซแแแแ แแแแฃแจแแแแแก TLB-แจแ, แ แแช แกแแจแฃแแแแแแก แแซแแแแ แกแฌแ แแคแ แคแฃแแฅแชแแแแแ แแแ.
แแแแก แแแแ, แ แแ แแก แแแแแ แแแแแ แ แแแแ แช แคแแแแแฃแ แ แแแฌแงแแแแแแแ (แ แแช แแแก แแแ แแแ แ แแแจแ แแฉแฅแแ แแแก), แแแกแ แขแแแแแแแ แจแแแฆแฃแแฃแแแ. แแกแ แ แแ, แแฃ แแกแฃแ แ แแแขแ แแแแ แแแก แฌแแแแแ, TLB แแแ แจแแซแแแแก แงแแแแ แแแแแแแแก แ แฃแแแแแก แจแแแแฎแแแก, แ แแช แแแแแแฌแแแแก แแฅแแแแ แแ แแแ แแแแก แแแชแแแแแแ แแแ แแฃแจแแแแแก.
แฐแแแแแแฏแ แกแแแแจแแแแแจแ แแแแแก
แแแจ, แ แ แจแแแแแซแแแ แแแแแแแแแ TLB-แก แแแแแญแแ แแแแแก แแแแแแแ แแกแแชแแแแแแแ? (แแแแ แแฃแแแแ, แ แแ แแ แแแ แแแแก แฏแแ แแแแแ แแแแแ แ แแแแแแแแแก แแแฎแกแแแ แแแ แกแญแแ แแแแ).
แกแฌแแ แแ แแฅ แจแแแแแแก Hugepages. 4096 แแแแขแแก แแแชแแแแ, แ แแแแแแช แแแแแฎแแแก แแฎแแแแ แแ แ TLB แฉแแแแฌแแ แก, แแ แแ TLB แฉแแแแฌแแ แ แแฎแแ แจแแแซแแแแ แแแฃแแแแแแแแก แฃแแแ แแแแแ 2 แแแแแแแแขแแ. แแแแฃแจแแแ, TLB-แก แแฅแแก 512 แฉแแแแฌแแ แ, แแฅ Hugepages-แแก แแแ แแจแ แจแแแแแซแแแ แแแแแแแฎแแแแ:
4096 bโ
512=2 MBแแแจแแ แ แแแแ แจแแแแแซแแแ แจแแแแแแ แแ แแแ:
2 MBโ
512=1 GBแแแแขแแแแ Hugepages แแแกแแแชแแ แแ. แแแ แจแแฃแซแแแแ แแแแฃแแฏแแแแกแแ แแ แแแฃแฅแขแแฃแแแแ แแแแ แซแแแแกแฎแแแแแก แแแ แแจแ. แแแแ แแ แแฅ แแ แแก แแแแจแแแแแแแแแ แฃแแฃแฉแแแแแแแแ.
แฃแแแ แแแแแ แ แแแแ แแแแแก แแแงแแแแแแ
แแแ แแแ แแแขแแแแขแฃแ แแ แแแแแขแ แแแแแก แ แแแแแแแ แฎแจแแ แแ แแแแแแงแแแแแ แแแฎแกแแแ แแแแก แแแแแแฃแแ แแแแ แแ. แแฃ แแ แแ แแก แกแแแแแ แแกแ แคแแแแแฃแ แ แแแฎแกแแแ แแแ (RAM), แแแ แแแ แแแแแแขแแแก แแแแแแแแ แแแแจแแแแแแแแ (แแแแแแแแ แฎแจแแ แแ แแแแแงแแแแแฃแ) แแแแ แแแแก แแงแแ แแแกแแแ, แ แแแ แแแแแแแแกแฃแคแแแก RAM แฃแคแ แ แแแแจแแแแแแแแแ แแแแ แแแแแกแแแแก.
แแ แแแชแแแจแ, แแแแแ แแฎแแแ Hugepages-แก. แแฃแแชแ, แแแ แแแก แจแแฃแซแแแ แจแแชแแแแแก แแฎแแแแ แแแแแ แแแแ แแแแ แแ แแ แ แชแแแแแฃแแ แแแแขแแแ.
แแแฅแแแ, แแแแฅแแก แแกแแแ แแ แแแ แแแ:
char* mymemory = malloc(2*1024*1024); // ะะพะทัะผะตะผ ััะพ ะทะฐ ะพะดะฝั Hugepage!
// ะะฐะฟะพะปะฝะธะผ mymemory ะบะฐะบะธะผะธ-ะปะธะฑะพ ะดะฐะฝะฝัะผะธ
// ะกะดะตะปะฐะตะผ ะผะฝะพะณะพ ะดััะณะธั
ะฒะตัะตะน,
// ะบะพัะพััะต ะฟัะธะฒะตะดัั ะบ ะฟะพะดะผะตะฝะต ัััะฐะฝะธัั mymemory
// ...
// ะะฐะฟัะพัะธะผ ะดะพัััะฟ ัะพะปัะบะพ ะบ ะฟะตัะฒะพะผั ะฑะฐะนัั
putchar(mymemory[0]); แแ แจแแแแฎแแแแแจแ, แแแ แแแก แแแกแญแแ แแแแ แจแแชแแแแแก (แฌแแแแแแฎแแก) 2 แแแแแแแแขแ แแแคแแ แแแชแแ แแงแแ แ แแแกแแแแแ/SSD แแฎแแแแ แแแแกแแแแก, แ แแ แแฅแแแ แฌแแแแแแฎแแ แแ แแ แแแแขแ. แ แแช แจแแแฎแแแ แฉแแแฃแแแแ แแ แแแแ แแแแก, แแงแแ แ แแแกแแแแแ/SSD-แแแ แแฎแแแแ 4096 แแแแขแแก แฌแแแแแฎแแแ แกแแญแแ แ.
แแแแขแแ, แแฃ แฃแแแ แแแแแ แ แแแแ แแ แแแ แซแแแฃแแแ, แแแกแ แฌแแแแแฎแแ แฃแคแ แ แกแฌแ แแคแแ, แแฃ แแฅแแแ แแญแแ แแแแแ แฌแแแแแ แแแแ แแแแ แแแ. แแก แแแจแแแแก, แ แแ แแฃ แแฅแแแ แชแแแแแแ แจแแแแฎแแแแแ แจแแฎแแแแแ แแแฎแกแแแ แแแแก แกแฎแแแแแกแฎแแ แแแฌแแแแ แแ แฃแแ แแแแ แแแแฎแฃแแแแ แ แแแแแแแแ แแแแแแแแขแก, แฃแแแ แแแแแแงแแแแ แฉแแแฃแแแแ แแแ แแแแ แแแแ แแ แแ แแแแ แแแฃแแแ แกแฎแแแแ.
แแแแ แแก แแฎแ แแ, แแฃ แแแฎแกแแแ แแแแก แแแ แแแฌแแแแ แแแแแแแแแแ แฃแแแ แฌแแแแแ แแญแแ แแแแแ, แฃแแแ แแแแแ แ แแแแ แแแแ แแแแฃแแฏแแแแกแแแก แแฅแแแแก แจแแกแ แฃแแแแแก. แแฃแแชแ, แแฅแแแ แแแแแแ แฃแแแ แจแแแแแฌแแแ แแแ (แแ แ แแแกแขแ แแฅแขแฃแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแ) แแ แแแฎแแ แ แ แแฃแจแแแแก แฃแคแ แ แกแฌแ แแคแแ.
แแแแแฌแแแแแ แแแฎแกแแแ แแแแจแ
แแฃ แแฅแแแ แแแฌแแ แ C, แแฅแแแ แแชแแ, แ แแ แจแแแแซแแแแ แแแแแฎแแแแ แแแแแแแแฃแ แแ แแชแแ แ (แแ แแแแฅแแแก แแแแแแแแฃแ แแ แแแแ) แแแฎแกแแแ แแแแก แแ แแแแแแ แแแแแงแแแแแแ malloc(). แแแฅแแแ, แแญแแ แแแแแ 30 แแแแขแ แแแฎแกแแแ แแแ:
char* mymemory = malloc(30);แแ แแแ แแแแกแขแก แจแแแซแแแแ แแแแฉแแแแแก, แ แแ แแฅแแแ โแแแฎแแแโ 30 แแแแข แแแฎแกแแแ แแแแก แแแแ แแชแแฃแแ แกแแกแขแแแแแแ แแ แแแ แฃแแแแ แแแฉแแแแแแแแก แแแแแแ แ แแแ แขแฃแแแฃแ แแแฎแกแแแ แแแแจแ. แฒแแแ แแ แกแแแแแแแแแแจแ malloc () แฃแแ แแแแ C แคแฃแแฅแชแแแ, แ แแแแแแช แแซแแฎแแแก แคแฃแแฅแชแแแก แจแแแแแแแ แแแแ แแชแแฃแแ แกแแกแขแแแแแแ แแแฎแกแแแ แแแแก แแแแฎแแแแแก แแ แแแแแแแแกแฃแคแแแแแก แแแแแแ.
แแฃแแชแ, แงแแแแแ แแแแแฌแแแแแแกแแแแก แแแขแ แแ แแแขแ แแแฎแกแแแ แแแแก แแแแฎแแแแ แแ แแแคแแฅแขแฃแ แแ; แกแแแแ แแฃแแแ, แแแฎแกแแแ แแแแก แแแแแแ แแ แกแแแแแแขแ แฃแแแ แแแแแแแกแฃแคแแแแฃแแแ (free())แแ แฉแแแ แจแแแแแซแแแ แแแกแ แฎแแแแฎแแ แแแแแงแแแแแ. malloc() แแฎแแ แชแแแแแแก แกแแแแแแ แ แแฃแ แแแแแ แแแแแแก แแแแแแแแกแฃแคแแแแฃแแ แแแฎแกแแแ แแแแก แฎแแแแฎแแ แแแแแงแแแแแแกแแแแแก.
แแแแแแ แแฃแแแ, แจแแแแแแก แงแแแแแคแแ แ แจแแฃแแฉแแแแแแ แฎแแแแ, แ แแขแแ แฃแแแ แจแแแแฌแฃแฎแ? แแแแ แแ แ แแแแแ แแแแแฌแแแแ free() แแ แแแจแแแแก แแแแก .
แแ แกแแแแแก แแแฎแกแแแ แแแแก แคแ แแแแแแขแแชแแ. แฃแแแแฃแ แแก แจแแแแฎแแแแแจแ, แแ แแก แแ แแแแก แกแแแแแแขแแแ, แกแแแแช แแแแแแงแแแแแ แแฎแแแแ แ แแแแแแแแ แแแแขแ, แฎแแแ แแแ แจแแ แแก แงแแแแแคแแ แ แแแแแแแกแฃแคแแแแฃแแแ (free()).
แแแฎแแแ แแแแแแแแแกแฌแแแแ, แ แแ แแแฎแกแแแ แแแแก แคแ แแแแแแขแแชแแ แฌแแ แแแฃแแแแแแแ แ แแฃแแ แแแแแ แแ แแ แแแ แแแแก แฃแแแแจแแแแแ แชแแแแแแแแแแแช แแ แจแแแซแแแแ แแแแจแแแแแแแแแ แแแแแแแ แแฅแแแแแก. แฃแแแขแแก แจแแแแฎแแแแแจแ, แแ แแแ แแแแแ แแ แแแแแแฌแแแแก แแแฎแกแแแ แแแแก แแแแจแแแแแแแแ แคแ แแแแแแขแแชแแแก, แแแแ แแ แฃแแแ แแชแแแแ, แ แแ แแฃ แแ แแแแก แแแแแแ แ แฃแแแแจแ แคแ แแแแแแขแแชแแแก แแ แแแแแแแ, แฃแแแ แแแแแ แแ แแแแ แแแแแ แจแแแซแแแแ แแแแฃแแ แแกแแก แกแแขแฃแแชแแ.
แฃแแแ แแแแแ แ แแแแ แแแแแก แจแแ แฉแแแแแ แแแแแงแแแแแ
แแ แกแขแแขแแแก แฌแแแแแฎแแแก แจแแแแแ, แแฅแแแ แแแแแแแแแ, แแฅแแแแ แแ แแแ แแแแก แ แแแแ แแแฌแแแก แจแแฃแซแแแ แแกแแ แแแแแแก แฃแแแ แแแแแ แ แแแแ แแแแแก แแแแแงแแแแแแ แแ แ แแแแแ แแ แ. แแกแ แ แแ, แฃแแแ แแแแแ แ แแแแ แแแแ แกแแแ แแแ แฃแแแ แแงแแก แฉแแ แแฃแแ?
แกแแแแแแแแ แแ แจแแแแซแแแแ แแแแแแงแแแแ madvise()แฃแแแ แแแแแ แ แแแแฏแแแแแก แฉแแ แแแ แแแฎแกแแแ แแแแก แแฎแแแแ แแ แฃแแแแแแกแแแแก, แกแแแแช แแก แกแแกแแ แแแแแ แแฅแแแแ.
แแแ แแแ แ แแแจแ, แจแแแแแฌแแแ, แ แแ แฃแแแ แแแแแ แ แแแแ แแแแ แแฃแจแแแแก madvise() แ แแแแแจแ แแแแแงแแแแแแ แกแขแแขแแแก แแแกแแฌแงแแกแจแ.
แจแแแแแ แแแแแแงแแแแ madvise()แ แแ แแฃแกแขแแ แฃแแฎแ แแก แแแ แแแก แกแแ แแแแแแงแแแแก แฃแแแ แแแแแ แ แแแแ แแแแ.
#include <sys/mman.h>
// ะะปะปะพัะธััะนัะต ะฑะพะปััะพะต ะบะพะปะธัะตััะฒะพ ะฟะฐะผััะธ, ะบะพัะพััั ะฑัะดะตัะต ะธัะฟะพะปัะทะพะฒะฐัั
size_t size = 256*1024*1024;
char* mymemory = malloc(size);
// ะัะพััะพ ะฒะบะปััะธัะต hugepagesโฆ
madvise(mymemory, size, MADV_HUGEPAGE);
// โฆ ะธ ะทะฐะดะฐะนัะต ัะปะตะดัััะตะต
madvise(mymemory, size, MADV_HUGEPAGE | MADV_SEQUENTIAL)แแแแแแแแแกแฌแแแแ, แ แแ แแก แแแแแแ แฃแแ แแแแ แ แฉแแแแ แแแ แแแแกแแแแก แแแฎแกแแแ แแแแก แแแ แแแแก แจแแกแแฎแแ. แแก แแ แแแจแแแแก, แ แแ แแแ แแแ แแแขแแแแขแฃแ แแ แแแแแแงแแแแแก แฃแแแ แแแแแ แแแแ แแแแก แแแชแแแฃแแ แแแฎแกแแแ แแแแกแแแแก.
แแฎแแแแ แแแแฃแแแแขแแชแแ แ แแ แแแแแแ แแแขแ แแแฎแกแแแ แแแแก แแแ แแแแก แจแแกแแฎแแ แแ madvise(), แแ แแแแแก แแฅแแก แฌแแ แแแฃแแแแแแแ แชแแชแแแ แกแแกแฌแแแแ แแ แฃแแ. แแกแ แ แแ, แแฃ แแฅแแแ แแแแ แแแ แแแแจแ แแแแแแแแแ แแแ แแ แแแฎแแแ, แแแแแแแแแ แฌแแกแแแแแฎแแ แแ แขแแกแขแแ แแแแกแแแแก แ แแแแแแแแ แแแแ แแก แแแแแแแแแแแจแ, แกแแแแ แ แแแแ แแแแแแแ แจแแแแแก แแแแแแแแแแ.
แ แ แฌแแแแแแแฎแ?
แแแฅแแ แจแแแแแฎแแ? แแแฌแแ แแ แแแแแแขแแ แแแจแ!
แฌแงแแ แ: www.habr.com
