业务层组包->序列化->(加密或压缩)->发送 收包->解密或解压->反序列化->业务层处理
现代的内存分配算法,需要顾及以下几个特性:
- 缓存命中:现今的计算机体系,优秀的缓存策略对一个系统而言异常重要,一些写的不太注意的分配器,容易忽略该特性,
前分配一块内存,后分配一块内存,大大增加了缓存的失效。
- 总线平衡:大部分缓存管理都是提供 2^n 字节大小的内存机制,并且所分配地址也是以 2^n 字节进行对齐,
比如我们有一个 packfile 对象有400多个字节,将使用 512 字节的缓存分配器,并且按照 512 字节进行对齐, 但是问题在于,大部分时候我们都在访问该对象的头30个字节,因此在 (0-30) % 512 的地方, 也就是在以512字节为分割的缓存线周围集中了大量的压力,在现今的大部分普通的缓存芯片上将出现总线失衡 bus overbalance。
- 页面归还:何时向系统请求页面,何时归还系统页面,很多分配器只向系统不停的申请页面,却并不考虑提供保证能够正常不断的归还系统页面的机制。
- 多核优化:尽管多核技术现在才逐渐在PC上推广,但我们的服务器很早就已经开始使用双核或者四核的架构,
分配器如何尽量避免在不同核间产生的等待,是分配器效率优化的一个前提。