ืึทื“ื•ื•ืึทื ื˜ืึทื’ืขืก ืื•ืŸ ื“ื™ืกืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืคื•ืŸ HugePages

ืึทื“ื•ื•ืึทื ื˜ืึทื’ืขืก ืื•ืŸ ื“ื™ืกืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื– ืคื•ืŸ HugePages

ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืฆื•ื’ืขื’ืจื™ื™ื˜ ืคึฟืึทืจ ืงื•ืจืก ืกื˜ื•ื“ืขื ื˜ืŸ "ืœื™ื ื•ืงืก ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ".

ื‘ื™ื– ืึทื”ืขืจ, ืื™ืš ื’ืขืจืขื“ื˜ ื•ื•ืขื’ืŸ ื•ื•ื™ ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ืื•ืŸ ื’ืขื‘ืŸ Hugepages ืื•ื™ืฃ ืœื™ื ื•ืงืก.
ื“ืขืจ ืึทืจื˜ื™ืงืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื ื•ืฆื™ืง ื‘ืœื•ื™ื– ืื•ื™ื‘ ืื™ืจ ื˜ืึทืงืข ื”ืึธื‘ืŸ ืึท ืคึผืœืึทืฅ ืฆื• ื ื•ืฆืŸ Hugepages. ืื™ืš ื•ื•ืข ื‘ืื’ืขื’ื ื˜ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืžืขื ื˜ืฉืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ืคื•ืœื“ ื“ื•ืจืš ื“ื™ ื•ื™ืกืงื•ืง ืึทื– Hugepages ื•ื•ืขื˜ ืžืึทื“ื–ืฉื™ืงืึทืœื™ ืคึฟืึทืจื‘ืขืกืขืจืŸ ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ื™ื˜ื™. ืึธื‘ืขืจ, ื”ื™ื’ื”ืขืคึผืึทื’ื™ื ื’ ืื™ื– ืึท ืงืึธืžืคึผืœืขืงืก ื˜ืขืžืข ืื•ืŸ ืงืขื ืขืŸ ื“ื™ื’ืจื™ื™ื“ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืื•ื™ื‘ ื’ืขื•ื•ื™ื™ื ื˜ ืคืึทืœืฉ.

ื˜ื™ื™ืœ 1: ื•ื•ืขืจืึทืคื™ื™ื™ื ื’ ืึทื– ืจื™ื–ื™ืง ื‘ืœืขื˜ืขืจ ื–ืขื ืขืŸ ืขื ื™ื™ื‘ืึทืœื“ ืื•ื™ืฃ ืœื™ื ื•ืงืก (ืึธืจื™ื’ื™ื ืขืœ ื“ืึธ)

ืคึผืจืึธื‘ืœืขื:
ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืื•ื™ื‘ HugePages ืื™ื– ืขื ื™ื™ื‘ืึทืœื“ ืื•ื™ืฃ ื“ื™ื™ืŸ ืกื™ืกื˜ืขื.

ืœื™ื™ื–ื•ื ื’:
ืขืก ืื™ื– ื’ืึทื ืฅ ืคึผืฉื•ื˜:

cat /sys/kernel/mm/transparent_hugepage/enabled

ืื™ืจ ื•ื•ืขื˜ ื‘ืึทืงื•ืžืขืŸ ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก:

always [madvise] never

ืื™ืจ ื•ื•ืขื˜ ื–ืขืŸ ืึท ืจืฉื™ืžื” ืคื•ืŸ ืคืึทืจืึทื ืขืŸ ืึธืคึผืฆื™ืขืก (ืฉื˜ืขื ื“ื™ืง, ืžืึทื“ื•ื•ื™ืกืข, ืงื™ื™ื ืžืึธืœ), ืื•ืŸ ื“ื™ ื“ืขืจื•ื•ื™ื™ึทืœ ืึทืงื˜ื™ื•ื• ืึธืคึผืฆื™ืข ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขื ืงืœืึธื•ื–ื“ ืื™ืŸ ืงืœืึทืžืขืจืŸ (ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜ madvise).

madvise ืžื™ื˜ืœ ืึทื– transparent hugepages ืขื ื™ื™ื‘ืึทืœื“ ื‘ืœื•ื™ื– ืคึฟืึทืจ ื–ื™ืงืึธืจืŸ ื’ืขื‘ื™ื˜ืŸ ื•ื•ืึธืก ื‘ืคื™ืจื•ืฉ ื‘ืขื˜ืŸ ืจื™ื–ื™ืง ื‘ืœืขื˜ืขืจ ื ื™ืฆืŸ madvise (2).

ืฉื˜ืขื ื“ื™ืง ืžื™ื˜ืœ ืึทื– transparent hugepages ืฉื˜ืขื ื“ื™ืง ืขื ื™ื™ื‘ืึทืœื“ ืคึฟืึทืจ ืึทืœืข ืคึผืจืึทืกืขืกืึทื–. ื“ืึธืก ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื™ืžืคึผืจื•ื•ื•ื– ืคืึธืจืฉื˜ืขืœื•ื ื’, ืึธื‘ืขืจ ืื•ื™ื‘ ืื™ืจ ื”ืึธื‘ืŸ ืึท ื ื•ืฆืŸ ืคืึทืœ ื•ื•ื• ืคื™ืœืข ืคึผืจืึทืกืขืกืึทื– ืงืึทื ืกื•ืžื™ื ื’ ืึท ืงืœื™ื™ืŸ ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื–ื™ืงืึธืจืŸ, ื“ื™ ืงื•ื™ืœืขืœื“ื™ืง ื–ื›ึผืจื•ืŸ ืžืึทืกืข ืงืขื ืขืŸ ืคืึทืจื’ืจืขืกืขืจืŸ ื“ืจืึทืžืึทื˜ื™ืงืœื™.

ืงื™ื™ื ืžืึธืœ ืžื™ื˜ืœ ืึทื– transparent hugepages ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืืคื™ืœื• ื•ื•ืขืŸ ื’ืขื‘ืขื˜ืŸ ื ื™ืฆืŸ madvise. ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืžืขืจ, ืงืึธื ื˜ืึทืงื˜ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืœื™ื ื•ืงืก ืงืขืจื ืึทืœื–.

ื•ื•ื™ ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ืขืจื˜

Option 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

Option 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-ื‘ื™ืกืœ ืงืก 86 ืกื™ืกื˜ืขืžืขืŸ ื•ื•ืึธืก ืœื•ื™ืคืŸ ืœื™ื ื•ืงืก, ืื•ืŸ ืึทื– ืื™ืš ื ืึธืจ ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ื“ื™ ืกื™ืกื˜ืขื ืฉื˜ื™ืฆื˜ ื˜ืจืึทื ืกืคึผืขืจืึทื ื˜ ื”ื•ืขืคึผืึทื’ืขืก (ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ื ื™ืฉื˜ ืึท ื›ื™ืกืึธืจืŸ ืึทื– ื”ื•ืขืคึผืึทื’ืขืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ืึธื•ื•ื•ืขืจืจื™ื˜ืึทืŸ), ื•ื•ื™ ืื™ื– ื“ืขืจ ืคืึทืœ ืื™ืŸ ื›ึผืžืขื˜ ืงื™ื™ืŸ ืžืึธื“ืขืจืŸ ืœื™ื ื•ืงืก ืกื‘ื™ื‘ื”.

ืื™ืš ื•ื•ืขืœ ืฆื•ื˜ืฉืขืคึผืขืŸ ืžืขืจ ื˜ืขื›ื ื™ืฉ ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืื™ืŸ ื“ื™ ืœื™ื ืงืก ืื•ื ื˜ืŸ.

ื•ื•ื™ืจื˜ื•ืึทืœ ื–ื›ึผืจื•ืŸ

ืื•ื™ื‘ ืื™ืจ ื–ืขื ื˜ ืึท C ++ ืคึผืจืึธื’ืจืึทืžื™ืกื˜, ืื™ืจ ื•ื•ื™ืกืŸ ืึทื– ืึทื‘ื“ื–ืฉืขืงืฅ ืื™ืŸ ื–ื›ึผืจื•ืŸ ื”ืึธื‘ืŸ ืกืคึผืขืฆื™ืคื™ืฉ ืึทื“ืจืขืกืขืก (ื˜ื™ื™ึทื˜ืœ ื•ื•ืึทืœื•ืขืก).

ืึธื‘ืขืจ, ื“ื™ ืึทื“ืจืขืกืขืก ื˜ืึธืŸ ื ื™ื˜ ื“ืึทื•ื•ืงืข ืคืึทืจื˜ืจืึทื›ื˜ื  ื–ื™ืš ื’ืฉืžื™ื•ืช ืึทื“ืจืขืกืขืก ืื™ืŸ ื–ื›ึผืจื•ืŸ (RAM ืึทื“ืจืขืกืขืก). ื–ื™ื™ ืคืึธืจืฉื˜ืขืœืŸ ืึทื“ืจืขืกืขืก ืื™ืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ื–ื›ึผืจื•ืŸ. ื“ืขืจ ืคึผืจืึทืกืขืกืขืจ ื”ืื˜ ืึท ืกืคึผืขืฆื™ืขืœ MMU (ื–ื™ืงืึธืจืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืึทืคึผืึทืจืึทื˜) ืžืึธื“ื•ืœืข ื•ื•ืึธืก ื”ืขืœืคึผืก ื“ื™ ืงืขืจืŸ ืžืึทืคึผืข ื•ื•ื™ืจื˜ื•ืึทืœ ื–ื›ึผืจื•ืŸ ืฆื• ืึท ื’ืฉืžื™ื•ืช ืึธืจื˜.

