เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเตเดŸเต† เด—เตเดฃเด™เตเด™เดณเตเด‚ เดฆเต‹เดทเด™เตเด™เดณเตเด‚

เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเตเดŸเต† เด—เตเดฃเด™เตเด™เดณเตเด‚ เดฆเต‹เดทเด™เตเด™เดณเตเด‚

เด•เต‹เดดเตโ€Œเดธเต เดตเดฟเดฆเตเดฏเดพเตผเดคเตเดฅเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏ เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดชเดฐเดฟเดญเดพเดท "เดฒเดฟเดจเด•เตเดธเต เด…เดกเตเดฎเดฟเดจเดฟเดธเตเดŸเตเดฐเต‡เดฑเตเดฑเตผ".

เดฎเตเดฎเตเดชเต, Linux-เตฝ Hugepages เดŽเด™เตเด™เดจเต† เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดžเดพเตป เดธเด‚เดธเดพเดฐเดฟเดšเตเดšเต.
เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดนเตเดฏเต‚เดœเตโ€Œเดชเต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด’เดฐเต เดธเตเดฅเดฒเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เดˆ เดฒเต‡เด–เดจเด‚ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเด•เต‚. เดนเตเดฏเต‚เดœเตโ€Œเดชเต‡เดœเตเด•เตพ เด‰เตฝเดชเตเดชเดพเดฆเดจเด•เตเดทเดฎเดคเดฏเต† เดฎเดพเดจเตเดคเตเดฐเดฟเด•เดฎเดพเดฏเดฟ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเดฎเต†เดจเตเดจ เดชเตเดฐเดคเต€เด•เตเดทเดฏเดฟเตฝ เดตเดžเตเดšเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸ เดจเดฟเดฐเดตเดงเดฟ เด†เดณเตเด•เดณเต† เดžเดพเตป เด•เดฃเตเดŸเตเดฎเตเดŸเตเดŸเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดตเดฒเดฟเดฏเดชเต‡เดœเดฟเด‚เด—เต เด’เดฐเต เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดตเดฟเดทเดฏเดฎเดพเดฃเต, เดคเต†เดฑเตเดฑเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเตฝ เดชเตเดฐเด•เดŸเดจเดคเตเดคเต† เดคเดฐเด‚เดคเดพเดดเตเดคเตเดคเดฟเดฏเต‡เด•เตเด•เดพเด‚.

เดญเดพเด—เด‚ 1: เดฒเดฟเดจเด•เตเดธเดฟเตฝ เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹เดฏเต†เดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต (เด’เดฑเดฟเดœเดฟเดจเตฝ เด‡เดตเดฟเดŸเต†)

เดชเตเดฐเดถเตเดจเด‚:
เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ HugePages เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹เดฏเต†เดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดชเดฐเดฟเดนเดพเดฐเด‚:
เด‡เดคเต เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต:

cat /sys/kernel/mm/transparent_hugepage/enabled

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚:

always [madvise] never

เดฒเดญเตเดฏเดฎเดพเดฏ เด“เดชเตเดทเดจเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด‚ (เดŽเดชเตเดชเต‹เดดเตเด‚, เดญเตเดฐเดพเดจเตเดคเตป, เด’เดฐเดฟเด•เตเด•เดฒเตเด‚), เดจเดฟเดฒเดตเดฟเตฝ เดธเดœเต€เดตเดฎเดพเดฏ เด“เดชเตโ€Œเดทเตป เดชเดฐเดพเตปเดคเต€เดธเดฟเดธเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเตเด‚ (เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดญเตเดฐเดพเดจเตเดคเตป).

เดญเตเดฐเดพเดจเตเดคเตป เดŽเดจเตเดจเดพเดฃเต transparent hugepages เดธเตโ€Œเดชเดทเตโ€ŒเดŸเดฎเดพเดฏเดฟ เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเดจเตเดจ เดฎเต†เดฎเตเดฎเดฑเดฟ เดเดฐเดฟเดฏเด•เตพเด•เตเด•เดพเดฏเดฟ เดฎเดพเดคเตเดฐเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดญเตเดฐเดพเดจเตเดคเตป (2).

เดŽเดฒเตเดฒเดพเดฏเดฟเดชเตเดชเต‡เดพเดดเตเด‚ เดŽเดจเตเดจเดพเดฃเต 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: เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเตเดŸเต† เด—เตเดฃเด™เตเด™เดณเตเด‚ เดฆเต‹เดทเด™เตเด™เดณเตเด‚

เดนเตเดฏเต‚เดœเตโ€Œเดชเต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เด—เตเดฃเด™เตเด™เดณเตเด‚ เดฆเต‹เดทเด™เตเด™เดณเตเด‚ เดธเดพเดงเตเดฏเดฎเดพเดฏ เดชเต‹เดฐเดพเดฏเตเดฎเด•เดณเตเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚. เดนเตเดฏเต‚เดœเตโ€Œเดชเต‡เดœเตเด•เตพ เด’เดฐเต เดชเดฐเดฟเดญเตเดฐเดพเดจเตเดคเดฟ เดชเดฐเดคเตเดคเตเดจเตเดจ เด†เดณเตเด•เตพเด•เตเด•เต เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดฎเดพเดฏเดฟ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดตเตเด‚ เด…เดจเตเดšเดฟเดคเดตเตเดฎเดพเดฏ เด’เดฐเต เดฒเต‡เด–เดจเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดชเตเดฐเดฏเดพเดธเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเดคเดฟเดจเดพเตฝ, เดฒเดพเดณเดฟเดคเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ เดžเดพเตป เด•เตƒเดคเตเดฏเดค เดคเตเดฏเดœเดฟเด•เตเด•เตเด‚. เดชเดฒ เดตเดฟเดทเดฏเด™เตเด™เดณเตเด‚ เดถเดฐเดฟเด•เตเด•เตเด‚ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดตเตเด‚ เด…เดคเดฟเดจเดพเตฝ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดตเตเดฎเดพเดฃเต†เดจเตเดจเต เด“เตผเดฎเตเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต.

เดฒเดฟเดจเด•เตโ€Œเดธเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ 64-เดฌเดฟเดฑเตเดฑเต x86 เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเดพเดฃเต เดจเดฎเตเดฎเตพ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต, เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดŽเดฒเตเดฒเดพ เด†เดงเตเดจเดฟเด• เดฒเดฟเดจเด•เตเดธเดฟเดฒเต†เดฏเตเด‚ เดชเต‹เดฒเต†, เดธเตเดคเดพเดฐเตเดฏเดฎเดพเดฏ เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเต† เดธเดฟเดธเตเดฑเตเดฑเด‚ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดžเดพเตป เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เตเดจเตเดจเต. เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ.

เดคเดพเดดเต†เดฏเตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เดณเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดตเดฟเดตเดฐเดฃเด‚ เดžเดพเตป เด…เดฑเตเดฑเดพเดšเตเดšเตเดšเต†เดฏเตเดฏเตเด‚.

เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดฎเตเดฎเดฑเดฟ

เดจเดฟเด™เตเด™เดณเตŠเดฐเต C++ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฑเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเตเดณเตเดณ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เตพเด•เตเด•เต เดชเตเดฐเดคเตเดฏเต‡เด• เดตเดฟเดฒเดพเดธเด™เตเด™เตพ (เดชเต‹เดฏเดฟเดจเตเดฑเตผ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ) เด‰เดฃเตเดŸเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เดฑเดฟเดฏเดพเด‚.

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดˆ เดตเดฟเดฒเดพเดธเด™เตเด™เตพ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเต† เดซเดฟเดธเดฟเด•เตเด•เตฝ เดตเดฟเดฒเดพเดธเด™เตเด™เดณเต† เดชเตเดฐเดคเดฟเดซเดฒเดฟเดชเตเดชเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเดฟเดฒเตเดฒ (เดฑเดพเด‚ เดตเดฟเดฒเดพเดธเด™เตเด™เตพ). เด…เดตเตผ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเต† เดตเดฟเดฒเดพเดธเด™เตเด™เดณเต† เดชเตเดฐเดคเดฟเดจเดฟเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดชเตเดฐเต‹เดธเดธเดฑเดฟเดจเต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• MMU (เดฎเต†เดฎเตเดฎเดฑเดฟ เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดฏเต‚เดฃเดฟเดฑเตเดฑเต) เดฎเตŠเดกเตเดฏเต‚เตพ เด‰เดฃเตเดŸเต, เด…เดคเต เด•เต‡เตผเดฃเดฒเดฟเดจเต† เด’เดฐเต เดซเดฟเดธเดฟเด•เตเด•เตฝ เดฒเตŠเด•เตเด•เต‡เดทเดจเดฟเดฒเต‡เด•เตเด•เต เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดฎเตเดฎเดฑเดฟ เดฎเดพเดชเตเดชเต เดšเต†เดฏเตเดฏเดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต.

