เจตเฉฑเจกเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ‡ เจซเจพเจ‡เจฆเฉ‡ เจ…เจคเฉ‡ เจจเฉเจ•เจธเจพเจจ

เจตเฉฑเจกเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ‡ เจซเจพเจ‡เจฆเฉ‡ เจ…เจคเฉ‡ เจจเฉเจ•เจธเจพเจจ

เจ•เฉ‹เจฐเจธ เจฆเฉ‡ เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€เจ†เจ‚ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจฒเฉ‡เจ– เจฆเจพ เจ…เจจเฉเจตเจพเจฆ "เจฒเฉ€เจจเจ•เจธ เจชเฉเจฐเจธเจผเจพเจธเจ•".

เจชเจนเจฟเจฒเจพเจ‚, เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เฉ€เจคเฉ€ เจธเฉ€ เจ•เจฟ เจฒเฉ€เจจเจ•เจธ เจ‰เฉฑเจคเฉ‡ เจตเจฟเจธเจผเจพเจฒ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ…เจคเฉ‡ เจธเจฎเจฐเฉฑเจฅ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ.
เจ‡เจน เจฒเฉ‡เจ– เจคเจพเจ‚ เจนเฉ€ เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจตเจฟเจธเจผเจพเจฒ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจœเจ—เฉเจนเจพ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฒเฉ‹เจ•เจพเจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจฒเจฟเจ† เจนเจพเจ‚ เจœเฉ‹ เจ‡เจธ เจธเฉฐเจญเจพเจตเจจเจพ เจฆเฉเจ†เจฐเจพ เจฎเฉ‚เจฐเจ– เจฌเจฃเจพเจ เจ—เจ เจนเจจ เจ•เจฟ เจตเจฟเจธเจผเจพเจฒเจชเฉ‡เจœ เจœเจพเจฆเฉ‚เจˆ เจขเฉฐเจ— เจจเจพเจฒ เจ‰เจคเจชเจพเจฆเจ•เจคเจพ เจตเจฟเฉฑเจš เจธเฉเจงเจพเจฐ เจ•เจฐเจจเจ—เฉ‡เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจตเจฟเจธเจผเจพเจฒ เจชเฉ‡เจœเจฟเฉฐเจ— เจ‡เฉฑเจ• เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจตเจฟเจธเจผเจพ เจนเฉˆ เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจ—เจฒเจค เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉ‚เฉฐ เจ˜เจŸเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจญเจพเจ— 1: เจคเจธเจฆเฉ€เจ• เจ•เจฐเจจเจพ เจ•เจฟ เจตเฉฑเจกเฉ‡ เจชเฉฐเจจเฉ‡ เจฒเฉ€เจจเจ•เจธ (เจฎเฉ‚เจฒ เจ‡เฉฑเจฅเฉ‡)

เจธเจฎเฉฑเจธเจฟเจ†:
เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจฆเฉ‡เจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ•เจฟ เจ•เฉ€ เจคเฉเจนเจพเจกเฉ‡ เจธเจฟเจธเจŸเจฎ 'เจคเฉ‡ HugePages เจธเจฎเจฐเจฅเจฟเจค เจนเฉˆเฅค

เจนเฉฑเจฒ:
เจ‡เจน เจ•เจพเจซเจผเฉ€ เจธเจงเจพเจฐเจจ เจนเฉˆ:

cat /sys/kernel/mm/transparent_hugepage/enabled

เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉเจ เจฎเจฟเจฒเฉ‡เจ—เจพ:

always [madvise] never

เจคเฉเจธเฉ€เจ‚ เจ‰เจชเจฒเจฌเจง เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ‚เจšเฉ€ เจตเฉ‡เจ–เฉ‹เจ—เฉ‡ (เจนเจฎเฉ‡เจธเจผเจพ, madvise, เจ•เจฆเฉ‡ เจตเฉ€), เจ…เจคเฉ‡ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจตเจฟเจ•เจฒเจช เจจเฉ‚เฉฐ เจฌเจฐเฉˆเจ•เจŸเจพเจ‚ เจตเจฟเฉฑเจš เจจเฉฑเจฅเฉ€ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ (เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš madvise).

