浅谈系统调优

/proc目录说明

/proc “文件系统”是一个目录,其中包含的文件层次结构代表了 Linux 内核的当前状态。它允许用户和管理员
查看系统的内核视图。
/proc 目录中还包含关于系统硬件及任何当前正在运行的程序信息。大部分在 /proc 中的文件是只读文件,
但一些文件(主要是 /proc/sys 文件)能够被用户和应用程序操作,以便向内核传达配置的修改信息。

cpu调优

内存调优

网络调优

存储和文件系统

阅读此章节可了解影响文件系统吞吐量、可伸缩性、响应能力、资源使用和可用性的格式和挂载选项

I/O 调度器

1、deadline

除了 SATA 磁盘为所有块设备的默认 I/O 调度器。Deadline 尝试为指向到达 I/O 调度器的请求提
供有保障的延迟。该调度器适合大多数用例,尤其适用于读取操作比写入操作更频繁的请求。

2、cfq

默认调度器只适用于标识为 SATA 硬盘的设备。完全公平队列调度器,cfq,将进程分成三个独立
类别:实时、尽其所能和空闲。实时类别的进程总是先于尽其所能类别进程执行,而尽其所能类别
进程总是在空闲类别进程之前执行。这意味着实时类别的进程可以使尽其所能和空闲进程等待处理
器时间而忍受“饥饿”。默认设置下,分配进程到尽其所能类别。

Cfq 使用历史数据来预测应用是否会在不久之后发出更多 I/O 请求。如果将有更多 I/O 请求,cfq
空闲则会等待新的 I/O,即使有来自其他进程的 I/O 在等待处理。

3、noop

noop I/O 调度器执行简单的 FIFO(先进先出)调度算法。请求通过简单的最后选中的缓存数据在
一般块层合并。对于使用最快存储的受 CPU 限制的系统,这是最佳调度器。

文件系统

1、XFS

XFS 是一个可靠的、且可高度缩放的 64 位文件系统。它是红帽企业版 Linux 7 中默认文件系统。
XFS 使用基于分区的分配,具有一些分配方案,包括预先分配和延迟的分配,这两种都会减少碎片
和辅助性能。它也支持促进故障恢复的元数据日志。当挂载并激活时,能够对 XFS 进行碎片整理和
放大,红帽企业版 Linux 7 支持几种 XFS 特定的备份和还原工具程序。

2、Ext4

Ext4 是 ext3 文件系统的可缩放扩展。它的默认行为对大部分工作负载是最佳的。然而,它只支持最
大容量为 50 TB的文件系统以及最大容量为 16 TB 的文件

3、GFS2

GFS2 是具有极高可用性附加装置的一部分,为红帽企业版 Linux 7 提供簇文件系统支持。GFS2 集
群提供所有服务器一致的文件系统图像,允许服务器在一个单独共享文件系统中读取和写入。

4、Btrfs(技术预览)

Btrfs 是提供缩放性、容错和方便管理的 copy-on-write(写时复制)文件系统。它包括内置快照和
RAID 支持,通过数据和元数据校验来提供数据的完整性。它也通过数据压缩提高性能及使用空间的
效率。Btrfs 作为一种技术预览,支持最大容量可达 50 TB 的文件系统。

性能问题监控和诊断

1、使用 vmstat 监控系统性能
Vmstat 报告整个系统的进程、内存、分页、阻止 I/O、中断和 CPU 活动。它能帮助管理员决定 I/O 子系统是
否对任何性能问题负责。

下列是与 I/O 性能最相关的信息:
si:切换进硬盘,或者以 KB 为单位写入交换空间。
so:从硬盘中切换出,或者以 kb 为单位从交换空间读取。
bi:写入块,或者以 kb 为单位阻止写操作。
bo:读取块,或者以 kb 为单位阻止读操作。
wa:等待 I/O 操作完成的队列部分。

交换空间和数据在同一设备上时,而且是内存使用指示器,切换进硬盘和从硬盘中切换出尤为有用。

2、使用 iostat 监控 I/O 性能。
Iostat 是由 sysstat 软件包提供的。它报告加载在您系统中的 I/O 设备。如果使用 vmstat 的分析显示 I/O 子系
统对性能下降负责,您可以使用 iostat 来确定负责的 I/O 设备。

