注意
本文档适用于 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 命名空间的内存 Blobcoll_map
: collections_mapcsum_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. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.