精华内容
参与话题
问答
  • 浅谈系统调优

    千次阅读 2018-08-06 18:06:20
    /proc目录说明 /proc “文件系统”是一个目录,其中包含的文件层次结构代表了 Linux 内核的当前状态。它允许用户和管理员 查看系统的内核视图。 /proc 目录中还包含关于系统硬件及任何当前正在运行...cpu调优 ...

    title: 浅谈系统调优
    date: 2018-07-27 14:14:18
    tags:

    /proc目录说明

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

    一些系统监控程序包

    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 提供的文件分为两类:节能文件和性能提升文件。性能提升文件的内容如下,其侧重点分别为:

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

    cpu调优

    1、 系统拓扑
    在现代计算机技术中,一个"中央"处理单元的观念是误导性的,因为大部分现代化的系统都有多个处理器。
    这些处理器是如何相互连接,并且如何连接至其他系统资源 —"系统拓扑"— 会对系统和应用程序的性能以
    及系统调节选项产生巨大的影响。
    现代计算机技术主要运用两种主要的拓扑类型

    • SMP 拓扑

    SMP(对称多处理器)拓扑允许所有的处理器同时访问内存。然而,由于内存访问权限的共享性和
    平等性,固然会迫使所有 CPU 及 SMP 系统序列化的内存访问权限的局限性增加,目前这种情况常
    不被接受。因此,几乎所有现代服务器系统都是 NUMA(非一致性内存访问)机器。

    • NUMA 拓扑

    比起 SMP 拓扑,NUMA(非一致性内存访问)拓扑是近来才开发的。在 NUMA 系统中,多个处理
    器物理分组至一个 socket。每个 socket 都有一个专用内存区,对该内存进行本地访问的服务器统称
    为一个节点。

    同一个节点上的服务器能高速访问该节点的存储体,但访问其他节点上的存储体速度就较慢。因
    此,访问非本地存储体会造成性能的损失。

    考虑到性能损失,服务器执行应用程序时,NUMA 拓扑结构系统中对性能敏感的应用程序应访问同
    一节点的内存,并且应尽可能地避免访问任何远程内存。

    因此,在调节 NUMA 拓扑结构系统中的应用程序性能时,重要的是要考虑这一应用程序的执行点以
    及最靠近此执行点的存储体。

    在 NUMA 拓扑结构系统中,/sys 文件系统包含处理器、内存及外围设备的连接信息。/sys/devices/system/cpu 目录包含处理器在系统中相互连接的详情。
    /sys/devices/system/node 目录包含系统中 NUMA 的节点信息以及节点间的相对距离。

    2、确定系统拓扑结构

    很多指令能帮助用户了解系统的拓扑结构。numactl --hardware 指令概述了系统的拓扑结构。

    监控和诊断性能问题

    1、turbostat

    2、numastat

    3、/proc/中断

    配置建议

    1、配置内核滴答记号时间

    2、设置硬件性能策略

    3、使用taskset设置处理器关联

    4、使用numaactl管理关联

    5、使用numad进行自动化NUMA关联管理

    6、调节调度策略

    7、设置中断关联

    8、使用Tuna配置CPU,线程和中断关联

    内存调优

    注意事项

    1、页面大小

    2、转换后背缓冲区大小

    监控及诊断性能问题

    1、使用 vmstat 监控内存使用量

    2、用 Valgrind 分析应用程序的内存使用量

    3、使用 Memcheck 分析内存使用量

    4、使用 Cachegrind 分析缓存使用量

    5、使用 Massif 分析堆栈空间

    配置工具

    1、配置大页面

    2、配置系统内存容量

    • 虚拟内存参数
    • 文件系统参数
    • 内核参数

    网络调优

    注意事项

    1、调节前

    网络性能问题最常见的是由硬件故障或基础结构层故障造成的。红帽极力推荐在开始调节网络堆栈前核实硬件
    及基础结构层是否在按预期运行。

    2、数据包接收瓶颈

    • NIC 硬件缓冲区或循环缓冲区
    • 硬件或软件中断队列
    • 应用程序的 socket接收队列
    监控和诊断性能问题

    1、ss

    2、ip

    3、dropwatch

    4、ethtool

    5、/proc/net/snmp

    6、使用 SystemTap 监控网络

    配置工具

    1、网络性能 Tuned-adm 配置文件

    2、配置硬件缓冲区

    3、配置中断队列

    • 配置繁忙轮询

    4、配置 socket 接收队列

    • 减少传入流量的速度
    • 增加队列深度

    5、配置 RSS

    6、配置 RPS

    7、配置 RFS

    8、配置加速 RFS

    存储和文件系统

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

    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
    
    展开全文
  • 性能调优攻略|系统调优

    千次阅读 2017-03-02 23:15:51
    我们都知道,Unix/Linux 下把所有的设备都当成文件来进行 I/O,所以大部分操作都是 I/O 相关的系统调用。主要的 I/O 方式如下: 同步阻塞式 I/O; 同步无阻塞式; I/O 异步; AIO 方式。这种 I...

    1/ I/O 模型

    我们都知道,Unix/Linux 下把所有的设备都当成文件来进行 I/O,所以大部分操作都是 I/O 相关的系统调用。主要的 I/O 方式如下:

    1. 同步阻塞式 I/O;

    2. 同步无阻塞式;

    3. I/O 异步;

    4. AIO 方式。这种 I/O 模型是一种处理与I/O 并行的模型。I/O 请求会立即返回,说明请求已经成功发起。

    AIO 方式因为没有任务的阻塞,无论是 I/O,还是事件通知上,都可以充分利用 CPU,比起同步无阻塞好处就是不需要轮询。

    Nignx 的高效,就是通过使用 epoll 的 AIO 方式来进行 I/O 的。

    2/ 多核CPU 调优

    关于 CPU 的多核技术,我们知道,CPU0是很关键,如果0号 CPU 利用率比较高,则性能下降比较利害,因为 CPU0具有调整功能,所以,不能任由操作系统负载均衡。通过手动分配 CPU 核,让其不过多占用 CPU0,或者通过分离关键进程和非关键进程各占其核。

    多核CPU 还有一个技术叫 NUMA 技术(Non-Uniform Memory Access)。传统的多核运算是使用 SMP(Symmetric Multi-Processor)模型,多个处理器共享一个集中的存储器和I/O 总线。因此才会有一致存储器访问的问题,一致性意味着性能问题。

    性能调优攻略|系统调优

    在 Linux 下,对 NUMA 调优的命令是:numactl。如下面的命令:(指定命令“program arg1 arg2”运行在node 0 上,其内存分配在node 0 和 1上)

    numactl --cpubind=0 --membind=0,1 program arg1 arg2

    上面这个命令并不好,因为内存跨越了两个node,这非常不好。最好的方式是只让程序访问和自己运行一样的node,如:

    numactl --membind 1 --cpunodebind 1 --localalloc application

    3/ 文件系统调优

    关于文件系统,因为文件系统也是有 cache 的,所以,为了文件系统有最大的性能。首要的事情就是分配足够大的内存,这个非常关键,在 Linux 下可以使用 free 命令来查看 free/used/buffers/cached,总的来说,buffers 和 cached 应该有40%左右。目前速度比较快还 Intel SSD 固态硬盘,但是写次数有限。

    对于文件系统调优,是通过修改配置,对于 Linux 的 Ext3/4来说,几乎在所有情况下都有所帮助的一个参数是关闭文件系统访问时间,在/etc/fstab 下可以看文件系统有没有 noatime 参数,还有一个是 dealloc,它可以让系统在最后时刻决定写入文件发生时使用哪个块,可优化这个写入程序。

    对于日志模式:joumal、ordered、writeback。默认设置 data=ordered 提供性能和防护之间的最佳平衡。对于 Ext4默认设置基本上是最佳优化了。

    在 Linux 下查看 I/O 的使用——iotop,可以帮助你查看各个进程的磁盘读写负载情况。

    4/ 总结

    真正提高 I/O 性能方式是把和外设 I/O 的次数降到最低,最好没有。通常对于读来说,内存 cache 可以从质上提升性能,因为内存比外设快太多。对于写来说,cache 主要写的数据,少写几次,但是 cache 带来的问题就是实时性的问题,也就是 Latency 会变大。我们就需要在写的次数上做相应平衡。

    谢谢!大家读完此文,欢迎大家留言讨论系统调优过程中还有哪些解决方案。

    展开全文
  • 系统性能调优的一些方法

    千次阅读 2017-03-29 15:45:46
    了解下,如果有用到的地方不至于无从下手了~~,也希望可以帮到路过的人^^~

    1 街灯讹方法

    用户随意选取自己熟悉的观测工具测量,相当于使用top(1)不是因为这么做有道理,而是因为不知道怎么使用其它的工具,可能找到的问题是真的问题,但未必是你想找的问题

    2 随机变动

    用户随机猜测问题可能存在的位置,然后做出改动知道问题消失eg 随意选择一个变量改动、朝着某个方向修改、测量性能、朝着另一个方向修改、测试性能(5性能优于3?保存修改,否则返回1),这样做存在的风险是生产高峰期可能会产生很严重的后果,要准备好回滚方案

    3 Ad Hoc核对清单法

    把所有该 考虑的因素写入一份清单,检查人员去覆盖所有的情况,一一排查

    4 问题陈述法

    1)是什么让你觉得产生了性能问题

    2)系统之前运行的好吗

    3)最近有什么改动?硬件、软件、负载 ?

    4)问题可以复现?

    5)问题会影响其它的程序吗

    6)环境是大概什么样的 ? 使用了哪些硬件和软件?什么版本,什么配置

    5 科学法:

    问题 ? 假设--> 预测 --> 试验 --> 分析

    不断的用结果去修正判断

    6 工具法:列出所有可用工具及对于每个工具的可提供的有用指标,怎样阐释这些指标

    7 USE方法,简言之就是对于所有的资源监测它的使用率,饱和度和错误

    资源列表:CPU(插槽、核、硬件线程) 内存(DRAM) 网络接口(以太网端口) 存储设备(磁盘) 控制器(存储 网络) 互联(CPU、内存、IO)

    8 工作负载特征归纳:

    1) 负载是谁产生的?进程ID、用户ID、远端的IP地址 ?

    2)负载为什么会被调用?代码路径、堆栈跟踪?

    3)负载的特征是什么? IOPS、吞吐量、方向类型(读取?写入?)、包含变动(标准方差)如果有的话

    4)负载是怎样随时间变化的?有日常模式?

    9 向下挖掘分析:

    1)查询多了数据库就开始变慢 ? 

    2)由于内存换页磁盘IO延时?

    3)数据库内存使用变大 ?

    4)分配器消耗的内存增多?

    5)分配器存在内存碎片问题 ?

    10 延时分析:

    1)存在延时?Y

    2)请求时间大量的花在哪里?CPU或者文件IO

    3)不花在CPU上的时间花在哪里?文件系统IO

    4)文件系统的IO是花在磁盘上还是锁竞争?磁盘IO

    5)磁盘IO的主要时间是随机寻址的时间还是数据传输的时间? 数据传输

    11 事件跟踪 tcpdump iosnoop iostat

    12 基础线统计 先了解正常是什么

    13 静态性能调整 系统空闲时检查

    1)该组件是必须的?

    2)配置是针对预期的工作负载设定的 ?

    3)组件的自动配置是对预期的工作负载来说最优的?

    4)有组件出现错误?是在降级状态?

    14 缓存调优

    从应用程序到磁盘会有多级缓存来提高IO性能

    1)缓存的大小应尽量和栈的高度一样,靠近工作秩序的地方,减少命中缓存的资源开销

    2)确认缓存开启并确实在工作

    3)确认缓存命中率

    4)若缓存大小是动态的,确认它的当前尺寸

    5)针对工作负载调整缓存,这项工作以来缓存的可调整参数

    6)针对缓存调整工作负载



    展开全文
  • 系统调优与优化

    千次阅读 2009-10-28 22:09:00
    在进行系统调优过程中,考虑以下几个方面:1、硬件系统优化 a)服务器硬件系统 b)网络基础设施2、操作系统优化,包括不同的操作系统,包括: a)windows操作系统 b)Linux操作系统 c)Unix操作系统3、协议层...

     在进行系统调优过程中,考虑以下几个方面:

    1、硬件系统优化

     a)服务器硬件系统

     b)网络基础设施

    2、操作系统优化,包括不同的操作系统,包括:

     a)windows操作系统

     b)Linux操作系统

     c)Unix操作系统

    3、协议层优化

    4、应用服务器优化

     a)web应用服务器

     b)中间件服务器

    5、数据库服务器优化

     a)MySql服务器

    b)Oracle数据库服务器

    6、代码优化

     

    通过这些方面的优化,保证系统性能达到最优!

     

     

     

     

     

    展开全文
  • 系统性能调优

    2013-11-06 16:21:41
    在选择优化的方式方法时,大家可以参照以下章节调优方法,架构优化递进,进行正确的,有针对性,有步骤的优化。可能会发现部分指导思想或许有相悖嫌疑,大可不必较真,系统优化的过程本身就是一个不断分离+共享的...
  • 浅谈高并发系统性能调优

    千次阅读 2018-08-30 18:00:00
    女主宣言今天带来的是一个篇长文,主要讲解高并发系统架构指标及调优测试经验,希望能对您的研究有所帮助。本文最先发布于 OpsDev,转载已获取作者授权。PS:丰富的一线技术...
  • Linux系统性能监控与调优

    千次阅读 2018-09-14 10:48:59
    因为请求量过大,系统太繁忙,所以响应速度自然会低 Latency越好,能支持的Throughput就会越高。因为Latency短说明处理速度快,于是就可以处理更多的请求 最佳线程数量=((线程等待时间+线程cpu时间)...
  • 1.关闭SELINUX功能1.1 修改配置文件,使关闭SELINUX永久生效sed 's#SELINUX=enforcing#SELINUX=disables...重启系统生效1.2临时关闭SELINUX[root@hadoop01 xningge]# setenforceusage: setenforce [ Enforcing | Per...
  • 对于Linux系统新手而言,可能对系统调优参数了解的并不多,介绍了Liunx系统最重要的一些调优参数以及它们各自的含义。 所有的TCP/IP调优参数都位于/proc/sys/net/目录。例如, 下面是最重要的一些调优参数,后面是...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • linux系统调优

    2019-04-09 12:00:31
    概括:linux系统调优主要从以下方面进行 1、linux系统调优及CPU调优 2、linux系统调优及内存调优 3、linux系统调优及网络调优 4、linux系统调优及IO调优 一、linux系统调优及CPU调优 批处理——以前的大型机...
  • Linux系统调优之网络的调优

    千次阅读 2017-05-23 12:02:32
    网络的调优 1.Bonding技术 网卡绑定技术,它的功能有: 双线冗余 带宽增备 网卡绑定也称作"网卡捆绑",就是使用多块物理网卡虚拟成为一块网卡,以提供负载均衡或者冗余,增加带宽的作用。当一个网卡坏掉时,不会...
  • Linux系统调优-tuned

    2015-03-02 13:08:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • LINUX系统性能调优

    千次阅读 2011-08-20 16:59:58
    我们可以在文章的开始就列出一个列表,列出可能影响Linux操作系统性能的一些调优参数,但这样做其实并没有什么价值。因为性能调优是一个非常困难的任务,它要求对硬件、操作系统、和应用都有着相当深入的了解。如果...
  • Linux性能调优方法总结(一)

    千次阅读 2018-05-12 13:30:12
    网络性能调优 大多数Linux发行版都定义了适当的缓冲区和其他TCP参数,可以通过修改这些参数来分配更多的内存,从而改进网络性能。设置内核参数的方法是通过proc接口,也就是通过读写/proc中的值。幸运的是,sysctl...
  • linux系统调优

    2018-09-14 15:32:00
    linux系统调优 例1:找出前当系统中,CPU负载过高的服务器? 服务器1: load average: 0.15, 0.08, 0.01 1核 服务器2: load average: 4.15, 6.08, 6.01 1核 服务器3: load average: ...
  • linux 调优系列

    千次阅读 2008-05-26 05:16:00
    Linux系统内核:修改TCP/IP调优参数所有的TCP/IP调优参数都位于/proc/sys/net/目录。例如, 下面是最重要的一些调优参数, 后面是它们的含义: 1. /proc/sys/net/core/rmem_max — 最大的TCP数据接收缓冲。 2. /proc/sys...
  • 1. tomcat 调优 Catalina.sh 最上面添加 JVM 参数, 可以根据情况添加不同的JVM 参数: JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -...
  • 关于操作系统调优

    2013-04-15 10:55:10
    关于调优的意思,可能许多人认为是将软件本身的性能提到到二到三倍吧。调优的真正含义是“即找到瓶颈并去除之”。本来,想让原有硬件或软件... 另外,现在的操作系统和中间件的设置上在默认状态下就能充分发挥其性能。
  • Linux 性能调优的几种方法(一)

    千次阅读 2007-09-07 11:18:00
    原贴:http://www.serverol.com/tech/896.html Linux 性能调优的几种方法(一) 2005-12-16 10:29:03 menling 来源:中华服务器网 点击:1925次 加入收藏夹
  • Linux系统调优

    2016-09-29 22:09:43
    大纲:一、概述二、什么是性能调优?(what)三、为什么需要性能调优?(why)四、什么时候需要性能调优?...(How)八、总结注,硬件配置:CUP Xeon E5620 x 2 8核心, 内存 16G , 硬盘 RAID 10,操作系统: CentOS 6...
  • 开心一笑【1.年轻的时候,我们常常冲着镜子做鬼脸,年老的时候,镜子算是扯平了。2.男孩穷者养,不然不晓得奋斗,女孩富着养,不然人家一块...解决问题最近工作的任务就是做公司系统性能调优。其中用的比较多的命令,在
  • 原贴:http://blog.chinaunix.net/u/26011/showart_365527.htmlLinux 性能调优的几种方法 按照传统,Linux不同的发行版本和不同的内核对各项参数及设置均做了改动,从而使得系统能够获得更好的性 能。下边将分四...
  • linux系统参数调优

    千次阅读 2019-08-09 10:23:09
    一 CPU 参数调优 1.1性能模式调整 1.2开启服务器超线程功能 1.3Numa参数调整 二 内存参数调优 2.1THP(Transparent HugePages) 2.2 ksm调整 2.3swappiness调整 2.4min_free_kbytes调整 2.5 di...
  • 本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.2节的翻译原文地址:http://www.redbooks.ibm.com/redpapers/pdfs/redp4285.pdf原文作者:Eduardo Ciliendo, Takechika ...1.2 Linux内存架构为了执行
  • 之前写过两篇关于linux系统调优的文档,这里只做补充,希望可以帮助到大家 1. Raid磁盘阵列选择 Raid5和raid10的选择都是用的非常多的,随着时间的推移,技术的发展,硬盘的性能也越来越好,15000转的硬盘很常见...
  • 系统调优相关配置

    2010-06-12 09:43:22
    最近项目上相关的配置   jetty 参数调整如下: JAVA_OPTIONS="$JAVA_OPTIONS -server -Xmx2048m -Xms2048m -XX:NewRatio=3 -Xnoclassgc -XX:MaxNewSize=256m -XX:MaxPermSize=500m -XX:...
  • 教程名称:Siege 测评后的Linux系统调优(技术文档)课程目录:【】Siege linux测评【】[原创]zabbix 安装使用手册(HA) v1.2【】系统调优之一CPU子系统【】系统调优之三内存子系统【】系统调优之二内存子系统【】...
  • Rhel7系统调优

    2020-06-17 15:59:34
    关闭selinux功能 selinux是美国国家安全局对于强制访问控制的实现,这个功能很强大,同时又很麻烦,大多是运维人员都...linux系统和windows系统类似,开机也会自启一些服务,没用的服务即会占用资源又有安全隐患,需要

空空如也

1 2 3 4 5 ... 20
收藏数 144,009
精华内容 57,603
关键字:

系统调优