当底层系统在内存模式下使用持久内存模块(近内存DRAM缓存和NVRAM作为主内存)时,我想知道Linux内核是否做了什么特别的事情或执行了任何优化。我尝试过查看驱动程序/nvdimm,但是这里的一切似乎都围绕在different模式下使用,在应用程序直接模式中,您可以在DAX文件中使用MMAP,但是在内存模式中,它在语义和语法上与使用DRAM没有什么不同。
Linux是否采用任何优化,还是在硬件中处理一切?有人能把我链接到Linux内核中执行内存模式优化的地方吗?提前感谢!
发布于 2021-02-21 16:38:15
上游Linuxv5.2-Rc1引入了内核参数page_alloc.shuffle,这是一个布尔标志,如果以下两种条件都为真,该标志将自动启用:
page_alloc.shuffle=0添加到内核参数列表来手动禁用的。内核运行在一个具有支持ACPI 6.2的固件的系统上,并且固件已经通过异构内存属性表(HMAT)与内核通信,即系统至少在一个内存域中有一个内存端缓存。当启用此参数时,内核页分配器将其空闲列表随机化,以减少内存端缓存中的冲突。
自动启用它的系统示例包括部分或完全配置为在Cache模式下运行的MCDRAM的KNL/KNM,以及部分或完全配置为在内存模式下运行的持久内存的CSX/CPX。在所有这些系统上,都有一个直接映射的内存端缓存,尽管许多实现细节不同。
自由列表洗牌提供可持续的良好性能,但不一定最优或接近最优。这与一开始由于良好的内存端缓存利用率而以高性能运行不同,但随着时间的推移,由于缓存冲突的增加,性能会下降。
也就是说,我认为没有人在内存模式下测试空闲列表调整对系统性能的影响,即使它是自动启用的。
目前没有其他在内核中接受的内存模式的潜在优化。
https://stackoverflow.com/questions/66282496
复制相似问题