注意

本文档适用于 Ceph 的开发版本。

什么是内存池?

内存池(mempool)是一种跟踪内存消耗的方法。内存池代表 C++ 类和容器的内存消耗,用于以低开销评估内存泄漏和内存使用情况的其他见解。每个内存池跟踪它所包含的字节数和项目数。内存池是静态声明的,用于在 BlueStore 中识别与内存相关的检查。

我们可以跟踪的一些常见内存池

  • bloom_filter: 跟踪缓存池中已有的对象,以确定池中正在访问哪些对象

  • bluestore_alloc: 记录分配器完成的实际分配

  • bluestore_inline_bl: 衡量内联缓冲区的编码长度

  • bluestore_fsck: BlueStore 元数据的文件系统一致性检查;有助于在 OSD 修复期间进行跟踪和调试

  • bluestore_txc: 记录已提交事务计数器

  • bluestore_writing_deferred: 衡量延迟的小型写入,即首先写入 RocksDB WAL,然后刷新到磁盘

  • bluestore_writing: 记录正在进行的写入缓冲区

  • bluefs: 类似文件系统的接口;提供足够的功能,允许 RocksDB 存储其“文件”并与 BlueStore 共享相同的原始设备

  • buffer_anon: 存储任意缓冲区数据

  • buffer_meta: 与 buffer anon 缓冲区相关的所有元数据

  • bluestore_cache_data: 用于写入和延迟写入的内存池

  • bluestore_cache_onode: BlueStore 缓存中的对象节点(onode)元数据

  • bluestore_cache_meta: 存储在 PREFIX_OBJ 下的键

  • bluestore_cache_other: 目前记录

    • map_t: 用于跟踪 SharedBlob 磁盘上的原始范围以及具有 blob 命名空间的内存中 Blob

    • coll_map: collections_map

    • csum_data: 校验和数据

  • bluestore_cache_buffer: 记录缓冲区缓存分片

  • bluestore_extent: 逻辑(以及物理)范围,指向 blob 的某个部分

  • bluestore_blob: 与缓存缓冲区关联的内存中 blob 元数据

  • bluestore_shared_blob: 内存中共享 blob 状态;存储对其所属集合的引用(包括缓存缓冲区)

  • bluefs_file_reader: 记录 bluefs 文件读取器缓冲区

  • bluefs_file_writer: 记录 bluefs 文件写入器缓冲区

检查内存池使用情况

查看这些内存池中 BlueStore 内存分配的命令

$ ceph daemon osd.NNN dump_mempools

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入