0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用 sar 和 kSar 来发现 Linux 性能瓶颈

Linux爱好者 来源:未知 作者:李建兵 2018-03-17 10:31 次阅读

sar命令用用收集、报告、或者保存 UNIX / Linux 系统的活动信息。它保存选择的计数器到操作系统的/var/log/sa/sadd文件中。从收集的数据中,你可以得到许多关于你的服务器的信息:

CPU 使用率

内存页面和使用率

网络 I/O 和传输统计

进程创建活动

所有的块设备活动

每秒中断数等等

sar命令的输出能够用于识别服务器瓶颈。但是,分析sar命令提供的信息可能比较困难,所以要使用 kSar 工具。kSar 工具可以将sar命令的输出绘制成基于时间周期的、易于理解的图表。

sysstat 包

sar、sa1、和sa2命令都是 sysstat 包的一部分。它是 Linux 包含的性能监视工具集合。

sar:显示数据

sa1和sa2:收集和保存数据用于以后分析。sa2shell 脚本在/var/log/sa目录中每日写入一个报告。sa1shell 脚本将每日的系统活动信息以二进制数据的形式写入到文件中。

sadc —— 系统活动数据收集器。你可以通过修改sa1和sa2脚本去配置各种选项。它们位于以下的目录:

/usr/lib64/sa/sa1(64 位)或者/usr/lib/sa/sa1(32 位) —— 它调用sadc去记录报告到/var/log/sa/sadX格式。

/usr/lib64/sa/sa2(64 位)或者/usr/lib/sa/sa2(32 位) —— 它调用sar去记录报告到/var/log/sa/sarX格式。

如何在我的系统上安装 sar?

在一个基于 CentOS/RHEL 的系统上,输入如下的yum 命令去安装 sysstat:

Loaded plugins: downloadonly,fastestmirror,priorities,

: protectbase,security

Loading mirror speeds from cached hostfile

*addons: mirror.cs.vt.edu

*base: mirror.ash.fastserv.com

*epel: serverbeach1.fedoraproject.org

*extras: mirror.cogentco.com

*updates: centos.mirror.nac.net

0packages excluded due torepository protections

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Packagesysstat.x86_640:7.0.2-3.el5set tobe updated

--> Finished Dependency Resolution

Dependencies Resolved

====================================================================

PackageArchVersion Repository Size

====================================================================

Installing:

sysstatx86_647.0.2-3.el5 base173k

Transaction Summary

====================================================================

Install1Package(s)

Update 0Package(s)

Remove 0Package(s)

Total download size: 173k

Isthisok[y/N]: y

Downloading Packages:

sysstat-7.0.2-3.el5.x86_64.rpm | 173kB 00:00

Running rpm_check_debug

Running Transaction Test

Finished Transaction Test

Transaction Test Succeeded

Running Transaction

Installing : sysstat1/1

Installed:

sysstat.x86_640:7.0.2-3.el5

Complete!

为 sysstat 配置文件

编辑 /etc/sysconfig/sysstat 文件去指定日志文件保存多少天(最长为一个月):

# vi /etc/sysconfig/sysstat

示例输出如下 :

# keep log for 28 days

# the default is 7

HISTORY=28

保存并关闭这个文件。

找到 sar 默认的 cron 作业

默认的 cron 作业位于 /etc/cron.d/sysstat:

# cat /etc/cron.d/sysstat

示例输出如下:

# run system activity accounting tool every 10 minutes

*/10 * * * * root /usr/lib64/sa/sa111

# generate a daily summary of process accounting at 23:53

5323 * * * root /usr/lib64/sa/sa2 -A

告诉 sadc 去报告磁盘的统计数据

使用一个文本编辑器去编辑 /etc/cron.d/sysstat 文件,比如使用 vim 命令,输入如下:

# vi /etc/cron.d/sysstat

像下面的示例那样更新这个文件,以记录所有的硬盘统计数据(-d 选项强制记录每个块设备的统计数据,而 -I 选项强制记录所有系统中断的统计数据):

# run system activity accounting tool every 10 minutes

*/10 * * * * root /usr/lib64/sa/sa1 -I -d11

# generate a daily summary of process accounting at 23:53

5323 * * * root /usr/lib64/sa/sa2 -A

