操作系統內存大頁(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已經不見了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM