注意

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

mempool是什么?

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

我们可以跟踪的一些常见mempool

  • 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: 与缓冲区匿名缓冲区相关的所有元数据

  • 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 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.