HugePages рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди


рд▓рд┐рдирдХреНрд╕ рдкреНрд░рд╢рд╛рд╕рдХ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред




рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ Hugepages рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред
рдпрд╣ рд▓реЗрдЦ рдХреЗрд╡рд▓ рддрднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Hugepages рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдореИрдВ рдРрд╕реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рд╕реЗ рдорд┐рд▓рд╛ рд╣реВрдВ, рдЬреЛ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рд╕реЗ рдзреЛрдЦрд╛ рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ Hugepages рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рд╢рд╛рд▓реАрдХрд░рдг рдПрдХ рдЬрдЯрд┐рд▓ рд╡рд┐рд╖рдп рд╣реИ, рдФрд░ рдпрджрд┐ рдЕрдиреБрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред


рднрд╛рдЧ 1: рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣реЗрд╡реАрдЬрд╝ рдХреЛ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдореВрд▓ рдпрд╣рд╛рдБ )


рд╕рдорд╕реНрдпрд╛:
рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ HugePages рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕рдХреНрд╖рдо рд╣реИ рдпрд╛ рдирд╣реАрдВред


рд╕рдорд╛рдзрд╛рди:
рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ:


cat /sys/kernel/mm/transparent_hugepage/enabled 

рдЖрдкрдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдорд┐рд▓реЗрдЧрд╛:


 always [madvise] never 

рдЖрдкрдХреЛ рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА ( рд╣рдореЗрд╢рд╛, рдореИрдбрд╡рд┐рдЬрд╝, рдХрднреА рдирд╣реАрдВ ) рджрд┐рдЦрд╛рдИ рджреЗрдЧреА , рдЬрдмрдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд▓реНрдк рдХреЛрд╖реНрдардХ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдореИрдбрд╡реАрдЬрд╝ ) рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдореИрдбрд╡рд┐рд╕ рдХрд╛ рдЕрд░реНрде рд╣реИ transparent hugepages рдХреЗрд╡рд▓ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореИрдбрд╡рд┐рдЬрд╝ (2) рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд╛рд▓ рд╢реБрд▓реНрдХ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред


рд╣рдореЗрд╢рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ transparent hugepages рд╣рдореЗрд╢рд╛ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рддреЛ рдХреБрд▓ рдореЗрдореЛрд░реА рд▓реЛрдб рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИред


рдХрднреА рднреА рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдбрд╡реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рднреА transparent hugepages рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ ред


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреИрд╕реЗ рдмрджрд▓реЗрдВ


рд╡рд┐рдХрд▓реНрдк 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: HugePages рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди


рд╣рдо Hugepages рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдлрд╛рдпрджреЗ, рдиреБрдХрд╕рд╛рди рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдЪреВрдВрдХрд┐ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдкрд░рд┐рд╖реНрдХреГрдд рдФрд░ рдкрд╛рдВрдбрд┐рддреНрдпрдкреВрд░реНрдг рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬреЛ рд╣реНрдпреВрдЬрдкреЗрдЬ рдХреЛ рд░рд╛рдордмрд╛рдг рдорд╛рдирдХрд░ рдзреЛрдЦрд╛ рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдмрд▓рд┐рджрд╛рди рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдХрдИ рд╡рд┐рд╖рдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрдЯрд┐рд▓ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВред


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ 64-рдмрд┐рдЯ x86 рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдкрд╛рд░рджрд░реНрд╢реА рд╣реЗрд╡реАрдкреЗрдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдИ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рд╢рд╛рд▓рддрд╛ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдЬреИрд╕рд╛ рдХрд┐ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЖрдзреБрдирд┐рдХ рдореЗрдВ рд╣реИред рд▓рд┐рдирдХреНрд╕ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдгред


рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдореЗрдВ рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг рд╕рдВрд▓рдЧреНрди рдХрд░реВрдВрдЧрд╛ред


рдЖрднрд╛рд╕реА рд╕реНрдореГрддрд┐