在 CentOS/RHEL 7.x 系统上你需要传递-S DISK选项去收集块设备的数据。传递-S XALL选项去采集如下所列的数据:

磁盘

分区

系统中断

SNMP

IPv6

# Run system activity accounting tool every 10 minutes

*/10 * * * * root /usr/lib64/sa/sa1 -SDISK11

# 0 * * * * root /usr/lib64/sa/sa1 600 6 &

# Generate a daily summary of process accounting at 23:53

5323 * * * root /usr/lib64/sa/sa2 -A

# Run system activity accounting tool every 10 minutes

保存并关闭这个文件。

打开 CentOS/RHEL 版本 5.x/6.x 的服务

输入如下命令:

chkconfig sysstat on

service sysstat start

示例输出如下:

Calling the system activity data collector(sadc):

对于 CentOS/RHEL 7.x,运行如下的命令:

# systemctl enable sysstat

# systemctl start sysstat.service

# systemctl status sysstat.service

示例输出:

●sysstat.service - Resets System Activity Logs

Loaded: loaded(/usr/lib/systemd/system/sysstat.service;enabled;vendor preset: enabled)

Active: active(exited)since Sat2018-01-0616:33:19IST;3sago

Process: 28297ExecStart=/usr/lib64/sa/sa1 --boot(code=exited,status=0/SUCCESS)

Main PID: 28297(code=exited,status=0/SUCCESS)

Jan0616:33:19centos7-box systemd[1]: Starting Resets System Activity Logs...

Jan0616:33:19centos7-box systemd[1]: Started Resets System Activity Logs.

如何使用 sar?如何查看统计数据?

使用 sar 命令去显示操作系统中选定的累积活动计数器输出。在这个示例中,运行 sar 命令行,去实时获得 CPU 使用率的报告:

# sar -u 3 10

示例输出:

Linux2.6.18-164.2.1.el5(www-03.nixcraft.in) 12/14/2009

09:49:47PM CPU %user %nice %system %iowait %steal %idle

09:49:50PM all5.660.001.220.040.0093.08

09:49:53PM all12.290.001.930.040.0085.74

09:49:56PM all9.300.001.610.000.0089.10

09:49:59PM all10.860.001.510.040.0087.58

09:50:02PM all14.210.003.270.040.0082.47

09:50:05PM all13.980.004.040.040.0081.93

09:50:08PM all6.606.891.260.000.0085.25

09:50:11PM all7.250.001.550.040.0091.15

09:50:14PM all6.610.001.090.000.0092.31

09:50:17PM all5.710.000.960.000.0093.33

Average: all9.240.691.840.030.0088.20

其中:

3 表示间隔时间

10 表示次数

查看进程创建的统计数据,输入:

# sar -c 3 10

查看 I/O 和传输率统计数据,输入:

# sar -b 3 10

查看内存页面统计数据,输入:

# sar -B 3 10

查看块设备统计数据,输入:

# sar -d 3 10

查看所有中断的统计数据,输入:

# sar -I XALL 3 10

查看网络设备特定的统计数据,输入:

# sar -n DEV 3 10

# sar -n EDEV 3 10

查看 CPU 特定的统计数据,输入:

# sar -P ALL

# Only 1st CPU stats

# sar -P 1 3 10

查看队列长度和平均负载的统计数据,输入:

# sar -q 3 10

查看内存和交换空间的使用统计数据,输入:

# sar -r 3 10

# sar -R 3 10

查看 inode、文件、和其它内核表统计数据状态,输入:

# sar -v 3 10

查看系统切换活动统计数据,输入:

# sar -w 3 10

查看交换统计数据,输入:

# sar -W 3 10

查看一个 PID 为 3256 的 Apache 进程,输入:

# sar -x 3256 3 10

kSar 介绍

sar和sadf提供了基于命令行界面的输出。这种输出可能会使新手用户/系统管理员感到无从下手。因此,你需要使用 kSar,它是一个图形化显示你的sar数据的 Java 应用程序。它也允许你以 PDF/JPG/PNG/CSV 格式导出数据。你可以用三种方式去加载数据:本地文件、运行本地命令、以及通过 SSH 远程运行的命令。kSar 可以处理下列操作系统的sar输出:

Solaris 8, 9 和 10

Mac OS/X 10.4+

Linux (Systat Version >= 5.0.5)

AIX (4.3 & 5.3)

HPUX 11.00+

下载和安装 kSar

访问官方网站去获得最新版本的源代码。使用wget去下载源代码,输入:

$wget https://github.com/vlsi/ksar/releases/download/v5.2.4-snapshot-652bf16/ksar-5.2.4-SNAPSHOT-all.jar

如何运行 kSar?

首先要确保你的机器上 JAVA jdk 已安装并能够正常工作。输入下列命令去启动 kSar:

$java -jar ksar-5.2.4-SNAPSHOT-all.jar

接下来你将看到 kSar 的主窗口,和有两个菜单的面板。

左侧有一个列表,是 kSar 根据数据已经解析出的可用图表的列表。右侧窗口将展示你选定的图表。

如何使用 kSar 去生成 sar 图表?

首先,你需要从命名为 server1 的服务器上采集sar命令的统计数据。输入如下的命令:

[server1]# LC_ALL=C sar -A> /tmp/sar.data.txt

接下来,使用 scp 命令从本地桌面拷贝到远程电脑上:

[desktop]$scp user@server1.nixcraft.com:/tmp/sar.data.txt /tmp/

切换到 kSar 窗口,点击 “Data” > “Load data from text file” > 从/tmp/中选择sar.data.txt> 点击 “Open” 按钮。

现在,图表类型树已经出现在左侧面板中并选定了一个图形:

放大和缩小

通过移动你可以交互式缩放图像的一部分。在要缩放的图像的左上角点击并按下鼠标,移动到要缩放区域的右下角,可以选定要缩放的区域。返回到未缩放状态,点击并拖动鼠标到除了右下角外的任意位置,你也可以点击并选择 zoom 选项。

了解 kSar 图像和 sar 数据

我强烈建议你去阅读sar和sadf命令的 man 页面:

$man sar

$man sadf

案例学习:识别 Linux 服务器的 CPU 瓶颈

使用sar命令和 kSar 工具,可以得到内存、CPU、以及其它子系统的详细快照。例如,如果 CPU 使用率在一个很长的时间内持续高于 80%,有可能就是出现了一个 CPU 瓶颈。使用sar -x ALL你可以找到大量消耗 CPU 的进程。

mpstat 命令的输出(sysstat 包的一部分)也会帮你去了解 CPU 的使用率。但你可以使用 kSar 很容易地去分析这些信息。

找出 CPU 瓶颈后 …

对 CPU 执行如下的调整:

确保没有不需要的进程在后台运行。关闭Linux 上所有不需要的服务。

使用cron在一个非高峰时刻运行任务(比如,备份)。

使用top 和 ps 命令去找出所有非关键的后台作业/服务。使用renice 命令去调整低优先级作业。

使用taskset 命令去设置进程使用的 CPU(卸载所使用的 CPU),即,绑定进程到不同的 CPU 上。例如,在 2# CPU 上运行 MySQL 数据库,而在 3# CPU 上运行 Apache。

确保你的系统使用了最新的驱动程序和固件。

如有可能在系统上增加额外的 CPU。

为单线程应用程序使用更快的 CPU(比如,Lighttpd web 服务器应用程序)。

为多线程应用程序使用多个 CPU(比如,MySQL 数据库服务器应用程序)。

为一个 web 应用程序使用多个计算节点并设置一个负载均衡器。

isag —— 交互式系统活动记录器(替代工具)

isag命令图形化显示了以前运行sar命令时存储在二进制文件中的系统活动数据。isag命令引用sar并提取出它的数据来绘制图形。与 kSar 相比,isag的选项比较少。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206733
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21849

原文标题:使用 sar 和 kSar 来发现 Linux 性能瓶颈

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在调试SAR-ADC的时候发现采样频率跟我实际测试结果存在差异,怎么解决?

    我在调试SAR-ADC的时候发现采样频率跟我实际测试结果存在差异。 我的ADC配置如下: ADC clock rate : 16.667MHZ scan duration : 1.08 us 采样
    发表于 02-02 09:17

    什么是SAR以及手机天线SAR的测试

    产生感应电磁场。由于人体各种器官均为有耗介质,因此体内电磁场将会产生电流,导致吸收和耗散电磁能量。生物剂量学中常用SAR表征这一物理过程。SAR的意义为单位质量的人体组织所吸收或消耗的电磁功率,单位
    发表于 11-07 15:51

    无线设备SAR测试的SAR介绍

    磁场。由于人体各种器官均为有耗介质,因此体内电磁场将会产生电流,导致吸收和耗散电磁能量。生物剂量学中常用SAR表征这一物理过程。SAR的意义为单位质量的人体组织所吸收或消耗的电磁功率,单位为W/kg。
    发表于 05-26 16:02

    SAR与ADC不同输入类型

    类型的ADC,诸如ADS8363,ADS7263或ADS7223选择输入配置时特别有用。从SAR ADC系列博文中获得以下技巧:SAR ADC的输入注意事项SAR ADC输入类型性能
    发表于 09-11 14:49

    SAR ADC输入类型间的性能比较-第一部分

    会影响总体系统性能,并因此影响到SAR输入类型的选择。噪声影响单端输入:这些SAR只需要一条导线/电缆和一个单输入驱动器,如果有的话,连接至电源。需要注意的是,这些ADC测量相对于SAR
    发表于 09-12 11:25

    我始终需要一个放大器驱动我的SAR ADC吗?

    作者: Lokesh Ghulyani 一个逐次逼近寄存器 (SAR) 模数转换器 (ADC) 通常需要一个驱动器驱动其模拟输入,以获得所需的精度效果。但是在较低数据吞吐量和较低分辨率应用中,你
    发表于 09-12 11:26

    Linux基础——sar 查看网卡流量

    下。ls /var/log/sa/ 发现下面两种类型的文件,sa开头加日期,sar开头加日期,sa开头的文件不能直接cat,只能用 sar -f 查看,sar开头的可以用cat查看。
    发表于 07-04 06:13

    怎么克服嵌入式CPU的性能瓶颈

    芯片功耗解析芯片的传输延时克服嵌入式CPU性能瓶颈
    发表于 03-09 07:11

    基于全HDD aarch64服务器的Ceph性能调优实践总结

    如ISA-L也都在arm平台上进行了优化。- 对于SPDK,也是从软件层面在arm平台上进行了优化。4.3 操作系统调优从Linux内核调优Ceph性能,这是一个范围很广很深的话题。我们主要从磁盘
    发表于 07-05 14:26

    运用TMAM客观分析程序运行过程中内在CPU资源出现的瓶颈

    指导、工具辅助分析可以帮助我们快速发现性能瓶颈所在,针对性地进行优化,可以事半功倍。  性能优化的难点在于找出关键的性能
    发表于 11-10 16:52

    SAR ADC输入注意事项

    的博客中,我还将讨论性能差异以及获得最优输入性能所必须考虑的一些重要实际注意事项。单端输入 SAR ADC单端输入是这三种输入类型中最简单的一种,因为 ADC 只有一个输入。只要馈送信号在输入引脚指定
    发表于 11-21 06:38

    如何使用马里脱机编译器分析着色器程序的性能

    本指南介绍如何使用马里脱机编译器分析着色器程序的性能。 此示例演示了如何可视化马里GPU目标上的性能瓶颈
    发表于 08-28 07:11

    使用Arm Streamline分析树莓派的性能

    在本指南中,我们将探索Linux应用和系统性能分析,并学习如何找到一个系统正在花费时间的地方。说明应用程序和发现性能瓶颈有助于集中软件优化努
    发表于 08-29 06:30

    双基SAR欺骗式干扰性能研究

    双基SAR 的收发分置使干扰系统对接收机难以准确定位,因此具有强抗干扰能力。该文分析了接收机不能精确定位情况下的欺骗式干扰性能,在双基SAR 欺骗式干扰模型的基础上,研究
    发表于 02-09 14:16 5次下载

    LTC2379-18 SAR ADC的性能及应用

    逐次逼近寄存器型模数转换器 (SAR ADC) 是仪表、工业控制和测试设备应用中的重要组件。SAR ADC 的准确度、噪声和速度常常决定了整体系统的性能。 凌力尔特的 LTC®2379-18
    的头像 发表于 06-19 06:06 4587次阅读
    LTC2379-18 <b class='flag-5'>SAR</b> ADC的<b class='flag-5'>性能</b>及应用