博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MultiCore Memory Management Technology in mortal kombat
阅读量:7207 次
发布时间:2019-06-29

本文共 862 字,大约阅读时间需要 2 分钟。

  hot3.png

gdc2011's paper.

UnealMemoryAllocator

上来先分析了unreal的memory allocator不给力,在于:

  • 不支持多个heap
  • 并不是native的面向MultiThread和MultiCore
    • 用一个全局lock来保证thread safe,这个性能很差
  • 的确是有些operation会有很大的stall
另外一个他们game里面用的mem mgr,也有一些问题,其实也就是这个paper要解决的一部分问题:
  • 线程安全
  • virtual memory aware
  • fragment
GlobalLock
这个可以说是最不好的多线程解决方式:
  • 所有的操作(无论多小)都会有不小的代价,
  • 某些类似realloc的操作代价尤其大
解决方案:
  • virtual memory aware dynamic backstore and large allocations
  • lock free
  • multiple heaps
  • tracking and debugging

使用混合的heap:

  • 大size的直接用os的heap
  • 中间的和小的各用不同的heap进行管理
其中各自占有的size和count的数据很重要:
分布:
小内存分配:
  • 使用bining allocator(分级allocator,link:)
    • 使用lock striping(lock per bin, link:)
  • lock free alloc
    • lookaside cache(),
    • 是维护一个lock free的list(也就是dlmalloc里说的cache的一种),list耗光了之后再从chunk里分配一个list
    • 一些基本的lockfree做法就是典型的CAS这种
  • striping lock free:(lock striping[] :use different lock for different data)
原文链接:

转载于:https://my.oschina.net/dtec/blog/44900

你可能感兴趣的文章
C语言第十一次作业--函数嵌套调用
查看>>
hdu 1728 逃离迷宫 *
查看>>
将Word文档转化为HTML格式的文档
查看>>
WCF
查看>>
IDE安装Lombok插件提高开发效率
查看>>
转://使用showplan.sql分析sql Performance
查看>>
第七课:增量分析
查看>>
【总结整理】JQuery基础学习---动画
查看>>
A. Round House_数学问题
查看>>
LeetCode OJ:Remove Nth Node From End of List(倒序移除List中的元素)
查看>>
0920编译原理词法分析
查看>>
浅谈数位DP的dfs写法
查看>>
Linux下的bash对拍
查看>>
C++ STL标准入门
查看>>
移动端页面制作2
查看>>
UE4中的常量材质实例和动态材质实例
查看>>
php中的字符串和正则表达式
查看>>
SharePoint获取UserProfile的信息
查看>>
[题解]第十一届北航程序设计竞赛预赛——I.神奇宝贝大师
查看>>
Python--关于连接符+
查看>>