Google publicou unha nova versión do sistema de asignación de memoria TCMalloc

Google presentado nova versión do sistema de distribución de memoria TCMalloc, que se usa en moitos proxectos internos de Google. O código TCMalloc está escrito en C++ e distribuído por baixo a licenza Apache. Para funcionar, necesitas un compilador que admita C++17 para a linguaxe C++ e C11 para a linguaxe C (gcc 9.2+ ou clang 9.0+). Desde sistemas operativos apoiado por só Linux (x86, PPC).

Chama a atención que dende 2005 existe outra variante de tcmalloc, que subministrado incluído no paquete gperftools (Google Performance Tools). Son dous diferente proxectos con raíces comúns. O novo TCMalloc é máis un intento de abrir o código aberto dos desenvolvementos internos actuais de Google, pero aínda non ten como obxectivo proporcionar un ABI estable e soporte para unha ampla gama de sistemas operativos. O antigo tcmalloc de gperftools seguirase mantendo, pero non se planea transferirlle novas funcións, como a vinculación da caché á CPU.

TCMalloc inclúe unha implementación da función C malloc() e do operador "new" C++, optimizada para un alto rendemento e uso en aplicacións multiproceso. TCMalloc tamén ofrece capacidades de introspección e creación de perfiles que permiten que unha aplicación obteña información detallada sobre o uso da memoria no montón. O código usa optimizacións baseadas en funcións modernas da linguaxe C++, como
eliminar operador con indicando o tamaño desde C++14 e asignación de memoria con nivelación desde C++17.

TCMalloc consiste en из трёх компонентов: фронтэнда с кэшем для быстрого выделения и освобождения памяти, прослойки для наполнения кэша фронтэнда и бэкенда, выполняющего такие операции, как получение памяти от операционной системы, управления большими кусками неиспользованной памяти и возвращение лишней памяти обратно в ОС. Кэш избавлен от блокировок и работает в привязке к ядрам CPU, но откатывается на модель кэширования в привязке к потокам в случае отсутствия необходимой функциональности в ядре ОС (привязка кэша к CPU работает только в свежих ядрах Linux). Бэкенд поддерживает работу как с обычными страницами памяти, так и со страницами увеличенного размера (hugepage).

 Google publicou unha nova versión do sistema de asignación de memoria TCMalloc

Características principais de TCMalloc:

  • Asignación e desasignación rápidas de memoria mediante caché. A maioría das asignacións de memoria non requiren bloqueo, o que proporciona unha boa escalabilidade para aplicacións multiproceso de alta concorrencia;
  • Uso flexible da memoria, que lle permite reutilizar áreas de memoria liberadas para obxectos de diferentes tamaños ou devolver memoria ao sistema operativo;
  • Baixa sobrecarga por obxecto ao asignar páxinas de obxectos de igual tamaño e representar de forma eficiente obxectos pequenos. Admítense páxinas lóxicas de tamaños 4 KiB, 8 KiB, 32 KiB e 256 KiB. Por exemplo, ao solicitar bloques de 512 bytes de memoria, asignarase unha páxina enteira de 4 KiB para obxectos de 512 bytes, que poden albergar 8 destes obxectos;
  • O axuste fino é posible determinando o tamaño da caché e os parámetros para a intensidade do retorno da memoria ao SO;
  • Ofrece información detallada para analizar o uso da memoria da aplicación.

Fonte: opennet.ru

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster