分配器 要求 性能指标

一、显式使用分配器的使用要求
1.1 每个free使用都必须对应一个已分配块(malloc),这个块产生于以前的malloc的分配请求,所以分配器必须先进行分配后进行释放。
1.2 立即响应请求:当有应用申请分配请求的时候,分配器应该理解相应分配请求,避免延迟请求的执行。
1.3 只使用堆:为了分配器的扩展性,分配器分配的动态存储结构必须保存在堆上。
1.4 对齐块: 分配器分配的块必须对齐,使它们可以保存任何数据类型,这意味着分配器返回的是8字节边界对齐(及时分配7字节也为自动分配8字节)。
1.5 已分配块不可修改: 分配器只可操作和改变空闲块,已分配块不可修改大小,不可移动块只能通过free释放后再分配操作。
结合以上限制条件,
二 、分配器分配的两个性能指标:
2.1 最大吞吐量:
分配器最大吞吐量是指吞吐量就是在每个单位时间里完成的请求数。例: 如果一个分配器在一秒内可完成五百个分配请求和五百个释放请求,那么吞吐量就是1000个每秒,我们可以通过缩短请求和释放的时间来增大吞吐量,但分配请求随着空闲块的减少而运行时间变的越长。
2.2 最大存储器利用率:
在linux系统中被所有进程分配的虚拟存储器的全部数量是受磁盘上交换空间数量限制。分配堆的效率通过采用峰值的概念来衡量。

存储器利用率=已分配堆/堆总量