เดˆ เดธเดฎเต€เดชเดจเดคเตเดคเดฟเดจเต เดงเดพเดฐเดพเดณเด‚ เด—เตเดฃเด™เตเด™เดณเตเดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸเดต เด‡เดตเดฏเดพเดฃเต:

  • เดชเตเดฐเด•เดŸเดจเด‚ (เดตเดฟเดตเดฟเดง เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ);
  • เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด’เดฑเตเดฑเดชเตเดชเต†เดŸเตเดคเตเดคเตฝ, เด…เดคเดพเดฏเดคเต, เดฎเดฑเตเดฑเตŠเดฐเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.

เดชเต‡เดœเตเด•เตพ เดŽเดจเตเดคเดพเดฃเต?

เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดฎเตเดฎเดฑเดฟ เดชเต‡เดœเตเด•เดณเดพเดฏเดฟ เดคเดฟเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด“เดฐเต‹ เดชเต‡เดœเตเด‚ เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตโ€ŒเดŸ เดซเดฟเดธเดฟเด•เตเด•เตฝ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเต เดฑเดพเดฎเดฟเดฒเต† เด’เดฐเต เดเดฐเดฟเดฏเดฏเดฟเดฒเต‡เด•เตเด•เต เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดตเต€เดกเดฟเดฏเต‹ เด•เดพเตผเดกเต เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด’เดฐเต เดซเดฟเดธเดฟเด•เตเด•เตฝ เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด…เดธเตˆเตป เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.

เดจเดฟเด™เตเด™เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดฎเดฟเด•เตเด• เดชเต‡เดœเตเด•เดณเตเด‚ เดฑเดพเดฎเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟเดจเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเต‹ เดธเตเดตเดพเดชเตเดชเต เดšเต†เดฏเตเดฏเตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต เด…เดต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดนเดพเตผเดกเต เดกเตเดฐเตˆเดตเดฟเดฒเต‹ เดŽเดธเตเดŽเดธเตเดกเดฟเดฏเดฟเดฒเต‹ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด“เดฐเต‹ เดชเต‡เดœเดฟเดจเตเดฑเต†เดฏเตเด‚ เดซเดฟเดธเดฟเด•เตเด•เตฝ เดฒเต‡เด”เดŸเตเดŸเต เด•เต‡เตผเดฃเตฝ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด’เดฐเต เด•เดฌเดณเดฟเดชเตเดชเดฟเดšเตเดš เดชเต‡เดœเต เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตโ€Œเดคเดพเตฝ, เดฎเต†เดฎเตเดฎเดฑเดฟ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจ เดคเตเดฐเต†เดกเต เด•เต‡เตผเดฃเตฝ เดจเดฟเตผเดคเตเดคเตเดจเตเดจเต, เดนเดพเตผเดกเต เดกเตเดฐเตˆเดตเต/เดŽเดธเตโ€ŒเดŽเดธเตโ€Œเดกเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเต‡เดœเต เดฑเดพเดฎเดฟเดฒเต‡เด•เตเด•เต เดฑเต€เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เดคเตเดฐเต†เดกเต เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดคเตเดŸเดฐเตเดจเตเดจเต.

เดˆ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดธเตเดŸเตเดฐเต€เด‚ เดธเตเดคเดพเดฐเตเดฏเดฎเดพเดฃเต, เด…เดคเดพเดฏเดคเต เด‡เดคเต HDD/SSD-เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดตเดพเดฏเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเดฟเดฒเตเดฒ. เดธเดพเดงเดพเดฐเดฃ เดชเต‡เดœเตเด•เดณเตเดŸเต† เดตเดฒเดฟเดชเตเดชเด‚ 4096 เดฌเตˆเดฑเตเดฑเตเด•เดณเดพเดฃเต. เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเตเดŸเต† เดตเดฒเตเดชเตเดชเด‚ 2 เดฎเต†เด—เดพเดฌเตˆเดฑเตเดฑเดพเดฃเต.

