`
mryufeng
  • 浏览: 982217 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

erts运行期内存使用情况查看

阅读更多
翻erlang的代码发现erlang对memory的管理非常重视 内置了多种内存allocator:
  • B: binary_alloc
  • D: std_alloc
  • E: ets_alloc
  • F: fix_alloc
  • H: eheap_alloc
  • L: ll_alloc
  • M: mseg_alloc
  • S: sl_alloc
  • T: temp_alloc
  • Y: sys_alloc
多种分配策略:
    1。 Best fit
    2 。 Address order best fit
    3. Good fit
   4. A fit

还要一个erl_mtrace 模块专门收集erts允许期间的内存使用情况 然后通过tcp socket发送到 emem 这个程序中打印到 tty让人观察系统的情况。

emem在lib/tools/目录下 make install的时候默认没有安装。

启动 ./lib/tools/bin/i686-pc-linux-gnu/emem -p 1234

然后用erl -sname foo  +Mit ip:1234就可以观察erlang的内存运作了.

注意erts的文档里面写:
+Mit X
<!----> Reserved for future use. Do not use this flag.
是属于未公开的 。
分享到:
评论
6 楼 jigsaw 2007-08-02  
我错了 gnumalloc行的通

ptmalloc3的效果则更好(不负责任的说,跟gnumalloc比,节省90%的内存)
http://www.malloc.de/en/

而ptmalloc3也早就在里面glibc了 只不过俺一直用freebsd4.x 不知道这个事实
5 楼 jigsaw 2007-08-02  
对 我就是这个意思 绕过glibc
用什么库代替它 可以使得user space的内存管理有能力把内存还给kernel
当然 我自己做是做不出来的 这里必须考虑到mem/CPU使用的平衡
我说的上下文不是erlang
4 楼 mryufeng 2007-08-02  
这个是glibc实现的malloc free的问题  和erlang没有关系 不过erlang可以用自己的malloc实现 elib_malloc
3 楼 jigsaw 2007-08-02  
user space的内存管理好像比kernel里的还头疼---我是说freebsd5.0以前的OS

我现在也有个mem allocator的问题
因为用的还是较老的系统 free 没办法把内存还给kernel
app是个典型的proxy类的service 里面无数的malloc/free
跑久了之后active mem维持在95%

不知道mryufeng有无碰到此问题,是怎么解决的? (gnumalloc无效)

2 楼 mryufeng 2007-07-31  
俺以前也是想法设法作memory allocator, 所以知道作这个的艰辛和对系统性能提高的影响。
1 楼 pi1ot 2007-07-31  
这位老兄研究的不浅。

相关推荐

    Erlang深度分析

    ##### 3.1 Erlang的erts运行期内存使用情况查看 ERTS是Erlang运行时系统,了解ERTS在运行期内存使用情况是优化Erlang应用的关键。这包括了解ETS(Erlang Term Storage)和Dets(Disk ETS)的使用,以及如何监控和...

    erlang 深度分析

    ERTS运行期内存使用情况查看 - **ERTS**: Erlang运行时系统,负责Erlang程序的执行。 - **工具**: 使用`erl`启动器时带上`-s`参数启动特定的应用或模块来查看内存使用情况。 - **指标**: - **Total**: 总内存使用...

    erts erlang api

    ### Erlang运行时系统应用(ERTS):匹配规格与API概述 #### 一、Erlang运行时系统应用(ERTS) Erlang运行时系统应用(ERTS)是Erlang语言的核心组成部分之一,它负责管理和执行Erlang程序。ERTS包括了进程调度、...

    Unit 1.2 - UML_ERTS_

    ERTS通常指的是“Erlang运行时系统”(Erlang Runtime System),这是由Ericsson公司开发的一个并发、分布式、容错的编程环境,主要用于构建高可用性和容错性的系统。Erlang语言与ERTS相结合,特别适合实时系统、大...

    erlang-erts-19.3.6.4-1.el7.x86_64.rpm

    erlang-erts-19.3.6.4-1.el7.x86_64.rpm

    Unit 1.3 - Mode train controller_unless71d_ERTS_train_

    在ERTS系统中,其目标是实现欧洲范围内的铁路运营标准化和自动化,通过先进的通信和信号技术提高列车运行的安全性和效率。"unless71d"可能是系统中的一个特定条件或者逻辑判断,可能涉及到当满足特定条件时,列车...

    Unit 1.5 - CPU-IO _ Interrupt_western7mc_ERTS_

    标题 "Unit 1.5 - CPU-IO _ Interrupt_western7mc_ERTS_" 提到了几个关键概念:CPU、I/O(输入/输出)、中断和西部数据的ERTS(可能是Extended Real-Time System)。这些是计算机系统中的核心要素,尤其是对于实时...

    inside Erlang VM3

    - **内存管理**:ERTS使用独立的内存池来提高内存分配效率,并允许用户进行细粒度调整。 - **锁机制**:ERTS具备高效的锁和同步机制,保证了多进程之间的安全交互。 #### Erlang集群设施 - **Net_kernel和EPMD**:...

    2021-2022年收藏的精品资料万宗祥:ERTS急救培训项目运营方案.docx

    【ERTS急救培训项目运营方案】是针对一个旨在引入并推广欧洲紧急救援技术系统(ERTS)在中国的公众急救培训项目。该项目的核心是提供一套专业级的急救培训课程,目标客户是非医疗背景的普通市民。以下是对项目背景、...

    theBeamBook:Erlang运行时系统ERTS和虚拟机BEAM的描述

    BEAM书这是尝试记录Erlang运行时系统和称为BEAM的Erlang虚拟机的内部信息。 您可以从以PDF格式阅读或下载该书,也可以从阅读或下载。 这本书是用AsciiDoc编写的,大部分内容都可以在浏览器中直接从GitHub上的源代码...

    erlang深度分析.pdf

    这涉及到监控ERTS的运行时参数,例如ETS(Erlang Term Storage)使用的内存、进程的数量和状态,以及SMP(对称多处理)支持程度等。 #### 3. 编码最佳实践 在Erlang开发中,最佳实践包括使用模式匹配、递归、消息...

    drermahgerd:ERMAHGERD ERTS DRERPERL!

    ERMAHGERD ERTS DRERPERL! 概括 这个Drupal模块将完整页面和预告片查看模式下的所有节点标题和节点主体转换为。 依存关系 启用Dom扩展PHP 5.4+。 模块。 模块。 库。 安装 下载并启用和模块 下载库的版本,并将...

    cache_tab:内存缓存Erlang Elixir库

    可以将高速缓存对象的生存期和高速缓存的最大大小定义为表参数,以限制内存中表的大小。 建造 cache_tab应用程序可以按以下方式构建: make 它是与钢筋兼容的OTP应用程序。 或者,您可以使用钢筋来构建它: ...

    emqx-windows10-v3.2.2.zip

    - **erts-10.3**:这是Erlang Run-Time System的一个版本,用于运行EMQ X Broker的Erlang虚拟机。 - **data**:这个目录可能存储持久化的数据,例如MQTT客户端的会话信息和订阅信息。 - **releases**:包含了不同...

    erlang闪电入门

    另外,`m().`命令能够展示当前shell中所有已载入的模块,`memory().`展示ERTS(Erlang运行时系统)的内存使用情况,`i().`显示所有已运行的进程列表。 Escript是Erlang提供的一个工具,可以将Erlang脚本或BEAM字节...

    Erlang程序设计中文版(完整书签).pdf

    6. Erlang运行时系统(ERTS):ERTS为Erlang程序提供执行环境,包括垃圾回收、线程管理、进程调度等底层服务。它经过优化,可以在多核处理器上有效运行。 7. OTP框架:开放电信平台(Open Telecom Platform)是一个...

    erlang安装帮助包

    在没有网络连接的情况下,离线安装Erlang可能会遇到一些挑战,但通过使用提供的压缩包,我们可以遵循以下步骤进行安装。 首先,我们需要了解Erlang的基本结构和依赖。Erlang的安装通常包括运行时系统(erts)和各种...

    otp_win64 window10安装包

    在OTP中,ERTS是Erlang语言的运行基础,它提供了进程模型、内存管理、垃圾回收以及与其他系统交互的能力。它支持热代码升级,使得在运行时可以更新应用程序代码,而无需中断服务,这对于维护大型分布式系统来说是...

    Symbian的讲义

    在其之上,有若干个服务层,包括EPOC运行时环境(ERTS)、本地应用程序接口(LAPI)和用户界面框架。这些服务层为开发者提供了丰富的接口,使得开发者可以构建各种各样的应用。 二、Symbian编程基础 Symbian编程...

Global site tag (gtag.js) - Google Analytics