3、使用 blktrace 详细说明 I/O 分析。
Blktrace 提供 I/O 子系统上时间如何消耗的详细信息。配套工具 blkparse 从 blktrace 读取原始输出,并产生
人们可读的输入和输出操作摘要,该摘要由 blktrace 记录

4、用 btt 分析 blktrace 输出。
Btt 作为 blktrace 软件包的一部分而被提供。它分析 blktrace 输出,并显示该数据用在每个 I/O 栈区域的时间
量,使它更容易在 I/O 子系统中发现瓶颈。

5、使用 seekwatcher 分析 blktrace 输出。
seekwatcher 工具可使用 blktrace 输出随时间绘制 I/O 图表。它集中在硬盘 I/O 的 LBA(逻辑块地址)、每
秒以兆计算的吞吐量、每秒搜寻的数量和每秒 I/O 操作。这能帮助您了解何时达到设备操作系统每秒的限制。

6、使用 SystemTap 监控存储

设置和调优

1、配置存储性能的调整配置文件

Tuned 和 tuned-adm 提供一些旨在为特定用例提高性能的配置文件

2、设置默认 I/O 调度器

如需设置默认 I/O 调度器,在重启时通过向内核命令行附加 elevator 参数来指定欲使用的调度器,或通过编辑
/etc/grub2.conf 文件。

elevator=scheduler_name  
为设备配置 I/O 调度器

如需设置特定存储设备的调度器或调度器优先顺序,编辑 /sys/block/devname/queue/scheduler 文
件,devname 为您欲配置的设备名称。

# echo cfq > /sys/block/hda/queue/scheduler
1、调整deadline调度器

使用 deadline 时,排队的 I/O 请求将分为读批处理或者写批处理,然后按照 LBA 递增的执行顺序调度。默认设置下,读批处理比写批处理优先处理,这是因为在读 I/O 上应用程序易被阻止。在批处理被处理后,deadline 会检查写操作因等待处理器时间而处于多久的“饥饿”状态,并合理调度下一个读或者写批处理。

下列参数影响 deadline 调度器行为:

fifo_batch
front_merges
read_expire
write_expire
writes_starved

2、调整 cfq 调度器

使用 cfq 时 ,进程分为三类:实时、尽其所能和空闲。尽其所能进程之前调度所有实时进程,而空闲进程之前调度尽其所能进程。默认设置下,进程归类为尽其所能。可使用 ionice 命令手动调整进程分类。

通过使用下列参数进一步调整 cfq 调度器的行为。这些参数通过改变/sys/block/devname/queue/iosched 目录下的指定文件,基于每个设备设置的

back_seek_max
back_seek_penalty
fifo_expire_async
fifo_expire_sync
group_idle
group_isolation
low_latency
quantum
slice_async
slice_idle
slice_sync


不向无法遭受大搜寻 penalty(惩罚)的硬件推荐 cfq 调度器,例如快速外部存储数列或者固态硬盘。如果您需要在此存储上使用 cfq ,需要编辑下列配置文件:

设置 /sys/block/devname/queue/ionice/slice_idle为0
设置 /sys/block/devname/queue/ionice/quantum 为64
设置 /sys/block/devname/queue/ionice/group_idle为
3、调整 noop 调度器

noop I/O 调度器主要对使用快速存储的受 cpu 限制的系统有用。请求在块层合并,因此通过编辑/sys/block/sdX/queue/ 目录中的文件中块层参数,修改noop 行为。

add_random
max_sectors_kb
nomerges
nr_requests
optimal_io_size
read_ahead_kb
旋转
rq_affinity

一些系统监控程序包

###### procps-ng软件包

1、查看 procps-ng安装包中有哪些工具

[root@www doc]# rpm -ql procps-ng
/usr/bin/free //查看内存使用情况
/usr/bin/pgrep //
/usr/bin/pkill //
/usr/bin/pmap //
/usr/bin/ps //提供选定的一组运行进程快照
/usr/bin/pwdx //
/usr/bin/skill //
/usr/bin/slabtop //
/usr/bin/snice //
/usr/bin/tload //
/usr/bin/top //
/usr/bin/uptime //
/usr/bin/vmstat //虚拟内存统计数据工具,提供关于系统进程、内存、分页、输入/输出、中断和 CPU 活动的即时报告。
/usr/bin/w //
/usr/bin/watch //
/usr/lib64/libprocps.so.4
/usr/lib64/libprocps.so.4.0.0
/usr/sbin/sysctl //

