我是靠谱客的博主 难过绿草,最近开发中收集的这篇文章主要介绍解析曲线 资源占用之内存管理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

本文主要是从的角度来谈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<

最后

以上就是难过绿草为你收集整理的解析曲线 资源占用之内存管理的全部内容,希望文章能够帮你解决解析曲线 资源占用之内存管理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部