上篇Erlang C1500K长连接推送服务-性能提到:150w连接,使用了23GB内存,每个连接占用15KB,约一半是内核使用。大概分析一下:1. Erlang 节点 12GB,内部因为有内存池碎片问题,实际使用9GB,也就是实际每个进程+Port占用越6K,因为采用hibernate策略,已经....
分类:
其他好文 时间:
2014-11-30 06:40:58
阅读次数:
199
memory pool移植自nginx, windows平台可用本人共研究过两个开源内存池的实现,一是nginx内存管理,二是python中内存的管理。由于python中涉及到对象的管理以及缓存,比较复杂,不适合移植到自己的软件中使用,nginx正好相反,短小精悍,适合添加一些特定的需求进行二次开发...
分类:
其他好文 时间:
2014-11-17 22:36:05
阅读次数:
302
最近在追旧番《STL代码剖析》。真的是很旧很旧的番了,STL在94年开始走入STL,这本书则是2002年出版的,C++03和C++11还不知何在的年代。看完第二章之后合上书,想自己写一个allocator。发现看书过程中自认为“所言极是”的地方,居然根本写不出来。虽然从前也写过内存池 (memp.....
分类:
其他好文 时间:
2014-11-14 17:07:04
阅读次数:
177
1.源代码位置头文件:http://trac.nginx.org/nginx/browser/nginx/src/core/ngx_palloc.h源文件:http://trac.nginx.org/nginx/browser/nginx/src/core/ngx_palloc.c2.数据结构定义先...
分类:
其他好文 时间:
2014-11-12 01:54:38
阅读次数:
166
一个包到从共享内存到GS流程上次说到一个包从共享内存池取到一个包之后放入共享队列中hr = m_spShareMemInter->pushA(sd);看看GS这边是如何取包的主线程创建了一个子线程void GameServer::ProcessThread(){ try { ...
分类:
其他好文 时间:
2014-11-11 22:46:04
阅读次数:
252
今天是一年一度的光棍节,还没有女朋友的程序猿童鞋不妨new一个出来,内存管理一直是C/C++中最棘手的部分,远不止new/delete、malloc/free这么简单。随着代码量的递增,程序结构复杂度的提高。今天我们就一起研究一下以精巧著称的nginx的内存池。...
分类:
其他好文 时间:
2014-11-11 21:13:42
阅读次数:
278
在innodb中实现了自己的内存池系统和内存堆分配系统,在innodb的内存管理系统中,大致分为三个部分:基础的内存块分配管理、内存伙伴分配器和内存堆分配器。innodb定义和实现内存池的主要目的是提供内存的使用率和效率,防止内存碎片和内存分配跟踪和调试。我们先来看看他们的关系和结构。
以下是它的关系结构图:
上图中的:
ut_mem_block块是基础内存管理
Buddy all...
分类:
数据库 时间:
2014-11-10 21:56:42
阅读次数:
400
现在就来看看共享内存的初始化(过程是非常复杂的,也看了好多次)1.内存池(其实这个也是放到共享内存里面){ 其中包括小,中,大三种模式,就以小举个例子 1.是否初始化m_镜像,表示2是否初始化, 2.托管内存队列:就是把shareDataEx类型的对象填充到托管的内存队列中 ...
分类:
其他好文 时间:
2014-11-08 23:36:14
阅读次数:
286
上次说到对于那种有内容的包bool TCPServer::on_receive_data(int channel_id, void* data, int len){ packet pkt; { pkt.data = m_memPool.popPkt(len);//从内存池分...
分类:
其他好文 时间:
2014-11-08 07:03:30
阅读次数:
193
1. 背景1.1. 惊人的性能数据1.2. Netty基础入门2. Netty高性能之道2.1. RPC调用的性能模型分析2.1.1.传统RPC调用性能差的三宗罪2.1.2. 高性能的三个主题2.2. Netty高性能之道2.2.1. 异步非阻塞通信2.2.2. 零拷贝2.2.3. 内存池2.2.4...
分类:
Web程序 时间:
2014-11-07 18:45:00
阅读次数:
438