sysstat软件包

1、查看sysstat软件包中有哪些工具

[root@www bin]# rpm -ql sysstat
/usr/bin/cifsiostat             //   
/usr/bin/iostat                 //
/usr/bin/mpstat                 //
/usr/bin/nfsiostat-sysstat      //
/usr/bin/pidstat                //
/usr/bin/sadf                  //
/usr/bin/sar                   //收集及报告系统当天到目前为止发生的活动信息
/usr/bin/tapestat              //
kernel-tools软件包

1、查看kernel-tools软件包中的工具

[root@www bin]# rpm -ql kernel-tools
/etc/sysconfig/cpupower
/usr/bin/centrino-decode
/usr/bin/cpupower
/usr/bin/powernow-k8-decode
/usr/bin/tmon
/usr/bin/turbostat    //对 Intel® 64 位处理器中处理器的拓扑、频率、空闲的电源状态统
计、温度和用电量的报告
/usr/bin/x86_energy_perf_policy
iproute软件包

1、查看iproute软件包中的工具

[root@www bin]# rpm -ql iproute
/usr/sbin/arpd
/usr/sbin/bridge
/usr/sbin/cbq
/usr/sbin/ctstat
/usr/sbin/devlink
/usr/sbin/genl
/usr/sbin/ifcfg
/usr/sbin/ifstat
/usr/sbin/ip
/usr/sbin/lnstat
/usr/sbin/nstat
/usr/sbin/routef
/usr/sbin/routel
/usr/sbin/rtacct
/usr/sbin/rtmon
/usr/sbin/rtpr
/usr/sbin/rtstat
/usr/sbin/ss       //ss 是一个命令行实用程序,显示 socket 的统计信息,使管理员能够根据时间来评估设备性能。
/usr/sbin/tc
numactl软件包

1、查看numactl软件包中的工具

[root@www bin]# rpm -ql numactl
/usr/bin/memhog
/usr/bin/migratepages
/usr/bin/migspeed
/usr/bin/numactl
/usr/bin/numademo
/usr/bin/numastat  //numastat 工具以每一个 NUMA 节点为基础了,显示处理器和操作系统的内存统计数据
valgrind软件包

1、查看valgrind软件包中的工具

[root@www bin]# rpm -ql valgrind
/usr/bin/callgrind_annotate
/usr/bin/callgrind_control
/usr/bin/cg_annotate
/usr/bin/cg_diff
/usr/bin/cg_merge
/usr/bin/ms_print
/usr/bin/valgrind
/usr/bin/valgrind-di-server
/usr/bin/valgrind-listener
/usr/bin/vgdb
# util-linux软件包

Util-linux 软件包包含许多工具。其中比较重要的是加载、卸载、格式化、分区和管理硬盘驱动器,打开 tty 端口和得到内核消息。


