操作系统内存大页(THP)对redis性能的影响

redis启动日志的warning:

WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to 'madvise' or 'never').

THP

内存大页机制(Transport Huge Pages,THP),是linux2.6.38后支持的功能,该功能支持2MB的大爷内存分配,默认开启。常规的内存分配为4KB维度。

THP对redis的影响

THP能减少内存分配的次数,同时可以加快子进程的fork速度。

但是redis采用了写时复制机制,一旦有数据要修改,redis不会直接修改内存数据,而是copy一份这个数据,然后进行修改,DOUBLE了。

在THP开启的情况下,如果就算只有2KB的数据,Redis也需要复制2MB的内存大页,而在常规情况下,只需要复制4KB的内存页,使得每次写命令引起的复制内存页的单位放大了512倍,这会拖慢写操作的执行时间,导致大于写操作慢查询,最终影响redis的性能。

所有在redis服务器需要关闭linux的THP

关闭THP

 echo never >  /sys/kernel/mm/transparent_hugepage/enabled

再次启动redis发现文章开始的waring已经不见了。

posted @ 2021-02-01 07:14  ibrake  阅读(2615)  评论(1编辑  收藏  举报