เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹เชจเชพ เชซเชพเชฏเชฆเชพ เช…เชจเซ‡ เช—เซ‡เชฐเชซเชพเชฏเชฆเชพ

เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹เชจเชพ เชซเชพเชฏเชฆเชพ เช…เชจเซ‡ เช—เซ‡เชฐเชซเชพเชฏเชฆเชพ

เช…เชญเซเชฏเชพเชธเช•เซเชฐเชฎเชจเชพ เชตเชฟเชฆเซเชฏเชพเชฐเซเชฅเซ€เช“ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช•เชฐเซ‡เชฒ เชฒเซ‡เช–เชจเซ‹ เช…เชจเซเชตเชพเชฆ "เชฒเชฟเชจเช•เซเชธ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐ".

เช…เช—เชพเช‰, เชฎเซ‡เช‚ Linux เชชเชฐ Hugepages เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชšเช•เชพเชธเชตเซเช‚ เช…เชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€.
เช† เชฒเซ‡เช– เชซเช•เซเชค เชคเซเชฏเชพเชฐเซ‡ เชœ เช‰เชชเชฏเซ‹เช—เซ€ เชฅเชถเซ‡ เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช–เชฐเซ‡เช–เชฐ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชœเช—เซเชฏเชพ เชนเซ‹เชฏ. เชนเซเช‚ เชเชตเชพ เช˜เชฃเชพ เชฒเซ‹เช•เซ‹เชจเซ‡ เชฎเชณเซเชฏเซ‹ เช›เซเช‚ เชœเซ‡เช“ เชเชตเซ€ เชธเช‚เชญเชพเชตเชจเชพเชฅเซ€ เชฎเซ‚เชฐเซเช– เชฌเชจเซเชฏเชพ เช›เซ‡ เช•เซ‡ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹ เชœเชพเชฆเซเชˆ เชฐเซ€เชคเซ‡ เช‰เชคเซเชชเชพเชฆเช•เชคเชพเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‹ เช•เชฐเชถเซ‡. เชœเซ‹ เช•เซ‡, เชตเชฟเชถเชพเชณ เชชเซ‡เชœเซ€เช‚เช— เช เชเช• เชœเชŸเชฟเชฒ เชตเชฟเชทเชฏ เช›เซ‡ เช…เชจเซ‡ เชœเซ‹ เช–เซ‹เชŸเซ€ เชฐเซ€เชคเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซ‹ เชคเซ‡ เชชเซเชฐเชญเชพเชตเชจเซ‡ เชฌเช—เชพเชกเซ€ เชถเช•เซ‡ เช›เซ‡.

เชญเชพเช— 1: Linux (เชฎเซ‚เชณ เช…เชนเซ€เช‚)

เชธเชฎเชธเซเชฏเชพ:
เชคเชฎเชพเชฐเซ€ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ HugePages เชธเช•เซเชทเชฎ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชคเชฎเชพเชฐเซ‡ เชคเชชเชพเชธเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช‰เช•เซ‡เชฒ:
เชคเซ‡ เช–เซ‚เชฌ เชธเชฐเชณ เช›เซ‡:

cat /sys/kernel/mm/transparent_hugepage/enabled

เชคเชฎเชจเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช• เชฎเชณเชถเซ‡:

always [madvise] never

เชคเชฎเซ‡ เช‰เชชเชฒเชฌเซเชง เชตเชฟเช•เชฒเซเชชเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชœเซ‹เชถเซ‹ (เชนเช‚เชฎเซ‡เชถ, เชฎเชฆเชฎเชธเซเชค, เช•เซเชฏเชพเชฐเซ‡เชฏ เชจเชนเซ€เช‚), เช…เชจเซ‡ เชนเชพเชฒเชฎเชพเช‚ เชธเช•เซเชฐเชฟเชฏ เชตเชฟเช•เชฒเซเชช เช•เซŒเช‚เชธเชฎเชพเช‚ เชฌเช‚เชง เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ (เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ madvise).

madvise เชคเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ transparent hugepages เชฎเชพเชคเซเชฐ เชฎเซ‡เชฎเชฐเซ€ เชตเชฟเชธเซเชคเชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เชœ เชธเช•เซเชทเชฎ เช›เซ‡ เชœเซ‡ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡ เช›เซ‡ เชฎเซ‡เชกเชตเชพเชˆเชธ(2).

เชนเช‚เชฎเซ‡เชถเชพ เชคเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ 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
  • เชฎเซ‡เชกเชตเชฟเชเชจเซ‡ เชกเชฟเชซเซ‹เชฒเซเชŸ เชคเชฐเซ€เช•เซ‡ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช†เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹:
    CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
    # Comment out CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y

เชญเชพเช— 2: เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹เชจเชพ เชซเชพเชฏเชฆเชพ เช…เชจเซ‡ เช—เซ‡เชฐเชซเชพเชฏเชฆเชพ

เช…เชฎเซ‡ เชนเซเชฏเซเชœเชชเซ‡เชœเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เชซเชพเชฏเชฆเชพ, เช—เซ‡เชฐเชซเชพเชฏเชฆเชพ เช…เชจเซ‡ เชธเช‚เชญเชตเชฟเชค เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“เชจเซ‡ เชชเชธเช‚เชฆเช—เซ€เชชเซ‚เชฐเซเชตเช• เชธเชฎเชœเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เชถเซเช‚. เชเช• เชคเช•เชจเซ€เช•เซ€ เชฐเซ€เชคเซ‡ เชœเชŸเชฟเชฒ เช…เชจเซ‡ เชชเซ‡เชกเชจเซเชŸเชฟเช• เชฒเซ‡เช– เช เชฒเซ‹เช•เซ‹ เชฎเชพเชŸเซ‡ เชธเชฎเชœเชตเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เชนเชถเซ‡ เช•เซ‡ เชœเซ‡เช“ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹ เช เชฐเชพเชฎเชฌเชพเชฃเชจเซ‹ เช‰เชชเชพเชฏ เช›เซ‡ เชคเซ‡เชตเซเช‚ เชตเชฟเชšเชพเชฐเชคเชพ เชนเซ‹เชฏ เช›เซ‡, เชคเซ‡เชฅเซ€ เชนเซเช‚ เชธเชฐเชณเชคเชพ เชฎเชพเชŸเซ‡ เชšเซ‹เช•เชธเชพเชˆเชจเซ‹ เชฌเชฒเชฟเชฆเชพเชจ เช†เชชเซ€เชถ. เชคเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฐเชพเช–เชตเซเช‚ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เช•เซ‡ เช˜เชฃเชพ เชฌเชงเชพ เชตเชฟเชทเชฏเซ‹ เช–เชฐเซ‡เช–เชฐ เชœเชŸเชฟเชฒ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชฎเซ‹เชŸเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชธเชฐเชณ เช›เซ‡.

เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เช…เชฎเซ‡ เชฒเชฟเชจเช•เซเชธ เชšเชฒเชพเชตเชคเซ€ 64-เชฌเซ€เชŸ x86 เชธเชฟเชธเซเชŸเชฎเซ‹ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, เช…เชจเซ‡ เชนเซเช‚ เชซเช•เซเชค เชเชฎ เชงเชพเชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚ เช•เซ‡ เชธเชฟเชธเซเชŸเชฎ เชชเชพเชฐเชฆเชฐเซเชถเช• เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ (เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เช•เซ‹เชˆ เช—เซ‡เชฐเชฒเชพเชญ เชจเชฅเซ€ เช•เซ‡ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹ เช“เชตเชฐเชฐเชพเชˆเชŸ เชจ เชฅเชพเชฏ), เชœเซ‡เชฎ เช•เซ‡ เชฒเช—เชญเช— เช•เซ‹เชˆเชชเชฃ เช†เชงเซเชจเชฟเช• Linux เชฎเชพเช‚ เช›เซ‡. เชชเชฐเซเชฏเชพเชตเชฐเชฃ

