使用sysctl调优Linux内核

简介: Linux内核包含了大约1000个可调节的参数。这些参数的默认取值适合于一般的使用场景,这也意味着它们并非对每个人都是十全十美的。

概述

Linux内核包含了大约1000个可调节的参数。这些参数的默认取值适合于一般的使用场景,这也意味着它们并非对每个人都是十全十美的。

  • sysctl命令适用于所有的Linux系统。你必须以root的身份才能修改内核参数。
  • 该命令可以立刻改变参数值,但除非将参数定义在/etc/sysctl.conf中,否则重启之后,修改过的值又会恢复原样。
  • 最好是在修改sysctl.conf之前先进行测试。如果将错误的值写入/etc/sysctl.conf,会导致系统无法启动。

实战

sysctl支持下列选项。

❏ -a:输出所有的参数。

❏ -p FILENAME:从FILENAME中读入值。默认从/etc/sysctl.conf中读取。

❏ PARAM:输出PARAM的当前值。

❏ PARAM=NEWVAL:设置PARAM的值。

1.任务调度器调优

任务调度器是针对桌面环境优化的,在这种环境下,快速响应用户操作要比整体效率更重要。延长任务的切换间隔能够提高服务器系统的性能。查看kernel.sched_migration_cost_ns的值:

kernel.sched_migration_cost_ns(在比较旧的内核中是kernel.sched_migration n_cost)控制着任务在被切换之前能够保持活跃状态的时长。在拥有着大量任务或线程的系统中,这会导致大量的开销耗费在上下文切换上。默认值500000纳秒对于运行Postgres或Apache服务器的系统无疑是过小了。建议将这个值修改为5微秒:

sysctl kernel.sched_migration_cost_ns=5000000

Postgres服务器取消参数sched_autogroup_enabled的设置能够提高性能。

2.网络调优

对于需要执行大量网络操作的系统(NFS客户端、NFS服务器等)而言,网络缓存的默认值可能过小了。

检查读缓存的最大值:

[root@meta /etc/prometheus/targets]#sysctl net.core.rmem_max
net.core.rmem_max = 4194304

增加缓存大小:

        # sysctlnet.core.rmem_max=16777216        
        # sysctlnet.core.wmem_max=16777216        
        # sysctl net.ipv4.tcp_rmem="40968738016777216"        
        # sysctl net.ipv4.tcp_wmem="40966553616777216"        
        # sysctl net.ipv4.tcp_max_syn_backlog=4096

原理

sysctl命令可以直接访问内核参数。在大多数发行版中,这些参数默认都是针对普通工作站优化的。如果系统内存容量大,可以增加缓冲区的值来提高性能;如果内存不足,可以减少缓存区的值。如果系统作为服务器,可以将任务切换间隔值设置的比单用户工作站长一些。

目录
相关文章
|
1月前
|
存储 Linux 数据处理
探索Linux操作系统的内核与文件系统
本文深入探讨了Linux操作系统的核心组件,包括其独特的内核结构和灵活的文件系统。文章首先概述了Linux内核的主要功能和架构,接着详细分析了文件系统的工作原理以及它如何支持数据存储和检索。通过比较不同的文件系统类型,本文旨在为读者提供一个关于如何根据特定需求选择合适文件系统的参考框架。
|
18天前
|
Linux API 调度
技术笔记:Linux内核跟踪和性能分析
技术笔记:Linux内核跟踪和性能分析
|
2月前
|
安全 算法 网络协议
探索Linux操作系统的内核管理
【5月更文挑战第31天】本文将深入探讨Linux操作系统的内核管理机制,包括其设计原则、主要组件以及它们如何协同工作以提供高效的系统性能。通过分析Linux内核的关键特性和功能,我们将揭示这一开源操作系统如何在各种计算环境中保持其稳定性和灵活性。
|
2月前
|
机器学习/深度学习 人工智能 负载均衡
深度解析:Linux内核调度策略的演变与优化
【5月更文挑战第30天】 随着计算技术的不断进步,操作系统的性能调优成为了提升计算机系统效率的关键。在众多操作系统中,Linux因其开源和高度可定制性而备受青睐。本文将深入剖析Linux操作系统的内核调度策略,追溯其历史演变过程,并重点探讨近年来为适应多核处理器和实时性要求而产生的调度策略优化。通过分析比较不同的调度算法,如CFS(完全公平调度器)、实时调度类和批处理作业的调度需求,本文旨在为系统管理员和开发者提供对Linux调度机制深层次理解,同时指出未来可能的发展趋势。
|
2月前
|
算法 安全 Linux
探索Linux内核的虚拟内存管理
【5月更文挑战第20天】 在本文中,我们将深入探讨Linux操作系统的核心组成部分之一——虚拟内存管理。通过剖析其关键组件和运作机制,揭示虚拟内存如何提供高效的内存抽象,支持庞大的地址空间,以及实现内存保护和共享。文章将重点讨论分页机制、虚拟内存区域(VMAs)的管理、页面置换算法,并简要分析这些技术是如何支撑起现代操作系统复杂而多变的内存需求的。
|
4天前
|
Linux
查看linux内核版本
在Linux中查看内核版本可使用`uname -r`、`cat /proc/version`、`lsb_release -a`、`cat /etc/*release`、`dmesg | grep Linux`、`hostnamectl`、`kernrelease`(部分系统)、`rpm -q kernel`(RPM系统)或`dpkg -l linux-image-*`(Debian系)。
7 2
|
26天前
|
Linux
查看linux内核版本
在Linux中查看内核版本可使用`uname -r`、`cat /proc/version`、`lsb_release -a`(若安装LSB)、`/etc/*release`或`/etc/*version`文件、`dmesg | grep Linux`、`cat /sys/class/dmi/id/product_name`、`hostnamectl`、`kernrelease`(如果支持)、`rpm -q kernel`(RPM系统)和`dpkg -l linux-image-*`(Debian系统)。
31 4
|
27天前
|
安全 Linux 数据处理
探索Linux的kmod命令:管理内核模块的利器
`kmod`是Linux下管理内核模块的工具,用于加载、卸载和管理模块及其依赖。使用`kmod load`来加载模块,`kmod remove`卸载模块,`kmod list`查看已加载模块,`kmod alias`显示模块别名。注意需有root权限,且要考虑依赖关系和版本兼容性。最佳实践包括备份、查阅文档和使用额外的管理工具。
|
10天前
|
Linux 调度
部署03---Linux操作系统的诞生,Linux操作系统由系统的内核和系统的操作系统所组成
部署03---Linux操作系统的诞生,Linux操作系统由系统的内核和系统的操作系统所组成
|
1月前
|
运维 NoSQL Ubuntu
深入理解Linux中的"crash"命令:内核崩溃的调试利器
`crash`是Linux内核崩溃调试工具,用于分析内核崩溃转储文件,提供GDB-like的交互式CLI。通过加载`vmcore`文件和内核映像,管理员可以查看系统状态、调用栈、内存布局等。安装`crash`可使用包管理器,如`apt-get`或`yum/dnf`。尽管有学习曲线且依赖转储文件,但`crash`在系统故障排查中极其重要。