netty的buffer引入了缓冲池。该缓冲池实现使用了jemalloc的思想。为了看懂这块代码学写了内容分配的知识。这里讲的内存分配是堆的内存分配,其他内容本文不会涉及。内存分配是面向虚拟内存的而言的,以页为单位进行管理的,页的大小一般为4kb,当在堆里创建一个对象时(小于4kb),会分配一个页,...
分类:
其他好文 时间:
2015-01-27 21:39:38
阅读次数:
227
今天在安装mariaDB的时候发现编译一直提示一个错误/usr/bin/ld:cannotfind-ljemalloc_pic后来发现是因为没有用这个jemalloc可能是mariaDB数据库默认就使用这种方式管理多线程内存分配一、首先这个jemalloc是什么jemalloc源于JasonEvans2006年在BSDcanconference发表的论文:《A..
分类:
其他好文 时间:
2015-01-05 13:14:28
阅读次数:
307
说关于分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。
而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。...
分类:
其他好文 时间:
2014-12-19 12:14:00
阅读次数:
134
Redis默认使用jemalloc分配内存,根据fast'14的最佳论文的说法,当遇到变长key-value负载时,会出现碎片问题:内存利用率低,实际分配的内存比所需要的内存多。因此我用YCSB对Redis的内存进行了测试。
实验的第1阶段:向Redis插入100万条记录,key为20字节,value为100字节,皆为定长,理论上的有效数据大约是120MB。阶段2:产生90万个update请...
分类:
其他好文 时间:
2014-10-29 17:05:59
阅读次数:
212
redis安装过程:正常前面3步应该没有问题,主要的问题是执行make的时候,出现了异常。
异常一:
make[2]:cc:Commandnotfound
异常原因:没有安装gcc
解决方案:yuminstallgcc-c++
异常二:
zmalloc.h:51:31:error:jemalloc/jemalloc.h:Nosuchfileordirectory
异常原因:一些编..
分类:
其他好文 时间:
2014-10-27 19:40:46
阅读次数:
172
由于水平有限,以下仅仅是个人的一些心得,希望对新人有一点参考作用。另外由于时间关系,写得有点杂,有些点可能并不是跟服务器编程强相关的。
性能相关
1. 应用各种pool。
a) Mempool
比如为了提高内存分配效率,可以使用Mem pool。当对应的场景简单时,可以自己定制私有的内存池管理。当内存池设计相对复杂的时候,可以考虑直接使用jemalloc、tcmallo...
分类:
其他好文 时间:
2014-09-06 09:48:53
阅读次数:
299
ruby_xmalloc ruby_xfree
偶然发现这几个函数, 主要作用是在ruby上声明内存, 而且效率非常的快....
然后踩了一个坑.
当某个客户端的包在服务器累计超过貌似是4.5w * 20 左右个包
就会出现内存申请失败!! 我
一开始记得我全部是用的jemalloc.结果发现用的是ruby的堆...
我就艹了. 第一步才知道有限制, 第二才发现没有用jemal...
分类:
其他好文 时间:
2014-08-26 17:22:18
阅读次数:
151
一,redis内存管理介绍
redis是一个基于内存的key-value的数据库,其内存管理是非常重要的,为了屏蔽不同平台之间的差异,以及统计内存占用量等,redis对内存分配函数进行了一层封装,
程序中统一使用zmalloc,zfree一系列函数,其对应的源码在src/zmalloc.h和src/zmalloc.c
两个文件中。
二,redis内存管理源码分析
redis封装是为了...
分类:
其他好文 时间:
2014-05-22 18:57:08
阅读次数:
499