欢迎光临散文网 会员登陆 & 注册

自编教材分享:第四章—系统配置优化(二)

2023-09-11 20:37 作者:先进编译实验室  | 我要投稿


系统性能优化的目的就是在一定范围内使得系统中的各个资源的使用去向合理,并保持必要的平衡。系统的运行良好时的各类资源可以达到一个平衡的状态。本期分享的是系统配置优化第二部分。

文件系统

文件系统是操作系统与磁盘设备之间交互的一个桥梁,对磁盘的任何写操作都要经过文件系统然后才到磁盘。文件系统除了在磁盘上存储和管理数据,还负责保证数据的完整性。文件系统是管理磁盘的软件系统,它简化了用户对磁盘空间的使用方法,并降低了磁盘空间的使用难度,通过更加形象的方式将磁盘中的数据展示给用户。本节从以下两个部分讨论:

  1. 配置检查

  2. 参数调整

配置检查

文件系统性能调优时,需要检查其静态配置情况:如挂载的文件系统数量、文件系统记录大小、是否启用访问时间戳、是否配置文件系统缓存、使用的文件系统版本是什么、文件系统是否有补丁等。

可以使用提到的vmstat、sar工具进行查阅、配置。

Linux系统可以使用SystemTap动态跟踪文件系统事件,其它一些用于调查文件系统性能以及刻画使用情况的工具和监控框架。

参数调整

文件系统也是有缓存的,为了让文件系统有最大的性能,首要的事情就是分配足够大的内存,这个非常关键。

Linux上的ext2、ext3、ext4文件系统调整工具为tune2fs,而在挂载时指定多种选项有两种方法:一种是手动的mount命令,另一种是启动时的/boot/grub/menu.lst和/etc/fstab。

参数调整分为两部分:

  1. 文件描述符调优

  2. 内核参数调优

文件描述符调优

文件描述符可以说是服务器程序的宝贵资源,大部分系统调用都是和文件描述符打交道的。而系统分配给应用程序的文件描述符有限,所以关闭那些不再使用的文件描述符以释放其所占的资源有利于提高性能。

使用ulimit命令查看用户级的文件描述符数:

使用ulimit命令将用户级文件描述符限制设定为max-file-number。不过这种设置是临时的,只在当前的会话中有效。例: ulimit -SHn 512。

要想永久修改用户级文件描述符数限制,可以在/etc/security/limits.conf文件中加入如下两项,第一行是指硬限制,第二行是软限制,这是两种资源限制:

内核参数调优

几乎所有的操作系统内核模块,包括内核核心模块和驱动程序都在/proc/sys文件系统下提供了某些配置文件,以供用户调整模块的属性和行为。通常一个配置文件对应一个内核参数,文件名就是参数的名字,文件的内容是参数的值。

通过sysctl命令查看所有这些内核参数

其中最重要的两个参数如下:

1、/proc/sys/fs/file-max,系统级文件描述符限制。直接修改这个参数与上述最大文件描述符中讨论的修改方法有相同的效果;

2、/proc/sys/fs/epoll/max_user_watches中的值是一个用户能够往epoll内核事件表中注册的事件的总量,epoll是Linux中I/O多路复用的一种机制,该值是指该用户打开的所有epoll实例总共监听的事件数目。

磁盘

磁盘是速度较慢的存储子系统,通常会成为影响整个系统性能的瓶颈。若在高负载下磁盘成为了瓶颈,处理器会持续空闲以等待磁盘I/O结束。此时,及时发现并消除这些瓶颈很有可能会提升数倍的性能。本节仍分为以下两个部分:

  1. 配置检查

  2. 参数调整

配置检查

如果磁盘读写的块数很大,那么这可能就是磁盘瓶颈,否则,要查看系统是否使用了大量的网络I/O。iostat磁盘的读写操作很频繁。top查看系统是否在等待状态上消耗了大量的时间。若系统强调了特定磁盘,查看等待请求被响应所平均花费的毫秒数,数值越高则磁盘超负荷越多,然后确定哪个应用程序访问了磁盘,最后查看并分析应用程序访问了哪些文件,并分析每个调用花费的时长。通过了解进程访问的文件,将其更均匀地分散于多个磁盘,或者将其迁移到更快的磁盘,就有可能提升该进程的I/O性能。

查看系统硬盘信息和使用情况可以在超级管理员权限下使用命令fdisk或者命令df,也可以直接使用命令cat /proc/partitions进行查看。也可以利用iostat、sar命令评估磁盘性能。此外也可以通过top命令确定系统是否受I/O限制。

