แแฃแ แกแแก แกแขแฃแแแแขแแแแกแแแแก แแแแแแแแแฃแแ แกแขแแขแแแก แแแ แแแแแ
แแแ แ แแ แแแกแแฃแแ แ แแแแแ, แแฃ แ แแแแ แฃแแแ แแแแแกแชแแแ แแ แฉแแ แแ Hugepages Linux-แแ.
แแก แกแขแแขแแ แกแแกแแ แแแแแ แแฅแแแแ แแฎแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ แแฅแแแ แแแแแแแแแ แแแฅแแ แแแแแแ, แ แแ แแแแแแงแแแแ Hugepages. แแ แจแแแฎแแแ แฃแแแ แแ แแแแแแแแก, แ แแแแแแแช แแแขแงแฃแแแฃแแแ แแ แแแ แแ แแแ แกแแแฅแขแแแแ, แ แแ Hugepages แฏแแแแกแแฃแ แแ แแแแฃแแฏแแแแกแแแก แแ แแแฃแฅแขแแฃแแแแแก. แแฃแแชแ, แฃแแแ แแแแแ แ แแแแฏแแแแ แแแแแแแฅแกแฃแ แ แแแแแ แแ แแ แแกแฌแแ แแ แแแแแงแแแแแแก แจแแแแฎแแแแแจแ แจแแแซแแแแ แแแฅแแแแแแแก แจแแกแ แฃแแแแ.
แแแฌแแแ 1: แแแแก แจแแแแฌแแแแ, แ แแ แฃแแแ แแแแแ แ แแแแ แแแแ แฉแแ แแฃแแแ Linux-แแ (แแ แแแแแแแ แแฅ )
แแ แแแแแแ:
แแฅแแแ แฃแแแ แจแแแแแฌแแแ แฉแแ แแฃแแแ แแฃ แแ แ HugePages แแฅแแแแก แกแแกแขแแแแจแ.
แแแแแกแแแแแ:
แแก แกแแแแแแ แแแ แขแแแแ:
cat /sys/kernel/mm/transparent_hugepage/enabled
แแฅแแแ แแแแฆแแแ แแกแแ แ แแแแก:
always [madvise] never
แแฅแแแ แแแฎแแแ แฎแแแแแกแแฌแแแแแ แแแ แแแแขแแแแก แฉแแแแแแแแแแก (แงแแแแแแแแก, แจแแจแแแแ, แแ แแกแแ แแก), แฎแแแ แแแแแแแ แแฅแขแแฃแ แ แแแ แแแแขแ แฉแแกแแฃแแ แแฅแแแแ แคแ แฉแฎแแแแแจแ (แแแแฃแแแกแฎแแแแแ แจแแจแแแแ).
แจแแจแแแแ แแแจแแแแก แ แแ transparent hugepages
แฉแแ แแฃแแแ แแฎแแแแ แแแฎแกแแแ แแแแก แแแแแแแกแแแแก, แ แแแแแแแช แชแแแกแแฎแแ แแแฎแแแแ แฃแแแ แแแแแ แ แแแแ แแแแแก แแแแแงแแแแแแก
แงแแแแแแแแก แแแจแแแแก แ แแ transparent hugepages
แงแแแแแแแแก แฉแแ แแฃแแแ แงแแแแ แแ แแชแแกแแกแแแแก. แแก แฉแแแฃแแแแ แแ แแฃแแฏแแแแกแแแก แจแแกแ แฃแแแแแก, แแแแ แแ แแฃ แแฅแแแ แแแฅแแ แแแแแงแแแแแแก แจแแแแฎแแแแ, แ แแแแกแแช แแแแ แ แแ แแชแแกแ แแแแฎแแแ แก แแชแแ แ แ แแแแแแแแแ แแแฎแกแแแ แแแแก, แแแจแแ แแแฎแกแแแ แแแแก แแแแแแแ แแแขแแแ แแแ แจแแแซแแแแ แแแแแแ แแ แแแแแแ แแแก.
แแ แแกแแแแก แแแจแแแแก แ แแ transparent hugepages
แแ แแฅแแแแ แฉแแ แแฃแแ แแแจแแแแช แแ, แ แแแแกแแช แแแแฎแแแแแแ แแฅแแแแ madvise-แแก แแแแแงแแแแแแ. แแแขแแก แแแกแแแแแแ, แแแฃแแแแจแแ แแแ
แ แแแแ แจแแแชแแแแแ แแแแฃแแแกแฎแแแแ แแแแจแแแแแแแ
แแแ แแแแขแ 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()
, แแ แแแแแก แแฅแแก แฌแแ แแแฃแแแแแแแ แชแแชแแแ แกแแกแฌแแแแ แแ แฃแแ. แแกแ แ แแ, แแฃ แแฅแแแ แแแแ แแแ แแแแจแ แแแแแแแแแ แแแ แแ แแแฎแแแ, แแแแแแแแแ แฌแแกแแแแแฎแแ แแ แขแแกแขแแ แแแแกแแแแก แ แแแแแแแแ แแแแ แแก แแแแแแแแแแแจแ, แกแแแแ แ แแแแ แแแแแแแ แจแแแแแก แแแแแแแแแแ.
แ แ แฌแแแแแแแฎแ?
IBM OpenStack แกแขแแขแแ แฃแแแ แแแแแ แแแแ แแแแแ แแแแญแแแ แแแแ แฃแแแ แแแแแ แ แแแแ แแแแ แแ แแแแแญแแแ แแแแ แฃแแแ แแแแแ แ แแแแ แแแแแก แฌแแแแแฆแแแแ แแแแแแแแแแก แกแขแแขแแ TLB-แแก แจแแกแแฎแแ Linux-แแก แแแ แแแแก แแแแฃแแแแขแแชแแ แแแแญแแแ แแแแ แฃแแแ แแแแแ แแแแ แแแแแ StackOverflow: แฃแแแ แแแแแ แ แแแแ แแแแ แแแแ แแแแแแ แแแฎแกแแแ แแแแก แคแ แแแแแแขแแชแแแกแแแ Microsoft-แแก แกแขแแขแแ แแแ แขแฃแแแฃแ แ แแแฎแกแแแ แแแแก แแแ แแแแก แจแแกแแฎแแ
แแแฅแแ แจแแแแแฎแแ? แแแฌแแ แแ แแแแแแขแแ แแแจแ!
แฌแงแแ แ: www.habr.com