基础组件参数
调度器子系统
参数名称 |
参数含义 |
参数范围 |
性能敏感场景 |
调优建议 |
参数查看/设置方式 |
---|---|---|---|---|---|
kernel.numa_balancing |
自动NUMA(非一致性内存访问)平衡 |
{0, 1} |
- |
在不进行CPU绑核的场景下,建议将该参数配置为1。 |
查看:sysctl param 设置:sysctl param=value 说明:
其中param表示参数名称,value表示需配置的参数取值。 |
kernel.sched_child_runs_first |
子进程的CPU优先调度权 |
{0, 1} |
TensorFlow Serving |
- |
|
kernel.sched_cluster |
cluster调度亲和 |
{0, 1} |
MySQL、Redis、TensorFlow Serving |
建议设置为1 ,启用cluster调度亲和。 |
|
kernel.sched_migration_cost_ns |
进程迁移的最小成本阈值 |
[100000, 5000000] |
TensorFlow Serving |
- |
|
kernel.sched_nr_migrate |
调度器在负载均衡时迁移的任务数量 |
[1, 128] |
TensorFlow Serving |
- |
|
kernel.sched_wakeup_granularity_ns |
任务唤醒时的调度延迟阈值 |
[100000, 15000000] |
TensorFlow Serving |
- |
I/O子系统
参数名称 |
参数含义 |
参数范围 |
性能敏感场景 |
调优建议 |
参数查看/设置方式 |
---|---|---|---|---|---|
max_sectors_kb |
块设备单次I/O操作的数据大小 |
[68, 128] |
MySQL |
对于顺序读写密集型业务,可适当增大该参数以提升吞吐量;对于随机I/O延迟敏感业务,应适当减小该参数以优化响应时间。 |
查看/修改文件内容: /sys/block/block_device /queue/max_sectors_kb 说明:
其中block_device表示需替换为实际主机的块设备名称。 |
scheduler |
块设备I/O调度策略 |
{mq-deadline, kyber,bfq, none} |
MySQL、openGauss |
建议根据具体应用类型选择该参数的配置。 |
查看/修改文件内容: /sys/block/block_device /queue/scheduler |
内存管理子系统
参数名称 |
参数含义 |
参数范围 |
性能敏感场景 |
调优建议 |
参数查看/设置方式 |
---|---|---|---|---|---|
transparent_hugepage_mode |
透明大页的启用状态 |
{madvise, never, always} |
Redis、Hive、Spark、Kafka、TensorFlow Serving |
建议将该参数配置为always。 |
查看/修改文件内容: /sys/kernel/mm/transparent_hugepage/enabled |
vm.dirty_background_ratio |
触发后台刷写将脏页写回磁盘的脏内存占总内存的最大百分比阈值 |
[0, 100] |
RocksDB |
在延迟敏感的应用场景下,建议适当增大该参数,以降低刷盘频率,从而减少延迟波动。 |
查看:sysctl param 设置:sysctl param=value |
vm.max_map_count |
单个进程可以创建的最大内存映射(mmap)区域数 |
[65530, 10000000] |
RocksDB |
建议适当增大mmap映射区域数量。 |
|
vm.vfs_cache_pressure |
回收用于目录和inode缓存(VFS cache)的倾向 |
[0, 500] |
RocksDB |
建议在内存紧张的环境下适当增大该值,避免缓存占用过多内存。 |
网络子系统
参数名称 |
参数含义 |
参数范围 |
性能敏感场景 |
调优建议 |
参数查看/设置方式 |
---|---|---|---|---|---|
net.core.rps_sock_flow_entries |
RPS(Receive Packet Steering)哈希表的大小 |
[0, 131072] |
- |
建议将该参数配置为较大的值。 |
查看:sysctl param 设置:sysctl param=value |
Java Platform
参数名称 |
参数含义 |
参数范围 |
参数设置方式 |
---|---|---|---|
AlwaysPreTouch |
JVM在启动初始化阶段是否提前访问并提交堆内存到物理内存 |
{on, off} |
|
G1HeapRegionSize |
G1堆划分的最小区域大小 |
{1m, 2m, 4m, 8m, 16m, 32m} |
-XX:param=value |
G1MaxNewSizePercent |
G1年轻代在堆中占比的最大百分比 |
[20, 40] |
-XX:param=value 需配合“-XX:+UnlockExperimentalVMOptions”使能 |
G1NewSizePercent |
G1年轻代在堆中占比的初始百分比 |
[20, 40] |
|
G1UseAdaptiveIHOP |
是否启用自适应IHOP(Initiating Heap Occupancy Percent) |
{on, off} |
需配合“-XX:+UnlockExperimentalVMOptions”使能 |
MaxGCPauseMillis |
垃圾回收最大暂停时间的目标值 |
[200, 500] |
-XX:param=value |
MaxJavaStackTraceDepth |
异常堆栈跟踪的最大深度 |
[512, 1024] |
|
ParallelGCThreads |
STW工作线程数量 |
[16, 128] |
|
UseNUMA |
是否启用NUMA(非统一内存访问)优化 |
{on, off} |
|
参数设置方式需结合具体应用的配置机制进行指定,例如:
- Hive:可通过启动参数指定,例如:--hiveconf hive.tez.java.opts="-XX:+param -XX:param=value"
- Flink:可在配置文件中指定,例如:env.java.opts配置项指定为“-XX:+param -XX:param=value”