当确定是磁盘I/O问题时,需要分析出是哪个应用程序引起了I/O磁盘问题,图1给出了确定磁盘I/O使用原因的步骤。

图1 确定磁盘I/O使用原因的步骤

参数调整

操作系统可调的硬盘参数包括I/O调度优化、资源调度策略控制两个大部分,主要是通过调整参数控制磁盘的I/O调度以达到优化的目的。-c表示I/O优先级,为1表示实时,为2表示尽力,为3表示空闲。-p表示运行任务的进程id

linux中的ionice工具可以限制一个特定进程的磁盘子系统使用率,ionice将磁盘I/O调度分为三类,实时、尽力、空闲。

示例:将进程号为1623的进程放入了空闲I/O调度级别:

上例适用于对读写被长时间允许的备份任务,以尽量避免与生产负载产生冲突。

调度策略

现代操作系统提供了自定义的资源控制方式,可用于管理磁盘或文件系统的使用情况。Linux I/O调度器控制内核提交读写请求给磁盘的方式,它介于通用块层和块设备驱动程序之间,用户可以通过调整这个调度器来优化系统性能通常有3个调度器可供选择:

1、完全公平调度器(Completely Fair Scheduler,CFQ),它将由进程提交的同步请求放到多个进程队列中,然后为每个队列分配时间片以访问磁盘,通常是Linux系统的默认调度器;

2、noop是Linux内核里最简单的I/O调度器,基于先进先出队列算法;

3、deadline又称截止时间调度器,它尝试保证请求的开始服务时间。适当的更改调度器有助于系统发挥最佳性能。

操作系统选择I/O调度器策略的可调参数为/sys/block/sda/queue/scheduler。

网络

Linux操作系统的服务器中同样会遇到网络问题,随着计算节点规模的扩大,网络在性能方面扮演着越来越重要的角色,因网络而生的糟糕性能常常备受指责。本节从配置检查和参数调整两方面展开讨论,分析并对网络性能进行优化。本节仍分为以下两个部分:

  1. 配置检查

  2. 参数调整

配置检查

网络性能调优之前需要检查的配置,如网络可使用接口数量、当前接口使用情况、接口的速度、是否使用链路聚合、设置驱动的参数、域名系统是否设置、是否有已知的可能性能问题等。

在Linux中,可以借助ifconfig 查看网络接口信息,也可以使用netstat、sar命令查看系统网络信息。例netstat命令可用于查看系统的网络连接状态、路由表、接口统计等信息:

如果网络流量接近网络设备的容量,可能会造成网络带宽瓶颈。如果没有网络设备进行网络通信,那么内核等待的可能是其它一些I/O设备。当知道网络发生了问题时,Linux提供了一组工具来确定哪些应用程序涉及其中。图2展示了调查分析网络性能问题的步骤。

图2 调查分析网络性能问题的步骤

参数调整

如果认为网络子系统存在瓶颈,就要对网络性能采取优化措施,因为网络问题可能会对其它子系统带来影响。比如,当数据包太小的时候,CPU使用率会受到明显的影响;如果有过多数量的TCP连接,内存使用会增加。为了提高网络性能可以对网络参数进行调整,本节介绍以下两种调整方法:

  1. 服务器相关参数调优

  2. TCP参数调优

服务器相关参数调优

可调参数可用sysctl命令查看和设置,并写到/etc/sysctl.conf文件中。内核中网络模块的相关参数都位于/proc/sys/net目录下,其中和TCP/IP协议相关的参数主要位于以下三个子目录中:core、ipv4和ipv6。可以调整其中的/proc/sys/net/core/ somaxconn、/proc/sys/net/ipv4/tcp_wmem等相关参数。

1、/proc/sys/net/ipv4/tcp_rmem,它包含3个值,分别指定一个socket读缓冲区的最小值、默认值和最大值。

2、/proc/sys/net/ipv4/tcp_wmem,它包含3个值,分别指定一个socket的TCP写缓冲区的最小值、默认值和最大值。

TCP参数调优

在net目录下有很多参数,包括IP、Ethernet、路由和网络接口参数,一般常调试以下几个参数:

  1. 套接字和TCP缓冲

  2. TCP积压队列

  3. 设备积压队列

  4. TCP阻塞控制

  5. TCP选项

  6. 网络接口


自编教材分享:第四章—系统配置优化(二)的评论 (共 条)

分享到微博请遵守国家法律