内存优化

linux 内核内存管理有哪些潜在危害

  • 缺页中断
    进程的虚拟页表和物理页表的关系存放在MMU内存管理单元中,但虚拟页表未映射物理页表时,会发生缺页中断,建立MMU,并且需要刷新TLB表。整个过程需要(1-10us)
  • TLB未命中
    TLB是MMU管理单元的高速缓存,可以减少查询慢速的MMU,当页表在TLB不存在时,需要通过查询MMU来获取物理地址。MMU是由多级页表组成,这导致漫长的查询过程
  • 内存分配与回收
    内存的申请与释放会设计锁操作,内存的离散分配,会导致越来越严重的内存碎片
  • 跨NUMA节点内存访问
    不同的NUMA节点访问不同的内存节点性能是不一样的。
  • 内存交换
    当内存不足时,操作系统会把进程的内存换出到磁盘,来获得更多的内存空间

措施:

  • 使用大页
    可以减少页表项的数量,TLB miss就会大大的降低。
  • page cache优化
    在顺序读写文件时,使用page cache可以大大的提升磁盘IO的性能
  • 内存分配优化器
    使用全局内存池和局部内存池来提升内存的使用效率
  • NUMA感知
    绑定CPU与绑定申请NUMA本地内存,可以避免跨NUMA的节点访问
  • 避免交换
    增大内存,压缩内存,禁用交换
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容