ื“ืขื ืฆื•ื’ืึทื ื’ ื”ืื˜ ืคื™ืœืข ืึทื“ื•ื•ืึทื ื˜ื™ื“ื–ืฉื™ื–, ืึธื‘ืขืจ ื“ื™ ืžืขืจืกื˜ ื•ื•ื™ื›ื˜ื™ืง ื–ืขื ืขืŸ:

  • ืคืึธืจืฉื˜ืขืœื•ื ื’ (ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืŸ ืกื™ื‘ื•ืช);
  • ืคึผืจืึธื’ืจืึทื ืืคื’ืขื–ื•ื ื“ืขืจื˜ืงื™ื™ื˜, ื“ืึธืก ื”ื™ื™ืกื˜, ืงื™ื™ืŸ ืคึผืจืึธื’ืจืึทื ืงืขืŸ ื ื™ืฉื˜ ืœื™ื™ืขื ืขืŸ ืคึฟื•ืŸ ื“ืขืจ ื–ื›ึผืจื•ืŸ ืคื•ืŸ ืืŸ ืื ื“ืขืจ ืคึผืจืึธื’ืจืึทื.

ื•ื•ืึธืก ื–ืขื ืขืŸ ื‘ืœืขื˜ืขืจ?

ื•ื•ื™ืจื˜ื•ืขืœ ื–ื›ึผืจื•ืŸ ืื™ื– ืฆืขื˜ื™ื™ืœื˜ ืื™ืŸ ื‘ืœืขื˜ืขืจ. ื™ืขื“ืขืจ ื™ื—ื™ื“ ื‘ืœืึทื˜ ื•ื•ื™ื™ื–ื˜ ืฆื• ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืคื™ื–ื™ืฉ ื–ื™ืงืึธืจืŸ, ืขืก ืงืขืŸ ืคื•ื ื˜ ืฆื• ืึท ื’ืขื’ื ื˜ ืื™ืŸ ื‘ืึทืจืึทืŸ, ืึธื“ืขืจ ืขืก ืงืขืŸ ืคื•ื ื˜ ืฆื• ืึทืŸ ืึทื“ืจืขืก ืึทืกื™ื™ื ื“ ืฆื• ืึท ื’ืฉืžื™ื•ืช ืžื™ื˜ืœ, ืึทื–ืึท ื•ื•ื™ ืึท ื•ื•ื™ื“ืขื ืงืึทืจื˜ืœ.

ืจื•ื‘ึฟ ืคื•ืŸ ื“ื™ ื‘ืœืขื˜ืขืจ ื•ื•ืึธืก ืื™ืจ ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ ื•ื•ื™ื™ื–ืŸ ืฆื• ื‘ืึทืจืึทืŸ ืึธื“ืขืจ ื–ืขื ืขืŸ ืกื•ื•ืึทืคึผื˜, ื˜ื™ื™ึทื˜ืฉ ื–ื™ื™ ื–ืขื ืขืŸ ืกื˜ืึธืจื“ ืื•ื™ืฃ ื“ื™ื™ืŸ ืฉื•ื•ืขืจ ืคืึธืจ ืึธื“ืขืจ ืกืกื“. ื“ืขืจ ืงืขืจืŸ ืžืึทื ื™ื“ื–ืฉื™ื– ื“ื™ ื’ืฉืžื™ื•ืช ืื•ื™ืกืœื™ื™ื’ ืคื•ืŸ ื™ืขื“ืขืจ ื‘ืœืึทื˜. ืื•ื™ื‘ ืึท ืกืคึผืึธืึธืคืขื“ ื‘ืœืึทื˜ ืื™ื– ืึทืงืกืขืกื˜, ื“ืขืจ ืงืขืจืŸ ืกื˜ืึทืคึผืก ื“ืขื ืคืึธื“ืขื ื•ื•ืึธืก ืื™ื– ื˜ืจื™ื™ื ื’ ืฆื• ืึทืงืกืขืก ื“ื™ ื–ื›ึผืจื•ืŸ, ืœื™ื™ืขื ืขืŸ ื“ืขื ื‘ืœืึทื˜ ืคื•ืŸ ื“ื™ ืฉื•ื•ืขืจ ืคืึธืจ / ืกืกื“ ืื™ืŸ ื‘ืึทืจืึทืŸ, ืื•ืŸ ื“ืึทืŸ ืคืึธืจื–ืขืฆืŸ ื“ืขื ืคืึธื“ืขื.

ื“ืขืจ ืคึผืจืึธืฆืขืก ืื™ื– ื˜ืจืึทื ืกืคึผืขืจืึทื ื˜ ืกื˜ืจื™ืžื™ื ื’, ื˜ื™ื™ึทื˜ืฉ ืขืก ืื™ื– ื ื™ืฉื˜ ื“ืึทื•ื•ืงืข ืœื™ื™ืขื ืขืŸ ื’ืœื™ื™ึทืš ืคึฟื•ืŸ ื“ื™ ื”ื“ื“ / ืกืกื“. ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ื ืึธืจืžืึทืœ ื‘ืœืขื˜ืขืจ ืื™ื– 4096 ื‘ื™ื˜ืขืก. ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ื™ื•ื“ื–ืฉืขืคึผืึทื’ืขืก ืื™ื– 2 ืžืขื’ืื‘ื™ื™ื˜.

ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืึทืกืึธื•ืกื™ืึทื˜ื™ื•ื• ื‘ืึทืคืขืจ (TLB)

