Intel Discrete GPU - Memory - Evict / Swap

• 3 分钟阅读 • intel gpu

Linux 内核内存管理子系统中为系统内存提供了 Kswapd 和 Direct Reclaim 两种内存回收方式,以缓解系统内存 Free 余量不足所带来的内存分配失败问题,然而这种内存回收仅仅面向系统内存范围。如果独立显存遇到类似的空闲显存余量不足导致 APP 分配显存失败的场景怎么办?

TTM 早就想到了这一点,它为 ttm device 提供了 Evict 能力及 Swap 能力。所谓 Evict 代表从独立显存驱逐一部分可能暂时使用不到(经由 LRU 筛选)的显存至系统内存,Swap 代表系统内存如果存在内存压力的情况下可以将系统内存中显存所占用的部分通过内存子系统的回收途径将其 Swapout 至后备存储。

现在我们能够得知的是,TTM 为独立显存所提供的能力亦可以将显存从独立显存中回收至内核的内存后备存储中,这点与普通内存的流程相同。但回收的触发时机与普通内存稍有不同,当前 TTM 软件架构中未实现 Kswape 这种提供异步回收显存的方式,Evict 或 Swap 仅在显存分配可能失败时被触发,这点类似于普通内存的 Direct Reclaim;

先来看一下关于显存回收的全局框图,

下面我们稍详细的解读下两步显存回收流程,值得关注的点是显存回收目标的选择方式与显存的流转过程,

LRU

TTM 架构中显存回收的目标选择也是使用比较常见的 LRU 算法,算法中比较关键的流程在于 LRU 的更新,或者可以称之为老化操作,时间长未使用到的显存越容易被回收。先看来看一下 TTM 架构中操作到 LRU 的几个流程点,

EVICT

SWAP

文章标签: intel gpu

上一篇 : Intel Discrete GPU - Memory - HMM / Device Pages
下一篇 : Intel Discrete GPU - Memory - Migrate
阅读进度 0%