Hadoop

CDH大数据集群Linux系统参数调优

2019-02-06  本文已影响238人  LittleMagic

系统版本为CentOS 7。

vm.swappiness

设置方法:

swap即交换空间,作用类似于Windows中的虚拟内存,也就是当物理内存不足时,将硬盘上的swap分区当做内存来使用。但是,由于磁盘的读写速率与内存相比差太多,一旦发生大量交换,系统延迟就会增加,甚至会造成服务长期不可用,这对于大数据集群而言是致命的。
vm.swappiness参数用于控制内核对交换空间的使用积极性,默认是60。值越高,就代表内核越多地使用交换空间。
对于内存较大的CDH集群,我们一般将这个值设为0或1。0表示只有当可用物理内存小于最小阈值vm.min_free_kbytes(后面会提到)时才使用交换空间,1则表示最低限度地使用交换空间。
关于这个配置的具体机制,找到了两种解释:

vm.min_free_kbytes

设置方法:

内存水位线

Linux系统中,剩余内存有3个水位线,从高到低记为high、low和min。并且有如下的关系:
min = vm.min_free_kbytes,low = min * 5 / 4,high = min * 3 / 2。
当剩余内存低于high值时,系统会认为内存有一定的压力。当剩余内存低于low值时,守护进程kswapd就会开始进行内存回收。当其进一步降低到min值时,就会触发系统的直接回收(direct reclaim),此时会阻塞程序的运行,使延迟变大。
因此vm.min_free_kbytes的值既不应过小,也不应过大。如果过小(比如只有几十M),low与min之间的差值就会非常小,极易触发直接回收,使效率降低。而如果设置得过大,又会造成内存资源的浪费,kswapd回收时也会耗费更多的时间。上面的语句中设置成了4G,视物理内存大小,一般设在1G~8G之间。

透明大页面(THP)

设置方法:

大页面(Huge Page)是内存分页管理的一种实现方式。计算机内存是通过表映射(页表)的方式进行内存寻址,目前系统内存以4KB为一个页,作为内存寻址的最小单元。随着内存不断增大,页表的大小将会不断增大。一台256G内存的机器,如果使用4KB小页,仅页表大小就要4G左右。页表是必须装在内存的,而且是在CPU内存,太大就会发生大量miss,内存寻址性能就会下降。

Huge Page就是为了解决这个问题,它使用2MB的大页代替传统小页来管理内存,这样页表大小就可以控制的很小,进而全部装在CPU内存,防止出现miss。它有两种实现方式,一是静态大页面(Static Huge Pages,SHP),二是透明大页面(Transparent Huge Pages,THP)。从它们的名字就可以看出,SHP是静态的,而THP是动态的。由于THP是在运行期做分配和管理,因此会有一定程度的延迟,对于内存密集型的应用十分不利,必须关闭它。

vm.zone_reclaim_mode

设置方法:

这个参数与NUMA(Non-uniform Memory Access,“非统一性内存访问”)特性有关。


如图所示,NUMA使得每个CPU都有自己专属的内存区域

只有当CPU访问自身直接attach内存对应的物理地址时,才会有较短的响应时间(Local Access)。而如果需要访问其他CPU attach的内存的数据时,就需要通过inter-connect通道访问,响应时间就相比之前变慢了(Remote Access)。
NUMA这种特性可能会导致CPU内存使用不均衡,部分CPU的local内存不够使用,频繁需要回收,进而可能发生大量swap,系统响应延迟会严重抖动。而与此同时其他部分CPU的local内存可能都很空闲。这就会产生一种怪现象:使用free命令查看当前系统还有部分空闲物理内存,系统却不断发生swap,导致某些应用性能急剧下降。因此必须改进NUMA的内存回收策略,即vm.zone_reclaim_mode。
这个参数可以取值0/1/3/4。其中0表示在local内存不够用的情况下可以去其他的内存区域分配内存;1表示在local内存不够用的情况下本地先回收再分配;3表示本地回收尽可能先回收文件缓存对象;4表示本地回收优先使用swap回收匿名内存。由此可见,将其设为0可以降低swap发生的概率。

tuned服务

从 RHEL/Centos 6.3 之后,引入了一套新的调优工具 tuned,带来了大量的调优配置,可以针对不同的业务服务调整不同的优化策略,也旨在于简化调优的实施,充分利用系统资源与能效。其原理是每个profile对应一套sysctl参数,通过改变sysctl以适应不同的业务。但是对CDH集群而言,前面已经做过了调优,且业务相对固定,所以就不需要tuned服务来添乱了。关闭它的步骤如下:

参考
上一篇下一篇

猜你喜欢

热点阅读