Google ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° Π½ΠΎΠ² Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° систСмата Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ TCMalloc

Компания Google прСдстави Π½ΠΎΠ²Π° вСрсия Π½Π° систСмата Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° TCMalloc, която сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π½Π° Google. ΠšΠΎΠ΄ΡŠΡ‚ TCMalloc Π΅ написан Π½Π° C++ ΠΈ сС разпространява ΠΏΠΎΠ΄ лицСнция Apache. Π—Π° Ρ€Π°Π±ΠΎΡ‚Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° C++17 Π·Π° Π΅Π·ΠΈΠΊΠ° C++, ΠΈ C11 Π·Π° Π΅Π·ΠΈΠΊΠ° C (gcc 9.2+ ΠΈΠ»ΠΈ clang 9.0+). ΠžΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС само Linux (x86, PPC).

Π—Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π΅, Ρ‡Π΅ ΠΎΡ‚ 2005 Π³ΠΎΠ΄ΠΈΠ½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΎΡ‰Π΅ Π΅Π΄Π½Π° вСрсия Π½Π° tcmalloc, която бСшС Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° gperftools (Google Performance Tools). Π’ΠΎΠ²Π° са Π΄Π²Π° линуксов? ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ ΠΎΠ±Ρ‰ΠΈ ΠΊΠΎΡ€Π΅Π½ΠΈ. Новият TCMalloc Π΅ ΠΏΠΎ-скоро ΠΎΠΏΠΈΡ‚ Π·Π° отварянС Π½Π° ΠΊΠΎΠ΄Π° Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Google, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π΅ Π΅ насочСн към прСдоставянСто Π½Π° стабилСн ABI ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΡˆΠΈΡ€ΠΎΠΊ ΡΠΏΠ΅ΠΊΡ‚ΡŠΡ€ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° стария tcmalloc ΠΎΡ‚ gperftools Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ, Π½ΠΎ Π½ΠΎΠ²ΠΈΡ‚Π΅ функционалности, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° кСша към CPU, Π½Π΅ сС ΠΏΠ»Π°Π½ΠΈΡ€Π° Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ прСнСсСни Π² Π½Π΅Π³ΠΎ.

TCMalloc Π²ΠΊΠ»ΡŽΡ‡Π²Π° имплСмСнтация Π½Π° C функцията malloc() ΠΈ C++ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«newΒ», ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π·Π° постиганС Π½Π° висока производитСлност ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΈ прилоТСния. TCMalloc ΡΡŠΡ‰ΠΎ прСдоставя Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° интроспСкция ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π° информация Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π°. Π’ ΠΊΠΎΠ΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, основани Π½Π° ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° C++, ΠΊΠ°Ρ‚ΠΎ
ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° delete с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΡ‚ C++14 ΠΈ задСлянС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ с подравняванС ΠΎΡ‚ C++17.

TCMalloc сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°: Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ с кСш Π·Π° Π±ΡŠΡ€Π·ΠΎ задСлянС ΠΈ освобоТдаванС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚, прослойка Π·Π° запълванС Π½Π° кСша Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄, ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΈΠ·Π»ΠΈΡˆΠ½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ОБ. ΠšΠ΅ΡˆΡŠΡ‚ Π΅ освободСн ΠΎΡ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² ΠΏΡ€ΠΈΠ²Ρ€ΡŠΠ·ΠΊΠ° с ядрата Π½Π° CPU, Π½ΠΎ сС Π²Ρ€ΡŠΡ‰Π° Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π² ΠΏΡ€ΠΈΠ²Ρ€ΡŠΠ·ΠΊΠ° с Π½ΠΈΡˆΠΊΠΈΡ‚Π΅ Π² случай Π½Π° липса Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°Ρ‚Π° функционалност Π² ядрото Π½Π° ОБ (ΠΏΡ€ΠΈΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° кСша към CPU Ρ€Π°Π±ΠΎΡ‚ΠΈ само Π² Π½ΠΎΠ²ΠΈ ядра Π½Π° Linux). Π‘Π΅ΠΊΠ΅Π½Π΄ΡŠΡ‚ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΊΠ°ΠΊΡ‚ΠΎ с ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ страници ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ‚Π°ΠΊΠ° ΠΈ с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈ страници (hugepage).

Google ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° Π½ΠΎΠ² Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° систСмата Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ TCMalloc

Основни характСристики Π½Π° TCMalloc:

  • Π‘ΡŠΡ€Π·ΠΎ задСлянС ΠΈ освобоТдаванС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅. ΠŸΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° задСлянС Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π½Π΅ изискват Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ осигурява Π΄ΠΎΠ±Ρ€Π° мащабируСмост Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΈ прилоТСния с висок ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ Π½Π° изпълнСниС Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅;
  • Π“ΡŠΠ²ΠΊΠ°Π²ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, позволяващо ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° освободСнитС области Π·Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма;
  • Ниски Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ Π·Π° всСки ΠΎΠ±Π΅ΠΊΡ‚ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° задСлянСто Π½Π° страници с Сднакъв Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅ ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡ‚ΠΎ прСдставянС Π½Π° ΠΌΠ°Π»ΠΊΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ. Подобно Π½Π° логичСски страници с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ 4KiB, 8KiB, 32KiB ΠΈ 256KiB. НапримСр, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС поискат Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΎΡ‚ 512 Π±Π°ΠΉΡ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ‰Π΅ бъдС Π·Π°Π΄Π΅Π»Π΅Π½Π° цяла страница ΠΎΡ‚ 4KiB Π·Π° 512-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, Π² която Ρ‰Π΅ сС помСстят 8 Ρ‚Π°ΠΊΠΈΠ²Π° ΠΎΠ±Π΅ΠΊΡ‚Π°;
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½Π° Π΅ ΠΏΡ€Π΅Ρ†ΠΈΠ·Π½Π° настройка Ρ‡Ρ€Π΅Π· опрСдСлСния Π·Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° кСша ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π·Π° интСнзивност Π½Π° Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² ОБ;
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° Π΄Π΅Ρ‚Π°ΠΉΠ»Π½Π° информация Π·Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster