Liunx 系统调优
- 程序控制方式:又被称为“忙等”模式,即当要在内存和IO设备之间进行信息传输时,由CPU向相应的设备发出命令,由设备控制器控制IO设备进行实际操作。在IO设备工作时,CPU执行一段循环测试程序,不断测试IO设备的完成状况,根据完成状况决定下一步操作。在此期间,CPU只能等待IO设备完成所有的数据传输,CPU和设备只能串行工作,并不能进行其他操作。
- 中断控制方式:CPU向相应的IO设备发出读写命令后,不必等待而转向执行其他进程,由设备控制器控制IO设备完成所有的实际操作,然后当前进程放弃对CPU的占用,进入休眠等待状态。IO设备完成单次数据传输并会主动出发一次中断信号(单次传输数据量是设备控制器的数据缓冲寄存器的容量,如磁盘单次读取容量便是一个扇区,如果一次要读入一个磁盘块的大小数据,则需要中断2次…),通知CPU本次IO完成,然后CPU会将控制权转向中断处理程序,让其对此情况作出相应反应
- DMA(direct memory access)工作方式:当某一进程提出一次单次大批量数据请求,则首先CPU规划好这批数据在进程的虚拟空间的位置,并事先完成虚拟内存到实际内存的映射关系(虚拟内存那端肯定是连续的堆空间,而实际内存这段操作系统一般也会尽可能在DMA区中划分出连续的实际内存空间以匹配),然后CPU将规划好的内存起始地址和size发送给DMA控制器中的内存地址寄存器和size计数器,然后由DMA控制器驱动硬盘驱动程序完成本次全部的IO请求,直到输入完成后,DMA控制器才发出中断信号告知CPU激活中断程序完成中断处理。
- 通道控制方式便是引入一个功能较为简单的协处理机,它可以接受CPU发来的IO命令,通道作为处理机也有自己的一套指令集,可以独立执行通道程序,对IO设备进行控制。通道的引入CPU可以专心计算,而把IO任务完全交给通道完成,二者各负其责。二者分工使得计算和IO操作可以并行,即CPU和设备并行工作,从而提高资源的利用率
- -p pid pid 的,例如:renice +15 785
- -g pgrp 组的
- -u user 用户的
- ZONE_DMA,0-16M,直接内存访问。该区域的物理页面专门供I/O设备的DMA使用。之所以需要单独管理DMA的物理页面,是因为DMA使用物理地址访问内存,不经过MMU,并且需要连续的缓冲区,所以为了能够提供物理上连续的缓冲区,必须从物理地址空间专门划分一段区域用于DMA。这部分的数据可以直接访问,目的在于加快磁盘和内存之间交换数据,数据不需要经过总线流向CPU的PC寄存器,再流向物理内存,直接通过总线就可到达物理内存。
- ZONR_NORMAL,16M-896M,内核最重要的部分,该区域的物理页面是内核能够直接使用的。
- ZONE_HIGHMEM,896M-结束,共128M,高端内存。主要用于32位Linux系统中,映射高于1G的物理内存。64位不需要高端内存。
- 0:默认设置,内核执行启发式的过量使用处理
- 1:内核执行总是过量使用处理,使用这个值会增大内存超载的可能性
- 2:设置内存使用量等于swap的大小+RAM*overcommit_ratio的值。如果希望减小内存的过度使用,这个值是最安全的
- 0,内核会杀死内存占用过多的进程。通常杀死内存占用最多的进程,系统就会恢复。
- 1,在发生OOM时,内核会panic。然而,如果一个进程通过内存策略或进程绑定限制了可以使用的节点,并且这些节点的内存已经耗尽,oom-killer可能会杀死一个进程来释放内存。在这种情况下,内核不会panic,因为其他节点的内存可能还有空闲,这意味着整个系统的内存状况还没有处于崩溃状态。
- 2,在发生OOM时总是会强制panic,即使在上面讨论的情况下也一样。即使在memory cgroup限制下发生的OOM,整个系统也会panic。
- ilde:空闲磁盘调度,该调度策略是在当前系统没有其他进程需要进行磁盘IO时,才能进行磁盘;因此该策略对当前系统的影响基本为0;当然,该调度策略不能带有任何优先级参数;目前,普通用户是可以使用该调度策略(自从内核2.6.25开始)。
- Best effort:是缺省的磁盘IO调度策略;(1)该调度策略可以指定优先级参数(范围是0~7,数值越小,优先级越高);(2)针对处于同一优先级的程序将采round-robin方式;(3)对于best effort调度策略,8个优先级等级可以说明在给定的一个调度窗口中时间片的大小。(4)目前,普调用户(非root用户)是可以使用该调度策略。(5)在内核2.6.26之前,没有设置IO优先级的进程会使用“none”作为调度策略,但是这种策略使得进程看起来像是采用了best effort调度策略,因为其优先级是通过关于cpu nice有关的公式计算得到的:io_priority = (cpu_nice + 20) /5。(6)在内核2.6.26之后,如果当前系统使用的是CFQ调度器,那么如果进程没有设置IO优先级级别,将采用与内核2.6.26之前版本同样的方式,推到出io优先级级别。
- Real time:实时调度策略,如果设置了该磁盘IO调度策略,则立即访问磁盘,不管系统中其他进程是否有IO。因此使用实时调度策略,需要注意的是,该访问策略可能会使得其他进程处于等待状态
参数(路径+文件) | 描述 | 默认值 | 优化值 |
/proc/sys/net/core/rmem_default | 默认的TCP数据接收窗口大小(字节)。 | 229376 | 256960 |
/proc/sys/net/core/rmem_max | 最大的TCP数据接收窗口(字节)。 | 131071 | 513920 |
/proc/sys/net/core/wmem_default | 默认的TCP数据发送窗口大小(字节)。 | 229376 | 256960 |
/proc/sys/net/core/wmem_max | 最大的TCP数据发送窗口(字节)。 | 131071 | 513920 |
/proc/sys/net/core/netdev_max_backlog | 在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。 | 1000 | 2000 |
/proc/sys/net/core/somaxconn | 定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。 | 128 | 2048 |
/proc/sys/net/core/optmem_max | 表示每个套接字所允许的最大缓冲区的大小。 | 20480 | 81920 |
/proc/sys/net/ipv4/tcp_mem | 确定TCP栈应该如何反映内存使用,每个值的单位都是内存页(通常是4KB)。第一个值是内存使用的下限;第二个值是内存压力模式开始对缓冲区使用应用压力的上限;第三个值是内存使用的上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的BDP可以增大这些值(注意,其单位是内存页而不是字节)。 | 94011 125351 188022 | 131072 262144 524288 |
/proc/sys/net/ipv4/tcp_rmem | 为自动调优定义socket使用的内存。第一个值是为socket接收缓冲区分配的最少字节数;第二个值是默认值(该值会被rmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是接收缓冲区空间的最大字节数(该值会被rmem_max覆盖)。 | 4096 87380 4011232 | 8760 256960 4088000 |
/proc/sys/net/ipv4/tcp_wmem | 为自动调优定义socket使用的内存。第一个值是为socket发送缓冲区分配的最少字节数;第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max覆盖)。 | 4096 16384 4011232 | 8760 256960 4088000 |
/proc/sys/net/ipv4/tcp_keepalive_time | TCP发送keepalive探测消息的间隔时间(秒),用于确认TCP连接是否有效。 | 7200 | 1800 |
/proc/sys/net/ipv4/tcp_keepalive_intvl | 探测消息未获得响应时,重发该消息的间隔时间(秒)。 | 75 | 30 |
/proc/sys/net/ipv4/tcp_keepalive_probes | 在认定TCP连接失效之前,最多发送多少个keepalive探测消息。 | 9 | 3 |
/proc/sys/net/ipv4/tcp_sack | 启用有选择的应答(1表示启用),通过有选择地应答乱序接收到的报文来提高性能,让发送者只发送丢失的报文段,(对于广域网通信来说)这个选项应该启用,但是会增加对CPU的占用。 | 1 | 1 |
/proc/sys/net/ipv4/tcp_fack | 启用转发应答,可以进行有选择应答(SACK)从而减少拥塞情况的发生,这个选项也应该启用。 | 1 | 1 |
/proc/sys/net/ipv4/tcp_timestamps | TCP时间戳(会在TCP包头增加12个字节),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT 的计算,为实现更好的性能应该启用这个选项。 | 1 | 1 |
/proc/sys/net/ipv4/tcp_window_scaling | 启用RFC 1323定义的window scaling,要支持超过64KB的TCP窗口,必须启用该值(1表示启用),TCP窗口最大至1GB,TCP连接双方都启用时才生效。 | 1 | 1 |
/proc/sys/net/ipv4/tcp_syncookies | 表示是否打开TCP同步标签(syncookie),内核必须打开了CONFIG_SYN_COOKIES项进行编译,同步标签可以防止一个套接字在有过多试图连接到达时引起过载。 | 1 | 1 |
/proc/sys/net/ipv4/tcp_tw_reuse | 表示是否允许将处于TIME-WAIT状态的socket(TIME-WAIT的端口)用于新的TCP连接 。 | 0 | 1 |
/proc/sys/net/ipv4/tcp_tw_recycle | 能够更快地回收TIME-WAIT套接字。 | 0 | 1 |
/proc/sys/net/ipv4/tcp_fin_timeout | 对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。 | 60 | 30 |
/proc/sys/net/ipv4/ip_local_port_range | 表示TCP/UDP协议允许使用的本地端口号 | 32768 61000 | 1024 65000 |
/proc/sys/net/ipv4/tcp_max_syn_backlog | 对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。 | 2048 | 2048 |
/proc/sys/net/ipv4/tcp_max_tw_bucket | 处于timewait的连接数 | ||
/proc/sys/net/ipv4/tcp_synack_retries | 第二次握手的重发数 | 忙时设为1或0 | |
/proc/sys/net/ipv4/tcp_syn_retires | 服务器连接客户端时,第一次握手重发数 | ||
/proc/sys/net/ipv4/tcp_max_orphans | tcp套接字,请求到达还未来的及监理句柄允许的最大值,可防DOS攻击 | ||
/proc/sys/net/ipv4/tcp_fin_timeout | 四次断开第二阶段的超时时间FIN_WAIT_2 | ||
/proc/sys/net/ipv4/tcp_low_latency | 允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。 | 0 | |
/proc/sys/net/ipv4/tcp_westwood | 启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化,对于WAN 通信来说应该启用这个选项。 | 0 | |
/proc/sys/net/ipv4/tcp_bic | 为快速长距离网络启用Binary Increase Congestion,这样可以更好地利用以GB速度进行操作的链接,对于WAN通信应该启用这个选项。 | 1 |

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Linux命令:lspci显示PCI总线设备信息
lspci:显示所有的PCI总线设备信息。 下面试lspci的全部功能介绍: $lspci- Usage:lspci[<switches>] Basicdisplaymodes: -mmProducemachine-readableoutput(single-mforanobsoleteformat) #生成机器可读的输出(单个-m用于过时的格式) -tShowbustree #显示巴士树 Displayoptions: -vBeverbose(-vvforveryverbose) #详细(-vv非常详细) -kShowkerneldrivershandlingeachdevice #显示处理每个设备的内核驱动 -xShowhex-dumpofthestandardpartoftheconfigspace #显示配置空间的标准部分的十六进制转储 -xxxShowhex-dumpofthewholeconfigspace(dangerous;rootonly) #显示整个配置空间的十六进制转储(危险;只有root) -xxxxShowhex-dumpofthe4096-byt...
- 下一篇
linux下管理用户(user)命令
1)管理用户(user)的工具或命令; useradd 注:添加用户 adduser 注:添加用户 passwd 注:为用户设置密码 usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等; pwcov 注:同步用户从/etc/passwd 到/etc/shadow pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整; pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件; finger 注:查看用户信息工具 id 注:查看用户的UID、GID及所归属的用户组 chfn 注:更改用户信息工具 su 注:用户切换工具 sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行r...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Hadoop3单机部署,实现最简伪集群