谷歌发布了新版本的TCMalloc内存分配系统

谷歌 提交 新版内存分配系统 TCMalloc,在许多 Google 内部项目中使用。 TCMalloc 代码是用 C++ 编写的 分发者 根据 Apache 许可证。 要工作,您需要一个支持 C++17(C++ 语言)和 C11(C 语言)的编译器(gcc 9.2+ 或 clang 9.0+)。 来自操作系统 由...支持 仅限 Linux(x86、PPC)。

值得注意的是,自 2005 年以来,出现了 tcmalloc 的另一种变体,它 提供的 包含在包装中 性能工具 (谷歌性能工具)。 那是两个 不同 具有共同根源的项目。 新的TCMalloc更多的是对谷歌当前内部开发进行开源的尝试,但它的目标还不是提供稳定的ABI和对广泛操作系统的支持。 gperftools 的旧 tcmalloc 将继续保留,但新功能(例如缓存绑定到 CPU)不打算转移给它。

TCMalloc 包括 C 函数 malloc() 和 C++“new”运算符的实现,针对高性能和多线程应用程序的使用进行了优化。 TCMalloc 还提供自省和分析功能,允许应用程序获取有关堆上内存使用情况的详细信息。 该代码使用基于 C++ 语言现代功能的优化,例如
删除运算符与 表示尺寸 来自 C++14 和内存分配 调平 从 C++17 开始。

TCMalloc 由...组成 由三个组件组成:一个带有缓存的前端,用于快速分配和释放内存,一个用于填充前端缓存的层,以及一个执行从操作系统接收内存、管理大块未使用内存和返回多余内存等操作的后端返回操作系统。 缓存没有锁,并且与 CPU 核心绑定工作,但如果操作系统内核中没有必要的功能,则回退到基于线程的缓存模型(将缓存绑定到 CPU 仅适用于最新的 Linux 内核)。 后端支持使用常规内存页面和增加大小的页面(大页)。

 谷歌发布了新版本的TCMalloc内存分配系统

TCMalloc的主要特点:

  • 使用缓存快速分配和释放内存。 大多数内存分配不需要锁定,这为高并发、多线程应用程序提供了良好的可扩展性;
  • 灵活的内存使用,允许您将释放的内存区域重新用于不同大小的对象或将内存返回给操作系统;
  • 通过分配相同大小的对象页面并有效地表示小对象,降低每个对象的开销。 支持大小为 4KiB、8KiB、32KiB 和 256KiB 的逻辑页。 例如,当请求512字节的内存块时,将为4字节的对象分配整个512KiB页面,可以容纳8个这样的对象;
  • 通过确定缓存大小和返回操作系统的内存强度参数,可以进行微调;
  • 提供详细信息以分析应用程序内存使用情况。

来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster