解析曲线 资源占用之内存管理

前言

本文主要是从的角度来谈Curve的内存管理,不需要开发者开发中的一些内存管理理论,目的是我们在软件过程中对Linux内存管理的、内存问题分析的分享给曲线实践过程中发生了两次相关的问题。

  • chunkserver 上内存无法释放

  • mds 出现缓慢增长的现象

大部分开发阶段的内存占用很严重,发现阶段大压力稳定测试(7*7*24 小时以上)、测试异常通常在运行时比较容易出现问题,当然这还需要我们在测试阶段突然出现,除了关注 io 相关的测试指标外,监视服务端内存/CPU/网卡等资源使用情况以及采集的指标是否符合条件。比如上面的问题md缓慢增长 ,如果只关注是否正常,在测试阶段是无法发现的。内存问题出现之后也不容易,尤其是在大型软件的情况下。

本文主要是从的角度来谈Curve的内存管理,不需要开发者开发中的一些内存管理理论,目的是我们在软件过程中对Linux内存管理、内存问题分析的一些看法分享给大家。本文会从以下几个方面展开:

  • Curve软件说明计算分布。

  • 内存策略。说明分配器的必要性,以及需要解决分配的问题和具有的特点,通过示例说明包括一个分配器的内存管理方法。

  • Curve 的内存管理。介绍当前 Curve 软件内存分配器的选择及原因。

Curve是区块链存储云计算基金会)沙盒,由易建网的项目(CNCF、易维、云的存储运营系统)组成,由块Curve和云文件存储运营系统两部分组成。

2

地理分布

在说计算管理之前,首先简要介绍下分配的相关知识。物理内存是真实的就是内存条;虚拟内存存在,为进程隐藏了物理内存概念,为进程提供了方便的接口和复杂性需要抽象虚拟内存?虚拟内存和物理内存是如何映射管理层的?物理处理讨论范围是什么?这些虚拟内存的问题不在此处。

Linux 为每个进程维护了一个单独的虚拟地址空间,包括两个部分进程虚拟存储器(用户空间)和内核虚拟存储器(内核空间),本文主要讨论进程可操作的用户空间,形式如下图。

现在我们使用我们 

pmap 查看运行中的curve-mds虚拟空间的分发。

pmap 查看用于进程的内存画面信息,该命令读取 

/proc/[pid]/maps 中的信息。

// pmap -X {进程id} 查看进程内存分布sudo pmap -X 2804620
// pmap 获取的 curve-mds 内存分布有很多项Address Perm   Offset Device    Inode    Size   Rss   Pss Referenced Anonymous ShmemPmdMapped Shared_Hugetlb Private_Hugetlb Swap SwapPss Locked Mapping
// 为了方便展示这里把从 Pss 后面的数值删除了, 中间部分地址做了省略2804620:   /usr/bin/curve-mds -confPath=/etc/curve/mds.conf -mdsAddr=127.0.0.1:6666 -log_dir=/data/log/curve/mds -graceful_quit_on_sigterm=true -stderrthreshold=3         Address Perm   Offset Device    Inode    Size   Rss   Pss   Mapping      c000000000 rw-p 00000000  00:00        0   65536  1852  1852      559f0e2b9000 r-xp 00000000  41:42 37763836    9112  6296  6296   curve-mds    559f0eb9f000 r--p 008e5000  41:42 37763836     136   136   136   curve-mds    559f0ebc1000 rw-p 00907000  41:42 37763836       4     4     4   curve-mds    559f0ebc2000 rw-p 00000000  00:00        0   10040  4244  4244    559f1110a000 rw-p 00000000  00:00        0    2912  2596  2596   [heap]    7f6124000000 rw-p 00000000  00:00        0     156   156   156    7f6124027000 ---p 00000000  00:00        0   65380     0     0    7f612b7ff000 ---p 00000000  00:00        0       4     0     0    7f612b800000 rw-p 00000000  00:00        0    8192     8     8    7f612c000000 rw-p 00000000  00:00        0     132     4     4    7f612c021000 ---p 00000000  00:00        0   65404     0     0    .....    7f6188cff000 ---p 0026c000  41:42 37750237    2044     0     0    7f61895b7000 r-xp 00000000  41:42 50201214      96    96     0    libpthread-2.24.so    7f61895cf000 ---p 00018000  41:42 50201214    2044     0     0    libpthread-2.24.so    7f61897ce000 r--p 00017000  41:42 50201214       4     4     4    libpthread-2.24.so    7f61897cf000 rw-p 00018000  41:42 50201214       4     4     4    libpthread-2.24.so    7f61897d0000 rw-p 00000000  00:00        0      16     4     4        7f61897d4000 r-xp 00000000  41:42 50200647      16    16     0    libuuid.so.1.3.0    7f61897d8000 ---p 00004000  41:42 50200647    2044     0     0    libuuid.so.1.3.0    7f61899d7000 r--p 00003000  41:42 50200647       4     4     4    libuuid.so.1.3.0    7f61899d8000 rw-p 00004000  41:42 50200647       4     4     4    libuuid.so.1.3.0    7f61899d9000 r-xp 00000000  41:42 37617895    9672  8904  8904    libetcdclient.so    7f618a34b000 ---p 00972000  41:42 37617895    2048     0     0    libetcdclient.so    7f618a54b000 r--p 00972000  41:42 37617895    6556  5664  5664    libetcdclient.so    7f618abb2000 rw-p 00fd9000  41:42 37617895     292   252   252    libetcdclient.so<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值