เดตเดฟเดตเตผเดคเตเดคเดจ-เด…เดจเตเดฌเดจเตเดง เดฌเดซเตผ (TLB)

เด’เดฐเต เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเตเดŸเต† เด’เดฐเต เดชเต‡เดœเต เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เดเดคเต เดซเดฟเดธเดฟเด•เตเด•เตฝ เดชเต‡เดœเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต†เดจเตเดจเต เดธเดฟเดชเดฟเดฏเต เด…เดฑเดฟเดžเตเดžเดฟเดฐเดฟเด•เตเด•เดฃเด‚ (เด…เดคเดพเดฏเดคเต, เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดตเดฟเดฒเดพเดธ เดฎเดพเดชเตเดชเต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚).

เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดชเต‡เดœเตเด•เดณเต† เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดตเดฟเดตเดฐเด™เตเด™เดณเตเด‚ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เด’เดฐเต เดกเดพเดฑเตเดฑเดพ เด˜เดŸเดจ (เดชเต‡เดœเต เดŸเต‡เดฌเดฟเตพ) เด•เต‡เตผเดฃเดฒเดฟเดจเตเดฃเตเดŸเต. เดˆ เดกเดพเดฑเตเดฑ เด˜เดŸเดจ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดซเดฟเดธเดฟเด•เตเด•เตฝ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดตเต†เตผเดšเตเดตเตฝ เดตเดฟเดฒเดพเดธเด‚ เดฎเดพเดชเตเดชเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚.

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดชเต‡เดœเต เดชเดŸเตเดŸเดฟเด• เดตเดณเดฐเต† เดธเด™เตเด•เต€เตผเดฃเตเดฃเดตเตเด‚ เดตเต‡เด—เดค เด•เตเดฑเดžเตเดžเดคเตเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เด’เดฐเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดฎเต†เดฎเตเดฎเดฑเดฟ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เดดเต†เดฒเตเดฒเดพเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เดฎเตเดดเตเดตเตป เดกเดพเดฑเตเดฑเดพ เด˜เดŸเดจเดฏเตเด‚ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.

เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดธเดธเดฑเดฟเดจเต เดตเต†เตผเดšเตเดตเตฝ, เดซเดฟเดธเดฟเด•เตเด•เตฝ เดตเดฟเดฒเดพเดธเด™เตเด™เตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดฎเดพเดชเตเดชเดฟเด‚เด—เต เด•เดพเดทเต† เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต TLB เด‰เดฃเตเดŸเต. เด†เดฆเตเดฏ เด†เด•เตโ€Œเดธเดธเต เดถเตเดฐเดฎเดคเตเดคเดฟเตฝ เดคเดจเตเดจเต† เดชเต‡เดœเต เดŸเต‡เดฌเดฟเตพ เดชเดพเดดเตโ€Œเดธเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต†เด™เตเด•เดฟเดฒเตเด‚, เดชเต‡เดœเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเตเด•เดณเตเด‚ TLB-เดฏเดฟเตฝ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเดจเดพเด•เตเด‚, เด‡เดคเต เดตเต‡เด—เดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เด’เดฐเต เดญเตŒเดคเดฟเด• เด‰เดชเด•เดฐเดฃเดฎเดพเดฏเดฟ เด‡เดคเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟเดฏเดคเดฟเดจเดพเตฝ (เด†เดฆเตเดฏเด‚ เด…เดคเต เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต), เด…เดคเดฟเดจเตเดฑเต† เดถเต‡เดทเดฟ เดชเดฐเดฟเดฎเดฟเดคเดฎเดพเดฃเต. เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดชเต‡เดœเตเด•เตพ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, TLB-เดฏเตโ€Œเด•เตเด•เต เด…เดตเดฏเตโ€Œเด•เตเด•เต†เดฒเตเดฒเดพเด‚ เดฎเดพเดชเตเดชเดฟเด‚เด—เต เดธเด‚เดญเดฐเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด‡เดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดตเดณเดฐเต† เดธเดพเดตเดงเดพเดจเดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเด•เตเดจเตเดจเต.

เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เดฐเด•เตเดทเดฏเตเด•เตเด•เดพเดฏเดฟ เดตเดฐเตเดจเตเดจเต