ื•ื•ืขืŸ ืึท ืคึผืจืึธื’ืจืึทื ืึทืงืกืขืก ืึท ื‘ืœืึทื˜ ืคื•ืŸ ื–ื›ึผืจื•ืŸ, ื“ื™ ืงืคึผื• ืžื•ื–ืŸ ื•ื•ื™ืกืŸ ืคื•ืŸ ื•ื•ืึธืก ื’ืฉืžื™ื•ืช ื‘ืœืึทื˜ ืฆื• ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ (ื“ืึธืก ืื™ื–, ื”ืึธื‘ืŸ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืึทื“ืจืขืก ืžืึทืคึผืข).

ื“ืขืจ ืงืขืจืŸ ื”ืื˜ ืึท ื“ืึทื˜ืŸ ืกื˜ืจื•ืงื˜ื•ืจ (ื‘ืœืึทื˜ ื˜ื™ืฉ) ื•ื•ืึธืก ื›ึผื•ืœืœ ืึทืœืข ื“ื™ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ื‘ืœืขื˜ืขืจ ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜. ื ื™ืฆืŸ ื“ืขื ื“ืึทื˜ืŸ ืกื˜ืจื•ืงื˜ื•ืจ, ืื™ืจ ืงืขื ืขืŸ ืžืึทืคึผืข ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืึทื“ืจืขืก ืฆื• ืึท ื’ืฉืžื™ื•ืช ืึทื“ืจืขืก.

ืึธื‘ืขืจ, ื“ื™ ื‘ืœืึทื˜ ื˜ื™ืฉ ืื™ื– ื’ืึทื ืฅ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ืื•ืŸ ืคึผืึทืžืขืœืขืš, ืึทื–ื•ื™ ืžื™ืจ ืงืขื ืขืŸ ืคืฉื•ื˜ ื ื™ืฉื˜ ืึทื ืึทืœื™ื™ื– ื“ื™ ื’ืื ืฆืข ื“ืึทื˜ืŸ ืกื˜ืจื•ืงื˜ื•ืจ ื™ืขื“ืขืจ ืžืึธืœ ื•ื•ืขืŸ ืึท ืคึผืจืึธืฆืขืก ืึทืงืกืขืก ื–ื™ืงืึธืจืŸ.

ืฆื•ืž ื’ืœื™ืง, ืื•ื ื“ื–ืขืจ ืคึผืจืึทืกืขืกืขืจ ื”ืื˜ ืึท TLB ื•ื•ืึธืก ืงืึทืฉ ื“ื™ ืžืึทืคึผื™ื ื’ ืฆื•ื•ื™ืฉืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ืื•ืŸ ื’ืฉืžื™ื•ืช ืึทื“ืจืขืกืขืก. ื“ืึธืก ืžื™ื™ื ื˜ ืึทื– ื›ืึธื˜ืฉ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืคึผืึทืจืกื™ืจืŸ ื“ื™ ื‘ืœืึทื˜ ื˜ื™ืฉ ืื•ื™ืฃ ื“ืขืจ ืขืจืฉื˜ืขืจ ืึทืงืกืขืก ืคึผืจื•ื•ื•ืŸ, ืึทืœืข ืกืึทื‘ืกืึทืงื•ื•ืึทื ื˜ ืึทืงืกืขืก ืฆื• ื“ืขื ื‘ืœืึทื˜ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื›ืึทื ื“ืึทืœื“ ืื™ืŸ ื“ื™ TLB, ืึทืœืึทื•ื™ื ื’ ืคึฟืึทืจ ืฉื ืขืœ ืึธืคึผืขืจืึทืฆื™ืข.

ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ื•ื•ื™ ืึท ื’ืฉืžื™ื•ืช ืžื™ื˜ืœ (ื•ื•ืึธืก ืžืื›ื˜ ืขืก ืฉื ืขืœ ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืึธืจื˜), ื–ื™ื™ึทืŸ ืงืึทืคึผืึทืฆื™ื˜ืขื˜ ืื™ื– ืœื™ืžื™ื˜ืขื“. ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœื˜ ืฆื•ื˜ืจื™ื˜ ืฆื• ืžืขืจ ื‘ืœืขื˜ืขืจ, ื“ื™ TLB ื•ื•ืขื˜ ื ื™ืฉื˜ ืงืขื ืขืŸ ืฆื• ืงืจืึธื ืžืึทืคึผื™ื ื’ื– ืคึฟืึทืจ ืึทืœืข ืคื•ืŸ โ€‹โ€‹ื–ื™ื™, ืึทื–ื•ื™ ื“ื™ื™ืŸ ืคึผืจืึธื’ืจืึทื ื•ื•ืขื˜ ืœื•ื™ืคืŸ ืคื™ืœ ืกืœืึธื•ืขืจ.

Hugepages ืงื•ืžื˜ ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ

ืึทื–ื•ื™ ื•ื•ืึธืก ืงืขื ืขืŸ ืžื™ืจ ื˜ืึธืŸ ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ TLB ืœื•ื™ืคืŸ? (ืžื™ืจ ื™ื‘ืขืจื ืขืžืขืŸ ื“ื™ ืคึผืจืึธื’ืจืึทื ื ืึธืš ื“ืึทืจืฃ ื“ื™ ื–ืขืœื‘ืข ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹ื–ื›ึผืจื•ืŸ).

ื“ืึธืก ืื™ื– ื•ื•ื• Hugepages ืงื•ืžื˜ ืื™ืŸ. ืึทื ืฉื˜ืึธื˜ 4096 ื‘ื™ื˜ืขืก ื•ื•ืึธืก ื“ืึทืจืคืŸ ื‘ืœื•ื™ื– ืื™ื™ืŸ TLB ืคึผืึธื–ื™ืฆื™ืข, ืื™ื™ืŸ TLB ืคึผืึธื–ื™ืฆื™ืข ืงืขืŸ ืื™ืฆื˜ ืคื•ื ื˜ ืฆื• ืึท ื•ื•ืึทืคึผื™ื ื’ 2 ืžืขื’ืื‘ื™ื™ื˜. ืœืึธืžื™ืจ ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ื“ื™ TLB ื”ืื˜ 512 ืื™ื™ื ืกืŸ, ื“ืึธ ืึธืŸ ื”ื•ื’ืขืคึผืึทื’ืขืก ืžื™ืจ ืงืขื ืขืŸ ื’ืœื™ื™ึทื›ืŸ:

4096 bโ‹…512=2 MB

ื“ืขืžืึธืœื˜ ื•ื•ื™ ืงืขื ืขืŸ ืžื™ืจ ืคืึทืจื’ืœื™ื™ึทื›ืŸ ืžื™ื˜ ื–ื™ื™:

2 MBโ‹…512=1 GB

ื“ืึธืก ืื™ื– ื•ื•ืึธืก Hugepages ืื™ื– ืึธืกืึทื. ื–ื™ื™ ืงืขื ืขืŸ ืคึฟืึทืจื‘ืขืกืขืจืŸ ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ื™ื˜ื™ ืึธืŸ ืคื™ืœ ืžื™. ืื‘ืขืจ ืขืก ื–ืขื ืขืŸ ื‘ืึทื˜ื™ื™ื˜ื™ืง ืงื™ื™ื•ื•ื™ืึทืฅ ื“ืึธ.

ื’ื™ืคืก ืกืคึผืึธืึธืคื™ื ื’

ื“ืขืจ ืงืขืจืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืžืึธื ื™ื˜ืึธืจืก ื•ื•ื™ ืึธืคื˜ ื™ืขื“ืขืจ ื–ื›ึผืจื•ืŸ ื‘ืœืึทื˜ ืื™ื– ื’ืขื ื™ืฆื˜. ืื•ื™ื‘ ืขืก ืื™ื– ื ื™ืฉื˜ ื’ืขื ื•ื’ ืคื™ื–ื™ืฉ ื–ื›ึผืจื•ืŸ (ื‘ืึทืจืึทืŸ), ื“ืขืจ ืงืขืจืŸ ื•ื•ืขื˜ ืžืึทืš ื•ื•ื™ื™ื ื™ืงืขืจ ื•ื•ื™ื›ื˜ื™ืง (ื•ื•ื™ื™ื ื™ืงืขืจ ืึธืคื˜ ื’ืขื ื™ืฆื˜) ื‘ืœืขื˜ืขืจ ืฆื• ื“ื™ ืฉื•ื•ืขืจ ื“ื™ืกืง ืฆื• ื‘ืึทืคืจื™ื™ึทืขืŸ ืขื˜ืœืขื›ืข ื‘ืึทืจืึทืŸ ืคึฟืึทืจ ืžืขืจ ื•ื•ื™ื›ื˜ื™ืง ื‘ืœืขื˜ืขืจ.
ืื™ืŸ ืคึผืจื™ื ืฆื™ืคึผ, ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืึทืคึผืœื™ื™ื– ืฆื• Hugepages. ืึธื‘ืขืจ, ื“ืขืจ ืงืขืจืŸ ืงืขื ืขืŸ ื‘ืœื•ื™ื– ื•ื™ืกื‘ื™ื™ึทื˜ืŸ ื’ืึทื ืฅ ื‘ืœืขื˜ืขืจ, ื ื™ืฉื˜ ื™ื—ื™ื“ ื‘ื™ื˜ืขืก.

ื–ืืœ ืก ื–ืึธื’ืŸ ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืคึผืจืึธื’ืจืึทื ื•ื•ื™ ื“ืึธืก:

char* mymemory = malloc(2*1024*1024); // ะ’ะพะทัŒะผะตะผ ัั‚ะพ ะทะฐ ะพะดะฝัƒ Hugepage!
// ะ—ะฐะฟะพะปะฝะธะผ mymemory ะบะฐะบะธะผะธ-ะปะธะฑะพ ะดะฐะฝะฝั‹ะผะธ
// ะกะดะตะปะฐะตะผ ะผะฝะพะณะพ ะดั€ัƒะณะธั… ะฒะตั‰ะตะน,
// ะบะพั‚ะพั€ั‹ะต ะฟั€ะธะฒะตะดัƒั‚ ะบ ะฟะพะดะผะตะฝะต ัั‚ั€ะฐะฝะธั†ั‹ mymemory
// ...
// ะ—ะฐะฟั€ะพัะธะผ ะดะพัั‚ัƒะฟ ั‚ะพะปัŒะบะพ ะบ ะฟะตั€ะฒะพะผัƒ ะฑะฐะนั‚ัƒ
putchar(mymemory[0]); 

ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ืขืจ ืงืขืจืŸ ื•ื•ืขื˜ ื“ืึทืจืคึฟืŸ ืฆื• ืคืึทืจื‘ื™ื™ึทื˜ืŸ (ืœื™ื™ืขื ืขืŸ) ื•ื•ื™ ืคื™ืœ ื•ื•ื™ 2 ืžืขื’ืื‘ื™ื™ื˜ ืคื•ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืฉื•ื•ืขืจ ืคืึธืจ / ืกืกื“ ื ืึธืจ ืคึฟืึทืจ ืื™ืจ ืฆื• ืœื™ื™ืขื ืขืŸ ืื™ื™ืŸ ื‘ื™ื™ื˜. ื•ื•ื™ ืคึฟืึทืจ ืจืขื’ื•ืœืขืจ ื‘ืœืขื˜ืขืจ, ื‘ืœื•ื™ื– 4096 ื‘ื™ื˜ืขืก ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ืœื™ื™ืขื ืขืŸ ืคึฟื•ืŸ ื“ื™ ืฉื•ื•ืขืจ ืคืึธืจ / ืกืกื“.

ื“ืขืจื™ื‘ืขืจ, ืื•ื™ื‘ ืจื™ื–ื™ืง ื‘ืœืึทื˜ ืื™ื– ืึธื•ื•ื•ืขืจืจื™ื™ื“, ืขืก ืื™ื– ื‘ืœื•ื™ื– ืคืึทืกื˜ืขืจ ืฆื• ืœื™ื™ืขื ืขืŸ ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทืงืกืขืก ื“ื™ ื’ืื ืฆืข ื‘ืœืึทื˜. ื“ืขื ืžื™ื˜ืœ ืึทื– ืื•ื™ื‘ ืื™ืจ ื–ืขื ืขืŸ ื˜ืจื™ื™ื ื’ ืฆื• ืจืึทื ื“ืึทืžืœื™ ืึทืงืกืขืก ืคืึทืจืฉื™ื“ืขื ืข ืคึผืึทืจืฅ ืคื•ืŸ ื–ื›ึผืจื•ืŸ ืื•ืŸ ื ืึธืจ ืœื™ื™ืขื ืขืŸ ืึท ืคึผืึธืจ ืคื•ืŸ ืงื™ืœืึธื‘ื™ื™ื˜, ืื™ืจ ื–ืึธืœ ื ื•ืฆืŸ ืจืขื’ื•ืœืขืจ ื‘ืœืขื˜ืขืจ ืื•ืŸ ื ื™ืฉื˜ ื–ืึธืจื’ ื•ื•ืขื’ืŸ ืขืคึผืขืก ืึทื ื“ืขืจืฉ.

ืื•ื™ืฃ ื“ื™ ืื ื“ืขืจืข ื”ืึทื ื˜, ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทืงืกืขืก ืึท ื’ืจื•ื™ืก ื˜ื™ื™ืœ ืคื•ืŸ ื–ื›ึผืจื•ืŸ ืกืึทืงื•ื•ืขื ื˜ืฉืึทืœื™, ืจื™ื–ื™ืง ื‘ืœืขื˜ืขืจ ื•ื•ืขื˜ ืคึฟืึทืจื‘ืขืกืขืจืŸ ื“ื™ื™ืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’. ืึธื‘ืขืจ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ืขืก ื–ื™ืš (ื ื™ื˜ ืžื™ื˜ ืึทื‘ืกื˜ืจืึทืงื˜ ื•ื•ื™ื™ื›ื•ื•ืืจื’) ืื•ืŸ ื–ืขืŸ ื•ื•ืึธืก ืึทืจื‘ืขื˜ ืคืึทืกื˜ืขืจ.

ืึทืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ื–ื›ึผืจื•ืŸ

ืื•ื™ื‘ ืื™ืจ ืฉืจื™ื™ึทื‘ืŸ C, ืื™ืจ ื•ื•ื™ืกืŸ ืึทื– ืื™ืจ ืงืขื ืขืŸ ื‘ืขื˜ืŸ ืึทืจื‘ื™ื˜ืจืขืจืึทืœื™ ืงืœื™ื™ืŸ (ืึธื“ืขืจ ื›ึผืžืขื˜ ืึทืจื‘ื™ื˜ืจืขืจืึทืœื™ ื’ืจื•ื™ืก) ืึทืžืึทื•ื ืฅ ืคื•ืŸ ื–ื›ึผืจื•ืŸ ืคื•ืŸ ื“ื™ ืงื•ืคึผืข. malloc(). ื–ืืœ ืก ื–ืึธื’ืŸ ืื™ืจ ื“ืึทืจืคึฟืŸ 30 ื‘ื™ื˜ืขืก ืคื•ืŸ ื–ื›ึผืจื•ืŸ:

char* mymemory = malloc(30);

ืคึฟืึทืจ ืึท ืคึผืจืึธื’ืจืึทืžื™ืกื˜, ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืึทื– ืื™ืจ "ืจื™ืงื•ื•ืขืก" 30 ื‘ื™ื˜ืขืก ืคื•ืŸ ื–ื›ึผืจื•ืŸ ืคื•ืŸ ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื ืื•ืŸ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืึท ื˜ื™ื™ึทื˜ืœ ืฆื• ืขื˜ืœืขื›ืข ื•ื•ื™ืจื˜ื•ืึทืœ ื–ื›ึผืจื•ืŸ. ืื‘ืขืจ ืœืžืขืฉื” malloc () ืื™ื– ื ืึธืจ ืึท C ืคึฟื•ื ืงืฆื™ืข ื•ื•ืึธืก ืจื•ืคื˜ ืคึฟื•ืŸ ื“ืขืจ ืคึฟื•ื ืงืฆื™ืข ื‘ืจืง ืื•ืŸ ืกื‘ืจืง ืฆื• ื‘ืขื˜ืŸ ืึธื“ืขืจ ืคืจื™ื™ ื–ื™ืงืึธืจืŸ ืคึฟื•ืŸ ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื.

ืึธื‘ืขืจ, ืจื™ืงื•ื•ืขืกื˜ื™ื ื’ ืžืขืจ ืื•ืŸ ืžืขืจ ื–ื›ึผืจื•ืŸ ืคึฟืึทืจ ื™ืขื“ืขืจ ืึทืœืึทืงื™ื™ืฉืึทืŸ ืื™ื– ื‘ืึทื˜ืœืึธื ื™ืฉ; ืขืก ืื™ื– ืจื•ื‘ึฟ ืžืกืชึผืžื ืึทื– ืขื˜ืœืขื›ืข ื–ื›ึผืจื•ืŸ ืึธืคึผืฉื ื™ื˜ ืื™ื– ืฉื•ื™ืŸ ื‘ืืคืจื™ื™ื˜ (free()), ืื•ืŸ ืžื™ืจ ืงืขื ืขืŸ ืจื™ื™ื•ื– ืขืก. malloc() ื™ืžืคึผืœืึทืžืึทื ืฅ ื’ืึทื ืฅ ืงืึธืžืคึผืœืขืงืก ืึทืœื’ืขืจื™ื“ืึทืžื– ืคึฟืึทืจ ืจื™ื•ื–ื™ื ื’ ื‘ืืคืจื™ื™ื˜ ื–ื›ึผืจื•ืŸ.

ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืึทืœืฅ ื›ืึทืคึผืึทื ื– ืึทื ื ืึธื•ื˜ื™ืกื˜ ืคึฟืึทืจ ืื™ืจ, ืึทื–ื•ื™ ื•ื•ืึธืก ื–ืึธืœ ืขืก ื–ืึธืจื’ ืื™ืจ? ืื‘ืขืจ ื•ื•ื™ื™ึทืœ ื“ื™ ืึทืจื•ื™ืกืจื•ืคืŸ free() ื˜ื•ื˜ ื ื™ืฉื˜ ืžื™ื™ื ืขืŸ ืึทื– ื–ื™ืงืึธืจืŸ ืื™ื– ื“ืึทื•ื•ืงืข ืื•ืžื’ืขืงืขืจื˜ ืžื™ื“ ืฆื• ื“ื™ ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื.