madvise เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ transparent hugepages เจธเจฟเจฐเจซเจผ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ–เฉ‡เจคเจฐเจพเจ‚ เจฒเจˆ เจฏเฉ‹เจ— เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจœเฉ‹ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฟเจธเจผเจพเจฒ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจจ madvise(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++ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฐ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจตเจธเจคเฉ‚เจ†เจ‚ เจฆเฉ‡ เจ–เจพเจธ เจชเจคเฉ‡ (เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจฎเฉเฉฑเจฒ) เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจชเจคเฉ‡ เจœเจผเจฐเฉ‚เจฐเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ (RAM เจเจกเจฐเฉˆเฉฑเจธ) เจตเจฟเฉฑเจš เจญเฉŒเจคเจฟเจ• เจชเจคเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ‡ เจจเจนเฉ€เจ‚ เจนเจจเฅค เจ‰เจน เจตเจฐเจšเฉเจ…เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเจฟเฉฑเจš เจชเจคเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ MMU (เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฏเฉ‚เจจเจฟเจŸ) เจฎเฉ‹เจกเฉ€เจŠเจฒ เจนเฉˆ เจœเฉ‹ เจ•เจฟ เจ•เจฐเจจเจฒ เจฎเฉˆเจช เจตเจฐเจšเฉเจ…เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเฉ‚เฉฐ เจญเฉŒเจคเจฟเจ• เจธเจฅเจพเจจ 'เจคเฉ‡ เจฌเจฃเจพเจ‰เจฃ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจชเจนเฉเฉฐเจš เจฆเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจซเจพเจ‡เจฆเฉ‡ เจนเจจ, เจชเจฐ เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเจจ:

  • เจชเฉเจฐเจฆเจฐเจธเจผเจจ (เจตเฉฑเจ–-เจตเฉฑเจ– เจ•เจพเจฐเจจเจพเจ‚ เจ•เจฐเจ•เฉ‡);
  • เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ†เจˆเจธเฉ‹เจฒเฉ‡เจธเจผเจจ, เจฏเจพเจจเฉ€ เจ•เฉ‹เจˆ เจตเฉ€ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ‚เจœเฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจคเฉ‹เจ‚ เจชเฉœเฉเจน เจจเจนเฉ€เจ‚ เจธเจ•เจฆเจพเฅค

เจชเฉฐเจจเฉ‡ เจ•เฉ€ เจนเจจ?

เจตเจฐเจšเฉเจ…เจฒ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเฉ‚เฉฐ เจชเฉฐเจจเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค เจนเจฐเฉ‡เจ• เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจชเฉฐเจจเจพ เจ‡เฉฑเจ• เจ–เจพเจธ เจญเฉŒเจคเจฟเจ• เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจตเฉฑเจฒ เจ‡เจธเจผเจพเจฐเจพ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ‡เจน RAM เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ–เฉ‡เจคเจฐ เจตเฉฑเจฒ เจ‡เจธเจผเจพเจฐเจพ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจพเจ‚ เจ‡เจน เจ‡เฉฑเจ• เจญเฉŒเจคเจฟเจ• เจกเจฟเจตเจพเจˆเจธ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เฉฑเจ• เจตเฉ€เจกเฉ€เจ“ เจ•เจพเจฐเจก เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ‡ เจชเจคเฉ‡ เจตเฉฑเจฒ เจ‡เจธเจผเจพเจฐเจพ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจชเฉฐเจจเฉ‡ เจœเจฟเจจเฉเจนเจพเจ‚ เจจเจพเจฒ เจคเฉเจธเฉ€เจ‚ เจกเฉ€เจฒ เจ•เจฐเจฆเฉ‡ เจนเฉ‹ เจœเจพเจ‚ เจคเจพเจ‚ เจฐเฉˆเจฎ เจตเฉฑเจฒ เจ‡เจธเจผเจพเจฐเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹ เจœเจพเจ‚ เจฌเจฆเจฒเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจญเจพเจต เจ‰เจน เจคเฉเจนเจพเจกเฉ€ เจนเจพเจฐเจก เจกเจฐเจพเจˆเจต เจœเจพเจ‚ SSD 'เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ•เจฐเจจเจฒ เจนเจฐเฉ‡เจ• เจชเฉฐเจจเฉ‡ เจฆเฉ‡ เจญเฉŒเจคเจฟเจ• เจ–เจพเจ•เฉ‡ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ‡เฉฑเจ• เจจเจ•เจฒเฉ€ เจชเฉฐเจจเฉ‡ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ•เจฐเจจเจฒ เจ‰เจธ เจฅเจฐเจฟเฉฑเจก เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฆเจพ เจนเฉˆ เจœเฉ‹ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ, เจชเฉฐเจจเฉ‡ เจจเฉ‚เฉฐ เจนเจพเจฐเจก เจกเจฐเจพเจˆเจต/SSD เจคเฉ‹เจ‚ RAM เจตเจฟเฉฑเจš เจชเฉœเฉเจนเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจซเจฟเจฐ เจฅเจฐเจฟเฉฑเจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃเจพ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆเฅค

เจ‡เจน เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจธเจŸเฉเจฐเฉ€เจฎ เจชเจพเจฐเจฆเจฐเจธเจผเฉ€ เจนเฉˆ, เจฎเจคเจฒเจฌ เจ•เจฟ เจ‡เจน เจœเจผเจฐเฉ‚เจฐเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ เจ•เจฟ เจ‡เจน เจธเจฟเฉฑเจงเฉ‡ HDD/SSD เจคเฉ‹เจ‚ เจชเฉœเฉเจนเฉ‡เฅค เจ†เจฎ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเจพ เจ†เจ•เจพเจฐ 4096 เจฌเจพเจˆเจŸ เจนเฉˆเฅค เจตเฉฑเจกเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเจพ เจ†เจ•เจพเจฐ 2 เจฎเฉˆเจ—เจพเจฌเจพเจˆเจŸ เจนเฉˆเฅค

เจŸเฉเจฐเจพเจ‚เจธเจฒเฉ‡เจธเจผเจจ-เจเจธเฉ‹เจธเฉ€เจเจŸเจฟเจต เจฌเจซเจฐ (TLB)

เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ‡ เจ‡เฉฑเจ• เจชเฉฐเจจเฉ‡ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ CPU เจจเฉ‚เฉฐ เจชเจคเจพ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เจฟเจนเฉœเฉ‡ เจญเฉŒเจคเจฟเจ• เจชเฉฐเจจเฉ‡ เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจชเฉœเฉเจนเจจเจพ เจนเฉˆ (เจญเจพเจต, เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจเจกเจฐเฉˆเฉฑเจธ เจฎเฉˆเจช เจนเฉ‹เจตเฉ‡)เฅค

เจ•เจฐเจจเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจกเฉ‡เจŸเจพ เจขเจพเจ‚เจšเจพ (เจชเฉฐเจจเจพ เจธเจพเจฐเจฃเฉ€) เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจตเจฐเจคเฉ‡ เจœเจพ เจฐเจนเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจฌเจพเจฐเฉ‡ เจธเจพเจฐเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจกเฉ‡เจŸเจพ เจขเจพเจ‚เจšเฉ‡ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจชเจคเฉ‡ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจญเฉŒเจคเจฟเจ• เจชเจคเฉ‡ เจจเจพเจฒ เจฎเฉˆเจช เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจชเฉ‡เจœ เจŸเฉ‡เจฌเจฒ เจ•เจพเจซเจผเฉ€ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจ…เจคเฉ‡ เจนเฉŒเจฒเฉ€ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ…เจธเฉ€เจ‚ เจนเจฐ เจตเจพเจฐ เจœเจฆเฉ‹เจ‚ เจ•เฉ‹เจˆ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจฆเฉ€ เจนเฉˆ เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจชเฉ‚เจฐเฉ‡ เจกเฉ‡เจŸเจพ เจขเจพเจ‚เจšเฉ‡ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจธเจพเจกเฉ‡ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• TLB เจนเฉˆ เจœเฉ‹ เจตเจฐเจšเฉเจ…เจฒ เจ…เจคเฉ‡ เจญเฉŒเจคเจฟเจ• เจชเจคเจฟเจ†เจ‚ เจตเจฟเจšเจ•เจพเจฐ เจฎเฉˆเจชเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจ•เฉˆเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจ‡เจน เจนเฉˆ เจ•เจฟ เจนเจพเจฒเจพเจ‚เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจชเจนเจฟเจฒเฉ€ เจเจ•เจธเฉˆเจธ เจ•เฉ‹เจธเจผเจฟเจธเจผ 'เจคเฉ‡ เจชเฉ‡เจœ เจŸเฉ‡เจฌเจฒ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจชเฉฐเจจเฉ‡ เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจ…เจ—เจฒเฉ€เจ†เจ‚ เจเจ•เจธเฉˆเจธเจพเจ‚ เจจเฉ‚เฉฐ TLB เจตเจฟเฉฑเจš เจนเฉˆเจ‚เจกเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจจเจพเจฒ เจคเฉ‡เจœเจผ เจ•เจพเจฐเจตเจพเจˆ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจ‡เฉฑเจ• เจญเฉŒเจคเจฟเจ• เจฏเฉฐเจคเจฐ เจตเจœเฉ‹เจ‚ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ (เจœเฉ‹ เจ‡เจธเจจเฉ‚เฉฐ เจชเจนเจฟเจฒเฉ€ เจฅเจพเจ‚ เจคเฉ‡ เจคเฉ‡เจœเจผ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ), เจ‡เจธเจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ เจธเฉ€เจฎเจค เจนเฉˆ. เจ‡เจธ เจฒเจˆ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจนเฉ‹เจฐ เจชเฉฐเจจเจฟเจ†เจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจšเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ TLB เจ‰เจนเจจเจพเจ‚ เจธเจพเจฐเจฟเจ†เจ‚ เจฒเจˆ เจฎเฉˆเจชเจฟเฉฐเจ— เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพ, เจœเจฟเจธ เจจเจพเจฒ เจคเฉเจนเจพเจกเจพ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฌเจนเฉเจค เจนเฉŒเจฒเฉ€ เจšเฉฑเจฒเฉ‡เจ—เจพเฅค

เจตเฉฑเจกเฉ‡ เจชเฉฐเจจเฉ‡ เจฌเจšเจพเจ… เจฒเจˆ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจ

เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ TLB เจ“เจตเจฐเจซเจฒเฉ‹ เจคเฉ‹เจ‚ เจฌเจšเจฃ เจฒเจˆ เจ•เฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚? (เจ…เจธเฉ€เจ‚ เจฎเฉฐเจจเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจ…เจœเฉ‡ เจตเฉ€ เจ‰เจธเฉ‡ เจฎเจพเจคเจฐเจพ เจฆเฉ€ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ)เฅค

เจ‡เจน เจ‰เจน เจฅเจพเจ‚ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจตเจฟเจธเจผเจพเจฒ เจชเฉฐเจจเฉ‡ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจ. 4096 เจฌเจพเจˆเจŸเจพเจ‚ เจฆเฉ€ เจฌเจœเจพเจ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• TLB เจ‡เฉฐเจฆเจฐเจพเจœเจผ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ‡เฉฑเจ• 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]); 

เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ•เจฐเจจเจฒ เจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ‡ เจ‡เฉฑเจ• เจฌเจพเจˆเจŸ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจฒเจˆ เจนเจพเจฐเจก เจกเจฐเจพเจˆเจต/SSD เจคเฉ‹เจ‚ 2 เจฎเฉˆเจ—เจพเจฌเจพเจˆเจŸ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ (เจชเฉœเฉเจนเจจ) เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจจเจฟเจฏเจฎเจค เจชเฉฐเจจเจฟเจ†เจ‚ เจฒเจˆ, เจนเจพเจฐเจก เจกเจฐเจพเจˆเจต/SSD เจคเฉ‹เจ‚ เจธเจฟเจฐเจซเจผ 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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