TLB เด“เดตเตผเดซเตเดฒเต‹ เด’เดดเดฟเดตเดพเด•เตเด•เดพเตป เดจเดฎเตเด•เตเด•เต เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚? (เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเต เด‡เดชเตเดชเต‹เดดเตเด‚ เด…เดคเต‡ เดฎเต†เดฎเตเดฎเดฑเดฟ เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด•เดฐเตเดคเตเดจเตเดจเต).

เด‡เดตเดฟเดŸเต†เดฏเดพเดฃเต เดนเตเดฏเต‚เดœเต เดชเต‡เดœเตเด•เตพ เดตเดฐเตเดจเตเดจเดคเต. เด’เดฐเต TLB เดŽเตปเดŸเตเดฐเดฟ เดฎเดพเดคเตเดฐเด‚ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ 4096 เดฌเตˆเดฑเตเดฑเตเด•เตพเด•เตเด•เต เดชเด•เดฐเด‚, เด’เดฐเต TLB เดŽเตปเดŸเตเดฐเดฟเด•เตเด•เต เด‡เดชเตเดชเต‹เตพ 2 เดฎเต†เด—เดพเดฌเตˆเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. TLB-เด•เตเด•เต 512 เดŽเตปเดŸเตเดฐเดฟเด•เตพ เด‰เดฃเตเดŸเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เดพเด‚, เด‡เดตเดฟเดŸเต† เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดจเดฎเตเด•เตเด•เต เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดจเดพเด•เตเด‚:

4096 bโ‹…512=2 MB

เด…เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เด…เดตเดฐเตเดฎเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเด‚:

2 MBโ‹…512=1 GB

เด‡เดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดนเตเดฏเต‚เดœเตโ€Œเดชเต‡เดœเตเด•เตพ เด†เด•เตผเดทเดฃเต€เดฏเดฎเดพเดฏเดคเต. เด…เดงเดฟเด•เด‚ เดชเดฐเดฟเดถเตเดฐเดฎเดฟเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต† เด‰เตฝเดชเตเดชเดพเดฆเดจเด•เตเดทเดฎเดค เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด…เดตเตผเด•เตเด•เต เด•เดดเดฟเดฏเตเด‚. เดŽเดจเตเดจเดพเตฝ เด‡เดตเดฟเดŸเต† เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเด•เดณเตเดฃเตเดŸเต.

เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เดตเดžเตเดšเดจ

เด“เดฐเต‹ เดฎเต†เดฎเตเดฎเดฑเดฟ เดชเต‡เดœเตเด‚ เดŽเดคเตเดฐ เดคเดตเดฃ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเต เด•เต‡เตผเดฃเตฝ เดธเตเดตเดฏเดฎเต‡เดต เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เดฎเดคเดฟเดฏเดพเดฏ เดซเดฟเดธเดฟเด•เตเด•เตฝ เดฎเต†เดฎเตเดฎเดฑเดฟ (เดฑเดพเด‚) เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด•เต‚เดŸเตเดคเตฝ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เดชเต‡เดœเตเด•เตพเด•เตเด•เดพเดฏเดฟ เด•เตเดฑเดšเตเดšเต เดฑเดพเด‚ เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด•เต‡เตผเดฃเตฝ เดนเดพเตผเดกเต เดกเดฟเดธเตเด•เดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดพเดงเดพเดจเตเดฏเด‚ เด•เตเดฑเดžเตเดž (เด•เต‚เดŸเตเดคเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ) เดชเต‡เดœเตเด•เตพ เดจเต€เด•เตเด•เตเด‚.
เดคเดคเตเดตเดคเตเดคเดฟเตฝ, เดนเตเดฏเต‚เดœเต เดชเต‡เดœเตเด•เตพเด•เตเด•เตเด‚ เด‡เดคเต เดฌเดพเดงเด•เดฎเดพเดฃเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด•เต‡เตผเดฃเดฒเดฟเดจเต เดฎเตเดดเตเดตเตป เดชเต‡เดœเตเด•เดณเตเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เดธเตเดตเดพเดชเตเดชเต เดšเต†เดฏเตเดฏเดพเดจเดพเด•เต‚, เดตเตเดฏเด•เตเดคเดฟเด—เดค เดฌเตˆเดฑเตเดฑเตเด•เตพ เด…เดฒเตเดฒ.

เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด‰เดฃเตเดŸเต†เดจเตเดจเต เดชเดฑเดฏเดพเด‚:

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

เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด•เต‡เตผเดฃเดฒเดฟเดจเต เดนเดพเตผเดกเต เดกเตเดฐเตˆเดตเต/เดŽเดธเตเดŽเดธเตเดกเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต 2 เดฎเต†เด—เดพเดฌเตˆเดฑเตเดฑเต เดตเดฟเดตเดฐเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดธเดพเดงเดพเดฐเดฃ เดชเต‡เดœเตเด•เดณเต† เดธเด‚เดฌเดจเตเดงเดฟเดšเตเดšเดฟเดŸเดคเตเดคเต‹เดณเด‚, เดนเดพเตผเดกเต เดกเตเดฐเตˆเดตเต/เดŽเดธเตเดŽเดธเตเดกเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต 4096 เดฌเตˆเดฑเตเดฑเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เดตเดพเดฏเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดณเตเดณเต‚.

เด…เดคเดฟเดจเดพเตฝ, เดตเดฒเดฟเดฏ เดชเต‡เดœเต เด…เดธเดพเดงเตเดตเดพเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเตเดดเตเดตเตป เดชเต‡เดœเตเด‚ เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดฃเดฎเต†เด™เตเด•เดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต‡ เด…เดคเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดตเดพเดฏเดฟเด•เตเด•เต‚. เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚ เดจเดฟเด™เตเด™เตพ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเตเดŸเต† เดตเดฟเดตเดฟเดง เดญเดพเด—เด™เตเด™เตพ เด•เตเดฐเดฎเดฐเดนเดฟเดคเดฎเดพเดฏเดฟ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด•เตเดฑเดšเตเดšเต เด•เดฟเดฒเต‹เดฌเตˆเดฑเตเดฑเตเด•เตพ เดตเดพเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพ เดธเดพเดงเดพเดฐเดฃ เดชเต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฃเด‚, เดฎเดฑเตเดฑเตŠเดจเตเดจเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดตเดฟเดทเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ.

เดฎเดฑเตเดตเดถเดคเตเดคเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเตเดŸเต† เดตเดฒเดฟเดฏเตŠเดฐเต เดญเดพเด—เด‚ เด•เตเดฐเดฎเดพเดจเตเด—เดคเดฎเดพเดฏเดฟ เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดฃเดฎเต†เด™เตเด•เดฟเตฝ, เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเด•เดŸเดจเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเด‚. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดจเดฟเด™เตเด™เตพ เด‡เดคเต เดธเตเดตเดฏเด‚ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต (เด…เดฎเต‚เตผเดคเตเดคเดฎเดพเดฏ เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฒเตเดฒ) เด•เต‚เดŸเดพเดคเต† เดŽเดจเตเดคเดพเดฃเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เด•เดพเดฃเตเด•.

เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เด…เดฒเต‹เด•เตเด•เต‡เดทเตป

เดจเดฟเด™เตเด™เตพ C เดŽเดดเตเดคเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดนเต€เดชเตเดชเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตเดตเต‡เดšเตเด›เดพเดชเดฐเดฎเดพเดฏ เดšเต†เดฑเดฟเดฏ (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดเด•เดชเด•เตเดทเต€เดฏเดฎเดพเดฏเดฟ เดตเดฒเดฟเดฏ) เดฎเต†เดฎเตเดฎเดฑเดฟ เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เดฑเดฟเดฏเดพเด‚ malloc(). เดจเดฟเด™เตเด™เตพเด•เตเด•เต 30 เดฌเตˆเดฑเตเดฑเตเด•เตพ เดฎเต†เดฎเตเดฎเดฑเดฟ เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เดชเดฑเดฏเดพเด‚:

char* mymemory = malloc(30);

เด’เดฐเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตผเด•เตเด•เต, เดจเดฟเด™เตเด™เตพ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต 30 เดฌเตˆเดฑเตเดฑเตเด•เตพ เดฎเต†เดฎเตเดฎเดฑเดฟ "เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเดจเตเดจเต" เดŽเดจเตเดจเต เดคเต‹เดจเตเดจเตเด•เดฏเตเด‚ เดšเดฟเดฒ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดชเต‹เดฏเดฟเดจเตเดฑเตผ เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ malloc () เดซเด‚เด—เตโ€Œเดทเดจเตเดณเตเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเดฟ เดซเด‚เด—เตโ€Œเดทเตป เดฎเดพเดคเตเดฐเดฎเดพเดฃเต 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•