เชนเซเช‚ เชจเซ€เชšเซ‡เชจเซ€ เชฒเชฟเช‚เช•เซเชธเชฎเชพเช‚ เชตเชงเซ เชคเช•เชจเซ€เช•เซ€ เชตเชฐเซเชฃเชจ เชœเซ‹เชกเซ€เชถ.

เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€

เชœเซ‹ เชคเชฎเซ‡ C++ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐ เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹ เช•เซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชšเซ‹เช•เซเช•เชธ เชธเชฐเชจเชพเชฎเชพเช‚ (เชชเซ‹เช‡เชจเซเชŸเชฐ เชฎเซ‚เชฒเซเชฏเซ‹) เชงเชฐเชพเชตเซ‡ เช›เซ‡.

เชœเซ‹ เช•เซ‡, เช† เชธเชฐเชจเชพเชฎเชพเช‚เช“ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€ เช•เซ‡ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชญเซŒเชคเชฟเช• เชธเชฐเชจเชพเชฎเชพเช‚เช“เชจเซ‡ เชชเซเชฐเชคเชฟเชฌเชฟเช‚เชฌเชฟเชค เช•เชฐเซ‡ (RAM เชธเชฐเชจเชพเชฎเชพเช‚). เชคเซ‡เช“ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซเช‚ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เช•เชฐเซ‡ เช›เซ‡. เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เชชเชพเชธเซ‡ เช–เชพเชธ MMU (เชฎเซ‡เชฎเชฐเซ€ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ เชฏเซเชจเชฟเชŸ) เชฎเซ‹เชกเซเชฏเซเชฒ เช›เซ‡ เชœเซ‡ เช•เชฐเซเชจเชฒ เชฎเซ‡เชช เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเซ‡ เชญเซŒเชคเชฟเช• เชธเซเชฅเชพเชจ เชชเชฐ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡.

เช† เช…เชญเชฟเช—เชฎเชจเชพ เช˜เชฃเชพ เชซเชพเชฏเชฆเชพ เช›เซ‡, เชชเชฐเช‚เชคเซ เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡:

  • เชชเซเชฐเชฆเชฐเซเชถเชจ (เชตเชฟเชตเชฟเชง เช•เชพเชฐเชฃเซ‹เชธเชฐ);
  • เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช†เช‡เชธเซ‹เชฒเซ‡เชถเชจ, เชเชŸเชฒเซ‡ เช•เซ‡, เช•เซ‹เชˆ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฌเซ€เชœเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซ€ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชตเชพเช‚เชšเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€.

เชชเซƒเชทเซเช เซ‹ เชถเซเช‚ เช›เซ‡?

เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€ เชชเซƒเชทเซเช เซ‹เชฎเชพเช‚ เชตเชนเซ‡เช‚เชšเชพเชฏเซ‡เชฒเซ€ เช›เซ‡. เชฆเชฐเซ‡เช• เชตเซเชฏเช•เซเชคเชฟเช—เชค เชชเซƒเชทเซเช  เชšเซ‹เช•เซเช•เชธ เชญเซŒเชคเชฟเช• เชฎเซ‡เชฎเชฐเซ€ เชคเชฐเชซ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡ RAM เชฎเชพเช‚ เชตเชฟเชธเซเชคเชพเชฐ เชคเชฐเชซ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เช…เชฅเชตเชพ เชคเซ‡ เชญเซŒเชคเชฟเช• เช‰เชชเช•เชฐเชฃเชจเซ‡ เชธเซ‹เช‚เชชเซ‡เชฒ เชธเชฐเชจเชพเชฎเชพเชจเซ‡ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชตเชฟเชกเชฟเช“ เช•เชพเชฐเซเชก.

เชคเชฎเซ‡ เชœเซ‡ เชชเซƒเชทเซเช เซ‹ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซ‹ เช›เซ‹ เชคเซ‡เชฎเชพเช‚เชจเชพ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพเช‚ เช•เชพเช‚ เชคเซ‹ RAM เชคเชฐเชซ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเซ‡ เช›เซ‡ เช…เชฅเชตเชพ เช…เชฆเชฒเชพเชฌเชฆเชฒเซ€ เชฅเชพเชฏ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡ เชคเซ‡ เชคเชฎเชพเชฐเซ€ เชนเชพเชฐเซเชก เชกเซเชฐเชพเช‡เชต เช…เชฅเชตเชพ SSD เชชเชฐ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡. เช•เชฐเซเชจเชฒ เชฆเชฐเซ‡เช• เชชเซƒเชทเซเช เชจเชพ เชญเซŒเชคเชฟเช• เชฒเซ‡เช†เช‰เชŸเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชธเซเชชเซเชซ เชชเซ‡เชœ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡, เชคเซ‹ เช•เชฐเซเชจเชฒ เชฅเซเชฐเซ‡เชกเชจเซ‡ เชฐเซ‹เช•เซ‡ เช›เซ‡ เชœเซ‡ เชฎเซ‡เชฎเชฐเซ€เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซ€ เช›เซ‡, เชนเชพเชฐเซเชก เชกเซเชฐเชพเชˆเชต/เชเชธเชเชธเชกเซ€เชฎเชพเช‚เชฅเซ€ RAM เชฎเชพเช‚ เชชเซ‡เชœ เชตเชพเช‚เชšเซ‡ เช›เซ‡, เช…เชจเซ‡ เชชเช›เซ€ เชฅเซเชฐเซ‡เชกเชจเซ‡ เชšเชฒเชพเชตเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซ‡ เช›เซ‡.

เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชธเซเชŸเซเชฐเซ€เชฎ เชชเชพเชฐเชฆเชฐเซเชถเช• เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡ เชคเซ‡ HDD/SSD เชฎเชพเช‚เชฅเซ€ เชธเซ€เชงเซเช‚ เชตเชพเช‚เชšเซ‡ เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€. เชธเชพเชฎเชพเชจเซเชฏ เชชเซƒเชทเซเช เซ‹เชจเซเช‚ เช•เชฆ 4096 เชฌเชพเช‡เชŸเซเชธ เช›เซ‡. เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹เชจเซเช‚ เช•เชฆ 2 เชฎเซ‡เช—เชพเชฌเชพเช‡เชŸเซเชธ เช›เซ‡.

เชŸเซเชฐเชพเชจเซเชธเชฒเซ‡เชถเชจ-เชเชธเซ‹เชธเชฟเชเชŸเซ€เชต เชฌเชซเชฐ (TLB)

เชœเซเชฏเชพเชฐเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฎเซ‡เชฎเชฐเซ€เชจเชพ เชชเซƒเชทเซเช เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ CPU เช เชœเชพเชฃเชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เช•เชฏเชพ เชญเซŒเชคเชฟเช• เชชเซƒเชทเซเช เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเชตเซ‹ เช›เซ‡ (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ‹ เชจเช•เชถเซ‹ เชนเซ‹เชตเซ‹ เชœเซ‹เชˆเช).

เช•เชฐเซเชจเชฒ เชชเชพเชธเซ‡ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐ (เชชเซƒเชทเซเช  เช•เซ‹เชทเซเชŸเช•) เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชชเซƒเชทเซเช เซ‹ เชตเชฟเชถเซ‡เชจเซ€ เชคเชฎเชพเชฎ เชฎเชพเชนเชฟเชคเซ€ เชถเชพเชฎเซ‡เชฒ เช›เซ‡. เช† เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชคเชฎเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชเชกเซเชฐเซ‡เชธเชจเซ‡ เชซเชฟเชเชฟเช•เชฒ เชเชกเซเชฐเซ‡เชธ เชชเชฐ เชฎเซ‡เชช เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชœเซ‹ เช•เซ‡, เชชเซ‡เชœ เชŸเซ‡เชฌเชฒ เชเช•เชฆเชฎ เชœเชŸเชฟเชฒ เช…เชจเซ‡ เชงเซ€เชฎเซเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เชœเซเชฏเชพเชฐเซ‡ เชชเชฃ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเซ‡เชฎเชฐเซ€เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ‡ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชธเชฎเช—เซเชฐ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€.

เชธเชฆเชจเชธเซ€เชฌเซ‡, เช…เชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเชฎเชพเช‚ TLB เช›เซ‡ เชœเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เช…เชจเซ‡ เชซเชฟเชเชฟเช•เชฒ เชเชกเซเชฐเซ‡เชธ เชตเชšเซเชšเซ‡ เชฎเซ‡เชชเชฟเช‚เช—เชจเซ‡ เช•เซ‡เชถ เช•เชฐเซ‡ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชœเซ‹ เช•เซ‡ เช…เชฎเชพเชฐเซ‡ เชชเซเชฐเชฅเชฎ เชเช•เซเชธเซ‡เชธ เชชเซเชฐเชฏเชพเชธ เชชเชฐ เชชเซ‡เชœ เชŸเซ‡เชฌเชฒเชจเซ‡ เชชเชพเชฐเซเชธ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชคเซ‹ เชชเชฃ เชชเซ‡เชœเชจเซ€ เชคเชฎเชพเชฎ เช…เชจเซเช—เชพเชฎเซ€ เชเช•เซเชธเซ‡เชธเชจเซ‡ TLB เชฎเชพเช‚ เชนเซ‡เชจเซเชกเชฒ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชœเซ‡เชจเชพเชฅเซ€ เชเชกเชชเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡.

เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชญเซŒเชคเชฟเช• เช‰เชชเช•เชฐเชฃ เชคเชฐเซ€เช•เซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡ (เชœเซ‡ เชคเซ‡เชจเซ‡ เชชเซเชฐเชฅเชฎ เชธเซเชฅเชพเชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเซ‡ เช›เซ‡), เชคเซ‡เชจเซ€ เช•เซเชทเชฎเชคเชพ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช›เซ‡. เชคเซ‡เชฅเซ€ เชœเซ‹ เชคเชฎเซ‡ เชตเชงเซ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ TLB เชคเซ‡ เชฌเชงเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เชชเชฟเช‚เช— เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ€ เชถเช•เชถเซ‡ เชจเชนเซ€เช‚, เชœเซ‡เชจเชพ เช•เชพเชฐเชฃเซ‡ เชคเชฎเชพเชฐเซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช–เซ‚เชฌ เชงเซ€เชฎเซ‹ เชšเชพเชฒเชถเซ‡.

เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹ เชฌเชšเชพเชตเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡

เชคเซ‹ TLB เช“เชตเชฐเชซเซเชฒเซ‹ เชŸเชพเชณเชตเชพ เชฎเชพเชŸเซ‡ เช†เชชเชฃเซ‡ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ€เช? (เช…เชฎเซ‡ เชงเชพเชฐเซ€เช เช›เซ€เช เช•เซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซ‡ เชนเชœเซ€ เชชเชฃ เชเชŸเชฒเซ€ เชœ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡).

