lee 发表于 2020-6-24 21:53:49

深入Linux--huge page详解

内存标准页大小是4k,对于内存使用较多,访问内存又比较分散的场景,4k的页大小会导致页表(每个进程一个,用于索引内存物理地址)很大,cpu高速缓存又很小,会导致大量的页表项无法被高速缓存缓存到,影响访存速度。
项目应用是利用大量内存,缓存热度高的网页内容,存储到内存中,减少cdn访问时延,提高吞吐量。进程使用的内存,往往会有五十G左右,甚至更多,而且因为都是比较热的内容,大量访问的随机性很高。使用4k页面无法满足性能要求。
所以使用大页内存,进行优化,大页内存多用于oracle数据库系统,应该也是大量数据缓存的需要。其他具有相似特点的应用场景,也可以使用大页内存进行优化。

linux大页内存的使用方式如下:
首先需要在系统中,通过脚本配置大页内存。
具体操作是编辑/etc/grub.conf文件,具体就是在kernel选项的最后添加几个启动参数:transparent_hugepage=never default_hugepagesz=1G hugepagesz=1G hugepages =123。这四个参数中,最重要的是后两个,hugepagesz用来设置每页的大小,我们将其设置为1G,其他可选的配置有4K,2M(其中2M是默认)。如果操作系统版本太低的情况下,可能会导致1G的页设置失败,所以设置失败请查看自己操作系统的版本。hugepages用来设置多少页大页内存,我们的系统内存是128G,现在分配123G用来专门服务大页。这里需要注意,分配完的大页对常规程序来说是不可见的,例如我们的系统还剩余5G的普通内存,这时我如果按照常规方法启动一个耗费10G的程序就会失败。修改完grub.conf后,重启系统。然后运行命令cat /proc/meminfo|grep Huge命令查看大页设置是否生效

# sysctl vm.nr_hugepages=192
该命令也可以分配大页内存
**** Hidden Message *****

页: [1]
查看完整版本: 深入Linux--huge page详解