[root@www bin]# rpm -ql util-linux
/usr/bin/cal
/usr/bin/chfn
/usr/bin/chmem
/usr/bin/chrt
/usr/bin/chsh
/usr/bin/col   //过滤来自输入的反向行馈送内容。
/usr/bin/colcrt
/usr/bin/colrm  //在某个文件中删除列。
/usr/bin/column
/usr/bin/dmesg  //显示内核的启动信息。
/usr/bin/eject
/usr/bin/fallocate
/usr/bin/findmnt
/usr/bin/flock
/usr/bin/getopt
/usr/bin/hexdump
/usr/bin/i386
/usr/bin/ionice
/usr/bin/ipcmk
/usr/bin/ipcrm
/usr/bin/ipcs
/usr/bin/isosize
/usr/bin/kill
/usr/bin/linux32
/usr/bin/linux64
/usr/bin/logger
/usr/bin/login
/usr/bin/look
/usr/bin/lsblk
/usr/bin/lscpu
/usr/bin/lsipc
/usr/bin/lslocks
/usr/bin/lslogins
/usr/bin/lsmem
/usr/bin/lsns
/usr/bin/mcookie
/usr/bin/more
/usr/bin/mount
/usr/bin/mountpoint
/usr/bin/namei
/usr/bin/nsenter
/usr/bin/prlimit
/usr/bin/raw
/usr/bin/rename
/usr/bin/renice
/usr/bin/rev
/usr/bin/script
/usr/bin/scriptreplay
/usr/bin/setarch
/usr/bin/setpriv
/usr/bin/setsid
/usr/bin/setterm
/usr/bin/su
/usr/bin/tailf
/usr/bin/taskset
/usr/bin/ul
/usr/bin/umount
/usr/bin/unshare
/usr/bin/utmpdump
/usr/bin/uuidgen
/usr/bin/wdctl
/usr/bin/whereis
/usr/bin/write
/usr/bin/x86_64
/usr/sbin/addpart
/usr/sbin/agetty
/usr/sbin/blkdiscard
/usr/sbin/blkid
/usr/sbin/blockdev
/usr/sbin/cfdisk
/usr/sbin/chcpu
/usr/sbin/clock
/usr/sbin/ctrlaltdel
/usr/sbin/delpart
/usr/sbin/fdformat
/usr/sbin/fdisk
/usr/sbin/findfs
/usr/sbin/fsck
/usr/sbin/fsck.cramfs
/usr/sbin/fsck.minix
/usr/sbin/fsfreeze
/usr/sbin/fstrim
/usr/sbin/hwclock
/usr/sbin/ldattach
/usr/sbin/losetup
/usr/sbin/mkfs
/usr/sbin/mkfs.cramfs
/usr/sbin/mkfs.minix
/usr/sbin/mkswap
/usr/sbin/nologin
/usr/sbin/partx
/usr/sbin/pivot_root
/usr/sbin/readprofile
/usr/sbin/resizepart
/usr/sbin/rtcwake
/usr/sbin/runuser
/usr/sbin/sfdisk
/usr/sbin/sulogin
/usr/sbin/swaplabel
/usr/sbin/swapoff
/usr/sbin/swapon
/usr/sbin/switch_root
/usr/sbin/wipefs
/usr/sbin/zramctl
hwclock软件包

1、查看hwclock软件包中的工具

[root@www ~]# rpm -ql hwloc
/usr/bin/hwloc-annotate
/usr/bin/hwloc-assembler
/usr/bin/hwloc-assembler-remote
/usr/bin/hwloc-bind
/usr/bin/hwloc-calc
/usr/bin/hwloc-compress-dir
/usr/bin/hwloc-diff
/usr/bin/hwloc-distances
/usr/bin/hwloc-distrib
/usr/bin/hwloc-gather-topology
/usr/bin/hwloc-info
/usr/bin/hwloc-ls
/usr/bin/hwloc-patch
/usr/bin/hwloc-ps
/usr/bin/lstopo-no-graphics
/usr/lib/systemd/system/hwloc-dump-hwdata.service
/usr/sbin/hwloc-dump-hwdata
irqbalance软件包

irqbalance 是一个通过分配处理器硬件中断以提高系统性能的命令行工具。

numad软件包

numad 是一个自动的 NUMA 关联管理后台程序。它监控系统的 NUMA 拓扑和资源使用率,目的是为了动态地
提高 NUMA 的资源分配和管理(从而提高系统性能)。numad 可以根据系统的工作负载来为性能基准提供高
达 50% 的改善。它还提供预先安置咨询服务,可以通过多种工作关联系统进行查询,以此为最初绑定的 CPU
和内存资源的进程提供协助。

tuned 和 tuned-adm

tuned 是一个调整的后台程序,在某种工作负载量下通过设置调整配置文件使操作系统有更好的性能表现。对
其进行配置,使其对 CPU 和网络使用的变化做出响应,调整设置以提高激活设备的性能,并减少在未激活设
tuned-adm 是一个命令行工具,提供一些不同配置文件以提高一些特定用例性能。它也提供一个评估系统和
输出推荐的调整配置文件的子命令(tuned-adm recommend)。在您系统安装时它也能设置默认配置文
件,以便能用于返回默认配置文件。

tuned-adm 提供的文件分为两类:节能文件和性能提升文件。性能提升文件的内容如下,其侧重点分别为:

存储和网络的低延迟
存储和网络的高吞吐量
虚拟计算机性能
虚拟主机性能

猜你喜欢

转载自blog.csdn.net/qxxhjy/article/details/81458749
今日推荐