ืขืก ืื™ื– ืึทื–ืึท ืึท ื–ืึทืš ื•ื•ื™ ื–ื›ึผืจื•ืŸ ืคืจืึทื’ืžืึทื ื˜ื™ื™ืฉืึทืŸ. ืื™ืŸ ืขืงืกื˜ืจืขื ืงืึทืกืขืก, ืขืก ื–ืขื ืขืŸ ืงื•ืคึผืข ืกืขื’ืžืึทื ืฅ ื•ื•ื• ื‘ืœื•ื™ื– ืึท ื‘ื™ืกืœ ื‘ื™ื˜ืขืก ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜, ื‘ืฉืขืช ืึทืœืฅ ืื™ืŸ ืฆื•ื•ื™ืฉืŸ ืื™ื– ื‘ืืคืจื™ื™ื˜ (free()).

ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ื–ื™ืงืึธืจืŸ ืคืจืึทื’ืžืึทื ื˜ื™ื™ืฉืึทืŸ ืื™ื– ืึทืŸ ื™ื ืงืจืขื“ืึทื‘ืœื™ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ื˜ืขืžืข, ืื•ืŸ ืืคื™ืœื• ืžื™ื ืขืจื•ื•ืขืจื˜ื™ืง ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ืึท ืคึผืจืึธื’ืจืึทื ืงืขื ืขืŸ ื”ืึธื‘ืŸ ืึท ื‘ืึทื˜ื™ื™ื˜ื™ืง ืคึผืจืึทืœ. ืื™ืŸ ืจื•ื‘ึฟ ืคืืœืŸ, ืžื’ื™ืœื” ื•ื•ืขื˜ ื ื™ืฉื˜ ืคืึทืจืฉืึทืคืŸ ื‘ืึทื˜ื™ื™ื˜ื™ืง ื–ื™ืงืึธืจืŸ ืคืจืึทื’ืžืึทื ื˜ื™ื™ืฉืึทืŸ, ืึธื‘ืขืจ ืื™ืจ ื–ืึธืœ ื–ื™ื™ืŸ ืึทื•ื•ืขืจ ืึทื– ืื•ื™ื‘ ืขืก ืื™ื– ืึท ืคึผืจืึธื‘ืœืขื ืžื™ื˜ ืคืจืึทื’ืžืึทื ื˜ื™ื™ืฉืึทืŸ ืื™ืŸ ืขื˜ืœืขื›ืข ื’ืขื’ื ื˜ ืคื•ืŸ ื“ืขืจ ืงื•ืคึผืข, ืจื™ื–ื™ืง ื‘ืœืขื˜ืขืจ ืงืขื ืขืŸ ืžืึทื›ืŸ ื“ื™ ืกื™ื˜ื•ืึทืฆื™ืข ืขืจื’ืขืจ.

ืกืขืœืขืงื˜ื™ื•ื• ื ื•ืฆืŸ ืคื•ืŸ ืจื™ื–ื™ืง ื‘ืœืขื˜ืขืจ

ื ืึธืš ืœื™ื™ืขื ืขืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืจ ื”ืึธื˜ ื‘ืืฉืœืืกืŸ ื•ื•ืึธืก ืคึผืึทืจืฅ ืคื•ืŸ ื“ื™ื™ืŸ ืคึผืจืึธื’ืจืึทื ืงืขื ืขืŸ ื ื•ืฅ ืคื•ืŸ ื ื™ืฆืŸ ืจื™ื–ื™ืง ื‘ืœืขื˜ืขืจ ืื•ืŸ ื•ื•ืึธืก ืงืขื ืขืŸ ื ื™ืฉื˜. ื–ืึธืœ ื’ื•ื•ืึทืœื“ื™ืง ื‘ืœืขื˜ืขืจ ื‘ื›ืœืœ ื–ื™ื™ืŸ ืขื ื™ื™ื‘ืึทืœื“?

ืฆื•ืž ื’ืœื™ืง ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ madvise()ืฆื• ื’ืขื‘ืŸ ื”ื•ื’ืขืคึผืึทื’ื™ื ื’ ื‘ืœื•ื™ื– ืคึฟืึทืจ ื™ืขื ืข ื–ื™ืงืึธืจืŸ ื’ืขื‘ื™ื˜ืŸ ื•ื•ื• ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื ื•ืฆื™ืง.

ืขืจืฉื˜ืขืจ, ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– Hugepages ืื™ื– ืคืœื™ืกื ื“ื™ืง ืื™ืŸ ืžืึทื“ื•ื•ื™ืกืข () ืžืึธื“ืข ื ื™ืฆืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืื™ืŸ ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ.

ื“ืขืจื ืึธืš, ื ื•ืฆืŸ 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ืฆื• ืœืขืจื ืขืŸ ืžืขืจ ื•ื•ืขื’ืŸ ื–ื›ึผืจื•ืŸ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’ ืื•ืŸ madvise(), ื“ืขื ื˜ืขืžืข ื”ืื˜ ืึท ื™ื ืงืจืขื“ืึทื‘ืœื™ ืึทืจืึธืคืึทื ื’ ืœืขืจื ืขืŸ ื•ื™ืกื‘ื™ื™ื’. ืึทื–ื•ื™ ืื•ื™ื‘ ืื™ืจ ื‘ื“ืขื” ืฆื• ื‘ืึทืงื•ืžืขืŸ ื˜ืึทืงืข ื’ื•ื˜ ืื™ืŸ ืขืก, ื’ืจื™ื™ื˜ืŸ ื–ื™ืš ืฆื• ืœื™ื™ืขื ืขืŸ ืื•ืŸ ืคึผืจื•ื‘ื™ืจืŸ ืคึฟืึทืจ ืึท ื‘ื™ืกืœ ื•ื•ืึธื›ืŸ ืื™ื™ื“ืขืจ ืื™ืจ ื“ืขืจื•ื•ืึทืจื˜ืŸ positive ืจืขื–ื•ืœื˜ืึทื˜ืŸ.

ื•ื•ืึธืก ืฆื• ืœื™ื™ืขื ืขืŸ?

ื”ืึธื‘ืŸ ืึท ืงืฉื™ื? ืฉืจื™ื™ื‘ ืื™ืŸ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ!

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’