如何减少linux内存碎片

1. 什么式内存分配以及内存碎片
     内存分配是虚拟内存分配vma,虚拟内存在内核是一个连续的空间(这里内核只是管理vma的其实地址和结束地址,所以占用很小)。在运行过程中mmap时,由于虚拟内存各个线程式共享的,所以分配vma会加锁,在多线程中表现不佳。第二,在长期运行过程中,vma导致碎片会,在分配中,查找vma可用gap的时间可能很长,最坏时间时o(n),  同时也会引起vma红黑树的深度增加,查找,删除,增加时长增加。所以减少内存碎片在提高性能和内存利用率十分重要。 同时由于碎片导致页表项变大,tlb miss概率变大,导致内存访问速度降低。

2. 减少内存碎片
   ptmalloc和jemalloc内存管理器通常的解决思路:自己管理内存,根据分配的内存大小,把管理器分成阶梯大小的内存管理器,比如2,4,8,...字节进行管理,分配的时候,按照best-fit在对应的阶段块分配内存,这样做的好处基本减少了内存碎片,而且是个通用的管理内存方法,但是内存利用率相对较低。 
   slab的解决思路:在内核中,内存分配基本

如何减少linux内存碎片最先出现在Python成神之路

版权声明:
作者:lichengxin
链接:https://www.techfm.club/p/7783.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>