
# 相关配置
#### 功能开关
THP的功能开关控制系统是否启用透明大页功能。
配置路径：
```
/sys/kernel/mm/transparent_hugepage/enabled
```
参数选项说明：
- always：所有合适的内存分配都尽可能使用大页。
- madvise：仅当程序显式通过madvise()系统调用请求时才使用大页。
- never：彻底禁用透明大页。
 
#### 碎片整理
由于大页分配需要连续的物理内存区域，长时间运行的系统往往因频繁分配和释放导致内存碎片化。碎片整理（defragmentation）是指内核通过页面迁移等手段合并零散的物理页，从而形成足够大的连续区域用于大页分配。碎片整理可能会导致系统延迟上升，特别是在前台执行时。
配置路径：
```
/sys/kernel/mm/transparent_hugepage/defrag
```
参数选项说明：
- always：当前线程始终等待内核整理碎片后再分配大页，可能严重影响响应时间。
- defer：当前线程不会等待，碎片整理在后台异步执行。
- madvise：仅针对显式调用madvise()请求的内存区域进行整理。
- defer+madvise：当前线程不等待，碎片整理交给后台，仅针对明确请求使用大页的内存。
- never：完全不整理碎片，若无法直接分配大页，则回退为小页。
 
#### 后台合并线程
khugepaged是内核中的后台线程，定期扫描匿名内存区域，将合适的4KB页自动合并为2MB的大页。
相关配置文件目录如下，
```
/sys/kernel/mm/transparent_hugepage/khugepaged/
```
关键配置文件：
- defrag：功能开关，可选的配置项如下：
  - 1：允许khugepaged主动整理内存碎片。
  
  - 0：关闭khugepaged主动整理内存碎片功能。
   
- alloc_sleep_millisecs：重试间隔（单位：毫秒），当分配大页失败时，khugepaged下一次尝试分配前的等待时间，默认值为60000。
- pages_to_scan：扫描页数，khugepaged每次唤醒后扫描的页数，默认值为4096。
- scan_sleep_millisecs：扫描间隔（单位：毫秒），用于调节后台扫描频率，默认值为10000。
![](https://support.huaweicloud.com/usermanual-hce/public_sys-resources/note_3.0-zh-cn.png)
如业务对延迟敏感，可适当加大扫描间隔，或关闭khugepaged整理功能。