рдпрджрд┐ рдЖрдк C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ, рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореЗрдореЛрд░реА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрддреЗ (рдкреЙрдЗрдВрдЯрд░ рдорд╛рди) рд╣реЛрддреЗ рд╣реИрдВред


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпреЗ рдкрддреЗ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдореЗрдореЛрд░реА рдореЗрдВ рднреМрддрд┐рдХ рдкрддреЗ (рд░реИрдо рдореЗрдВ рдкрддреЗ) рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред рд╡реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рдкрддреЗ рд╣реИрдВред рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ MMU (рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рдпреВрдирд┐рдЯ) рдореЙрдбреНрдпреВрд▓ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд░реНрдиреЗрд▓ рдореИрдк рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреЛ рдПрдХ рднреМрддрд┐рдХ рд╕реНрдерд╛рди рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА:


  • рдкреНрд░рджрд░реНрд╢рди (рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП);
  • рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдЕрд▓рдЧрд╛рд╡, рдЕрд░реНрдерд╛рдд рдХреЛрдИ рднреА рдХрд╛рд░реНрдпрдХреНрд░рдо рджреВрд╕рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕реНрдореГрддрд┐ рд╕реЗ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИред

рдкреЗрдЬ рдХреНрдпрд╛ рд╣реИрдВ?


рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреЛ рдкреЗрдЬреЛрдВ рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреЗрдЬ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдореБрдЦреНрдп рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рдПрдХ рднреМрддрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╕реМрдВрдкреЗ рдЧрдП рдкрддреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдбред


рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдбреАрд▓ рдХрд┐рдП рдЧрдП рдЬреНрдпрд╛рджрд╛рддрд░ рдкреЗрдЬ рд░реИрдо рдпрд╛ рд╕реНрд╡реИрдк рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рдпрд╛рдиреА рд╡реЗ рдЖрдкрдХреА рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдпрд╛ рдПрд╕рдПрд╕рдбреА рдкрд░ рд╕реНрдЯреЛрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХрд░реНрдиреЗрд▓ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рднреМрддрд┐рдХ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╕реНрдкреВрдлрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреГрд╖реНрда рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрд░реНрдиреЗрд▓ рдЙрд╕ рдереНрд░реЗрдб рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдЬреЛ рдореЗрдореЛрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдкреЗрдЬ рдХреЛ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ / рдПрд╕рдПрд╕рдбреА рд╕реЗ рд░реИрдо рдореЗрдВ рдкрдврд╝рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдереНрд░реЗрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред


рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ / SSD рд╕реЗ рд╕реАрдзреЗ рдкрдврд╝рд╛ рдЬрд╛рдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЖрдХрд╛рд░ 4096 рдмрд╛рдЗрдЯреНрд╕ рд╣реИред рд╡рд┐рд╢рд╛рд▓рдХрд╛рдп рдЖрдХрд╛рд░ рдореЗрдВ 2 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╣реИрдВред


рд╕рд╣рдпреЛрдЧреА рдЕрдиреБрд╡рд╛рдж рдмрдлрд░ (TLB)


рдЬрдм рдХреЛрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рд╕реА рдореЗрдореЛрд░реА рдкреЗрдЬ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреЗрдВрджреНрд░реАрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд┐рд╕ рднреМрддрд┐рдХ рдкреЗрдЬ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛ рд╣реИ (рдпрд╛рдиреА, рд╡рд░реНрдЪреБрдЕрд▓ рдкреЗрдЬ рдореИрдк рд╣реИ)ред


рдХреЛрд░ рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ (рдкреЗрдЬ рдЯреЗрдмрд▓) рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдЗрд╕ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╡рд░реНрдЪреБрдЕрд▓ рдкрддреЗ рдХреЛ рднреМрддрд┐рдХ рдкрддреЗ рдкрд░ рдореИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреЗрдЬ рдЯреЗрдмрд▓ рдмрд▓реНрдХрд┐ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдЪрд▓рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╣рд░ рдмрд╛рд░ рдкреВрд░реА рдбрд╛рдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдмрд╛рд░ рдореЗрдореЛрд░реА рдПрдХреНрд╕реЗрд╕ рд╣реЛ рдЬрд╛рддреА рд╣реИред


рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд╛рд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдПрдХ рдЯреАрдПрд▓рдмреА рд╣реИ рдЬреЛ рдЖрднрд╛рд╕реА рдФрд░ рднреМрддрд┐рдХ рдкрддреЗ рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╣рдореЗрдВ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕ рдкрд░ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд╛рдж рдХреЗ рд╕рднреА рдкреГрд╖реНрда рдХреЙрд▓ TLB рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рддреНрд╡рд░рд┐рдд рд╕рдВрдЪрд╛рд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред


рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдХ рднреМрддрд┐рдХ рдЙрдкрдХрд░рдг (рдЬреЛ рдЗрд╕реЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рддреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИ) рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛ рд╕реАрдорд┐рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЯреАрдПрд▓рдмреА рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдореИрдкрд┐рдВрдЧ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрд╣реБрдд рдзреАрдорд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред


рд╡рд┐рд╢рд╛рд▓ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВ


рддреЛ рд╣рдо рдЯреАрдПрд▓рдмреА рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? (рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЕрднреА рднреА рдЙрд╕реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред


рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╡рд┐рд╢рд╛рд▓рдХрд╛рдп рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред 4096 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдмрдЬрд╛рдп, рдЯреАрдПрд▓рдмреА рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЯреАрдПрд▓рдмреА рдореЗрдВ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЕрдм 2 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд╕рдХрддреА рд╣реИред рд╣рдо рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рдЯреАрдПрд▓рдмреА рдореЗрдВ 512 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╣реИрдВ, рдпрд╣рд╛рдБ рдмрд┐рдирд╛ рд╣реЗрдЬрдкреЗрдЬрд╝ рдХреЗ рд╣рдо рдореИрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 4096 bтЛЕ512=2 MB 

рдЬрдмрдХрд┐ рдЙрдирдХреЗ рд╕рд╛рде рд╣рдо рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 2 MBтЛЕ512=1 GB 

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ Hugepages рдХрдорд╛рд▓ рд╣реИред рд╡реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд┐рдирд╛ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрд░рдХреНрд╖рдг рд╣реИрдВред


рд╡рд┐рд╢рд╛рд▓ рдиреЗ рд╕реНрдкреВрдлрд┐рдВрдЧ рдХреА


рдХрд░реНрдиреЗрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рднреМрддрд┐рдХ рдореЗрдореЛрд░реА (RAM) рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рддреЛ рдХрд░реНрдиреЗрд▓ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП RAM рдХреЗ рдХреБрдЫ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг (рдХрдо рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ) рдкреГрд╖реНрдареЛрдВ рдХреЛ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред
рдЕрд╕рд▓ рдореЗрдВ, рд╡рд╣реА Hugepages рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрд░реНрдиреЗрд▓ рдХреЗрд╡рд▓ рд╕рдВрдкреВрд░реНрдг рдкреГрд╖реНрдареЛрдВ рдХреЛ рд╕реНрд╡реИрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдмрд╛рдЗрдЯреНрд╕ рдХреЛред


рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ:


 char* mymemory = malloc(2*1024*1024); //     Hugepage! //  mymemory -  //    , //      mymemory // ... //       putchar(mymemory[0]); 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХрд░реНрдиреЗрд▓ рдХреЛ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ / SSD рд╕реЗ 2 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП (рд░реАрдб) рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдмрд╕ рдЖрдкрдХреЛ рдПрдХ рдмрд╛рдЗрдЯ рдкрдврд╝рдирд╛ рд╣реИред рдирд┐рдпрдорд┐рдд рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ 4096 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ / рдПрд╕рдПрд╕рдбреА рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдкреГрд╖реНрда рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкрдарди рддрднреА рддреЗрдЬ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдЖрдкрдХреЛ рд╕рдВрдкреВрд░реНрдг рдкреГрд╖реНрда рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдореЗрдореЛрд░реА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рд┐рд░реНрдл рдПрдХ-рджреЛ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯреНрд╕ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдпрдорд┐рдд рдкреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬ рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред


рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЗрдореЛрд░реА рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╡рд┐рд╢рд╛рд▓рддрд╛ рдЖрдкрдХреА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рдПрдЧреАред рдлрд┐рд░ рднреА, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдФрд░ рд╕рд╛рд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдирд╣реАрдВ) рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди


рдпрджрд┐ рдЖрдк C рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк malloc() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдвреЗрд░ рд╕реЗ рд╕реНрдореГрддрд┐ рдХреА рдЫреЛрдЯреА (рдпрд╛ рд▓рдЧрднрдЧ рдордирдорд╛рдиреА рд░реВрдк рд╕реЗ рдмрдбрд╝реА) рдорд╛рддреНрд░рд╛ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЛ 30 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 char* mymemory = malloc(30); 

рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ 30 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдореЛрд░реА рдХрд╛ "рдЕрдиреБрд░реЛрдз" рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреЛ рдкреЙрдЗрдВрдЯрд░ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ malloc () рд╕рд┐рд░реНрдл рдПрдХ рд╕реА рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдореЗрдореЛрд░реА рдпрд╛ рдирд┐: рд╢реБрд▓реНрдХ рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рдЕрдВрджрд░ рд╕реЗ рдмреНрд░рдХ рдФрд░ sbrk рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рддреНрдпреЗрдХ рдЖрд╡рдВрдЯрди рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЕрдХреНрд╖рдо рд╣реИ; рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдореЗрдореЛрд░реА рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдореБрдХреНрдд (free()) рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред malloc() рдореБрдХреНрдд рдореЗрдореЛрд░реА рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред


рдЙрд╕реА рд╕рдордп, рд╕рдм рдХреБрдЫ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреЛ рдХреНрдпреЛрдВ рдЪрд┐рдВрддрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ free() рдХреЙрд▓ free() рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рддреБрд░рдВрдд рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА ред


рд╕реНрдореГрддрд┐ рд╡рд┐рдЦрдВрдбрди рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬ рд╣реЛрддреА рд╣реИред рдЪрд░рдо рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдРрд╕реЗ рдвреЗрд░ рдЦрдВрдб рд╣реЛрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдмреАрдЪ рдореЗрдВ рд╕рдм рдХреБрдЫ рдореБрдХреНрдд рд╣реЛ рдЧрдпрд╛ рдерд╛ (free()) ред


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реНрдореГрддрд┐ рд╡рд┐рдЦрдВрдбрди рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╡рд┐рд╖рдп рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡ рднреА рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореЗрдореЛрд░реА рдлрд╝реНрд░реЗрдЧреНрдореЗрдВрдЯреЗрд╢рди рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрджрд┐ рд╡рд┐рдЦрдВрдбрди рдвреЗрд░ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд┐рд╢рд╛рд▓рддрд╛ рдХреЗрд╡рд▓ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддреА рд╣реИред


рд╡рд┐рд╢рд╛рд▓рддрд╛ рдХрд╛ рдХрд╕реНрдЯрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧ


рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдиреЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХреМрди рд╕реЗ рд╣рд┐рд╕реНрд╕реЗ рд╡рд┐рд╢рд╛рд▓рдХрд╛рдп рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреМрди рд╕реЗ рдирд╣реАрдВред рддреЛ рдХреНрдпрд╛ рд╡рд┐рд╢рд╛рд▓рдХреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?


рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдк madvise() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдореЗрдореЛрд░реА рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд╛рд▓реАрдХрд░рдг рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрд▓реЗрдЦ рдХреЗ рдЖрд░рдВрдн рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдбрд╡рд┐рдЬрд╝ () рдореЛрдб рдореЗрдВ рд╣реИрд╡реАрдкреЗрдЬрд╝ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред


рдлрд┐рд░, madvise() рдХрд╛ рдЙрдкрдпреЛрдЧ madvise() рдХрд░реНрдиреЗрд▓ рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╢рд╛рд▓рдХрд╛рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдБ рдХрд░рдирд╛ рд╣реИред


 #include <sys/mman.h> //    ,    size_t size = 256*1024*1024; char* mymemory = malloc(size); //   hugepagesтАж madvise(mymemory, size, MADV_HUGEPAGE); // тАж    madvise(mymemory, size, MADV_HUGEPAGE | MADV_SEQUENTIAL) 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд░реНрдиреЗрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рджрд┐рдП рдЧрдП рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рд╣реИрд╡реАрдкреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред


рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдФрд░ madvise() рдкрд░ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдореИрдбрд╡рд┐рдЬрд╝ рдореИрдирдкреЗрдЬ рджреЗрдЦреЗрдВ, рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЦрдбрд╝реА рд╕реАрдЦрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рдЧрд┐рдирдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдИ рд╣рдлреНрддреЛрдВ рддрдХ рдкрдврд╝рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреА рддреИрдпрд╛рд░реА рдХрд░реЗрдВред


рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ?





рдПрдХ рд╕рд╡рд╛рд▓ рд╣реИ? рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ!

Source: https://habr.com/ru/post/hi460403/


All Articles