เช† เชคเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹ เช†เชตเซ‡ เช›เซ‡. เชฎเชพเชคเซเชฐ เชเช• TLB เชเชจเซเชŸเซเชฐเซ€เชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซ‡เชตเชพ 4096 เชฌเชพเชˆเชŸเชจเซ‡ เชฌเชฆเชฒเซ‡, เชเช• TLB เชเชจเซเชŸเซเชฐเซ€ เชนเชตเซ‡ 2 เชฎเซ‡เช—เชพเชฌเชพเชˆเชŸเซเชธเชจเซ‹ เชจเชฟเชฐเซเชฆเซ‡เชถ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชšเชพเชฒเซ‹ เชงเชพเชฐเซ€เช เช•เซ‡ TLB เชชเชพเชธเซ‡ 512 เชเชจเซเชŸเซเชฐเซ€เช“ เช›เซ‡, เช…เชนเซ€เช‚ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹ เชตเชฟเชจเชพ เช†เชชเชฃเซ‡ เชฎเซ‡เชš เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช:

4096 bโ‹…512=2 MB

เชคเซ‹ เชชเช›เซ€ เช†เชชเชฃเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชคเซเชฒเชจเชพ เช•เชฐเซ€ เชถเช•เซ€เช:

2 MBโ‹…512=1 GB

เช† เชถเชพ เชฎเชพเชŸเซ‡ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹ เช…เชฆเซเชญเซเชค เช›เซ‡. เชคเซ‡เช“ เชตเชงเซ เชชเซเชฐเชฏเชคเซเชจเซ‹ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช‰เชคเซเชชเชพเชฆเช•เชคเชพเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‹ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เช…เชนเซ€เช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชšเซ‡เชคเชตเชฃเซ€เช“ เช›เซ‡.

เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹ เชธเซเชชเซเชซเชฟเช‚เช—

เช•เชฐเซเชจเชฒ เช†เชชเซ‹เช†เชช เชฎเซ‹เชจเซ€เชŸเชฐ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชฆเชฐเซ‡เช• เชฎเซ‡เชฎเชฐเซ€ เชชเซ‡เชœ เช•เซ‡เชŸเชฒเซ€ เชตเชพเชฐ เชตเชชเชฐเชพเชฏ เช›เซ‡. เชœเซ‹ เชคเซเชฏเชพเช‚ เชชเซ‚เชฐเชคเซ€ เชญเซŒเชคเชฟเช• เชฎเซ‡เชฎเชฐเซ€ (RAM) เชจ เชนเซ‹เชฏ, เชคเซ‹ เช•เชฐเซเชจเชฒ เช“เช›เชพ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ (เช“เช›เซ€ เชตเชพเชฐเช‚เชตเชพเชฐ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ) เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชตเชงเซ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชชเซƒเชทเซเช เซ‹ เชฎเชพเชŸเซ‡ เช•เซ‡เชŸเชฒเซ€เช• RAM เช–เชพเชฒเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชนเชพเชฐเซเชก เชกเชฟเชธเซเช• เชชเชฐ เช–เชธเซ‡เชกเชถเซ‡.
เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เชคเซ‡ เชœ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชฒเชพเช—เซ เชชเชกเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช•เชฐเซเชจเชฒ เชซเช•เซเชค เช†เช–เชพ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชธเซเชตเซ‡เชช เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชตเซเชฏเช•เซเชคเชฟเช—เชค เชฌเชพเช‡เชŸเซเชธ เชจเชนเซ€เช‚.

เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช†เชจเชพ เชœเซ‡เชตเซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช›เซ‡:

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

เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช•เชฐเซเชจเชฒเชจเซ‡ เชนเชพเชฐเซเชก เชกเซเชฐเชพเช‡เชต/เชเชธเชเชธเชกเซ€เชฎเชพเช‚เชฅเซ€ 2 เชฎเซ‡เช—เชพเชฌเชพเช‡เชŸเซเชธ เชœเซ‡เชŸเชฒเซ€ เชฎเชพเชนเชฟเชคเซ€ เชฌเชฆเชฒเชตเชพเชจเซ€ (เชตเชพเช‚เชšเชตเชพเชจเซ€) เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ เชฎเชพเชคเซเชฐ เชเช• เชฌเชพเช‡เชŸ เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡. เชจเชฟเชฏเชฎเชฟเชค เชชเซƒเชทเซเช เซ‹ เชฎเชพเชŸเซ‡, เชนเชพเชฐเซเชก เชกเซเชฐเชพเช‡เชต/เชเชธเชเชธเชกเซ€เชฎเชพเช‚เชฅเซ€ เชซเช•เซเชค 4096 เชฌเชพเช‡เชŸเซเชธ เชตเชพเช‚เชšเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชคเซ‡เชฅเซ€, เชœเซ‹ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เชจเซ‡ เช“เชตเชฐเชฐเชพเช‡เชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชœเซ‹ เชคเชฎเชพเชฐเซ‡ เชธเชฎเช—เซเชฐ เชชเซƒเชทเซเช เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซ‹ เชคเซ‡ เชตเชพเช‚เชšเชตเซเช‚ เชตเชงเซ เชเชกเชชเซ€ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชœเซ‹ เชคเชฎเซ‡ เชฎเซ‡เชฎเชฐเซ€เชจเชพ เชตเชฟเชตเชฟเชง เชญเชพเช—เซ‹เชจเซ‡ เช…เชตเซเชฏเชตเชธเซเชฅเชฟเชค เชฐเซ€เชคเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‹ เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เชเช•-เชฌเซ‡ เช•เชฟเชฒเซ‹เชฌเชพเชˆเชŸ เชตเชพเช‚เชšเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‹, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เชจเชฟเชฏเชฎเชฟเชค เชชเซƒเชทเซเช เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช เช…เชจเซ‡ เช…เชจเซเชฏ เช•เช‚เชˆเชชเชฃ เชตเชฟเชถเซ‡ เชšเชฟเช‚เชคเชพ เชจ เช•เชฐเชตเซ€ เชœเซ‹เชˆเช.

เชฌเซ€เชœเซ€ เชฌเชพเชœเซ, เชœเซ‹ เชคเชฎเชพเชฐเซ‡ เช•เซเชฐเชฎเชถเชƒ เชฎเซ‡เชฎเชฐเซ€เชจเชพ เชฎเซ‹เชŸเชพ เชญเชพเช—เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹ เชคเชฎเชพเชฐเชพ เชชเซเชฐเชฆเชฐเซเชถเชจเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‹ เช•เชฐเชถเซ‡. เชœเซ‹ เช•เซ‡, เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เชœเชพเชคเซ‡ เชšเช•เชพเชธเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ (เช…เชฎเซ‚เชฐเซเชค เชธเซ‰เชซเซเชŸเชตเซ‡เชฐ เชธเชพเชฅเซ‡ เชจเชนเซ€เช‚) เช…เชจเซ‡ เชœเซเช“ เช•เซ‡ เชถเซเช‚ เชเชกเชชเชฅเซ€ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡.

เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เชซเชพเชณเชตเชฃเซ€

เชœเซ‹ เชคเชฎเซ‡ C เชฒเช–เซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹ เช•เซ‡ เชคเชฎเซ‡ เชขเช—เชฒเชพเชฎเชพเช‚เชฅเซ€ เชฎเชจเชธเซเชตเซ€ เชฐเซ€เชคเซ‡ เชจเชพเชจเซ€ (เช…เชฅเชตเชพ เชฒเช—เชญเช— เชฎเชจเชธเซเชตเซ€ เชฐเซ€เชคเซ‡ เชฎเซ‹เชŸเซ€) เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. malloc(). เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เชคเชฎเชจเซ‡ 30 เชฌเชพเช‡เชŸเซเชธ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

char* mymemory = malloc(30);

เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐเชจเซ‡, เชเชตเซเช‚ เชฆเซ‡เช–เชพเชˆ เชถเช•เซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚เชฅเซ€ 30 เชฌเชพเช‡เชŸเซเชธ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ "เชตเชฟเชจเช‚เชคเซ€" เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‹ เช…เชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเซ‡เชฎเชฐเซ€ เชชเชฐ เชชเซ‹เช‡เชจเซเชŸเชฐ เชชเชฐเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‹. เชชเชฐเช‚เชคเซ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ malloc () เชฎเชพเชคเซเชฐ เชเช• C เชซเช‚เช•เซเชถเชจ เช›เซ‡ เชœเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ€ เช…เช‚เชฆเชฐเชฅเซ€ เช•เซ‰เชฒ เช•เชฐเซ‡ เช›เซ‡ brk เช…เชจเซ‡ sbrk เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเชพ เช…เชฅเชตเชพ เชฎเซเช•เซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡.

เชœเซ‹ เช•เซ‡, เชฆเชฐเซ‡เช• เชซเชพเชณเชตเชฃเซ€ เชฎเชพเชŸเซ‡ เชตเชงเซ เช…เชจเซ‡ เชตเชงเซ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเซ€ เชฌเชฟเชจเช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช›เซ‡; เชธเช‚เชญเชต เช›เซ‡ เช•เซ‡ เช•เซ‡เชŸเชฒเชพเช• เชฎเซ‡เชฎเชฐเซ€ เชธเซ‡เช—เชฎเซ‡เชจเซเชŸ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชฎเซเช•เซเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡ (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)

เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เช† เชชเชฆเซเชงเชคเชฟ เช เช•เชฐเซเชจเชฒเชจเซ‡ เชฎเซ‡เชฎเชฐเซ€เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซเช‚ เชคเซ‡ เช…เช‚เช—เซ‡เชจเซ€ เชธเชฒเชพเชน เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เชจเชฅเซ€ เช•เซ‡ เช•เชฐเซเชจเชฒ เช†เชชเซ‡เชฒ เชฎเซ‡เชฎเชฐเซ€ เชฎเชพเชŸเซ‡ เช†เชชเซ‹เช†เชช เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชถเซ‡.

เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชจเซ‹ เชธเช‚เชฆเชฐเซเชญ เชฒเซ‹ (manpage)madviseเชฎเซ‡เชฎเชฐเซ€ เชฎเซ‡เชจเซ‡เชœเชฎเซ‡เชจเซเชŸ เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชพเชฃเชตเชพ เชฎเชพเชŸเซ‡ เช…เชจเซ‡ madvise(), เช† เชตเชฟเชทเชฏ เช…เชฆเซเชญเซเชค เชฐเซ€เชคเซ‡ เชฌเซ‡เชนเชฆ เชถเซ€เช–เชตเชพเชจเซ€ เชตเชณเชพเช‚เช• เชงเชฐเชพเชตเซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€ เชœเซ‹ เชคเชฎเซ‡ เชคเซ‡เชฎเชพเช‚ เช–เชฐเซ‡เช–เชฐ เชธเชพเชฐเซเช‚ เชฎเซ‡เชณเชตเชตเชพ เช‡เชšเซเช›เชคเชพ เชนเซ‹เชต, เชคเซ‹ เชคเชฎเซ‡ เช•เซ‹เชˆ เชนเช•เชพเชฐเชพเชคเซเชฎเช• เชชเชฐเชฟเชฃเชพเชฎเซ‹เชจเซ€ เช…เชชเซ‡เช•เซเชทเชพ เช•เชฐเซ‹ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚ เชฅเซ‹เชกเชพ เช…เช เชตเชพเชกเชฟเชฏเชพ เชตเชพเช‚เชšเชตเชพ เช…เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชจเซ€ เชคเซˆเชฏเชพเชฐเซ€ เช•เชฐเซ‹.

เชถเซเช‚ เชตเชพเช‚เชšเชตเซเช‚?

เชเช• เชชเซเชฐเชถเซเชจ เช›เซ‡? เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เชฒเช–เซ‹!

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