Linux基础之系统调优

本文介绍了Linux系统中几个关键命令,如uptime用于获取系统运行时间及负载,vmstat和iostat监控内存和磁盘I/O性能,mpstat监控处理器详细信息,以及top命令实时查看系统进程。这些工具对系统管理员和性能优化至关重要。
摘要由CSDN通过智能技术生成

uptime

Linux系统中,一切都可以通过命令行命令来控制。 从小任务到大任务,您都可以找到一个简单的命令来完成您的工作。如果您是 Linux 新手,并且对系统管理感兴趣,那么您需要对命令行有扎实的了解。在本文中,我们将使用一些易于理解的示例来讨论此命令的基础知识。 最后附上uptime代码实现。

如何使用 uptime 命令

我们知道,uptime 命令为您提供系统启动(或运行)的时间。除了系统的运行时间,您还可以获得系统的其他详细信息,包括当前时间、运行会话的用户数以及过去 1、5 和 15 分钟的系统平均负载。

uptime [options]

uptime 的基本用法非常简单——只需输入命令名称并按回车键即可。

通过命令行运行 Linux 系统的 uptime 命令,会输出以下信息。

  1. 系统的当前时间。
  2. 系统的总正常运行时间。
  3. 当前正在运行系统的活动用户。
  4. 过去 1、5 和 15 分钟内可用的系统负载的平均值。

“up”表示系统正在运行。

这里的系统负载平均值是处于可运行状态或可运行状态的平均进程数不间断状态。 处于可运行状态的进程要么正在使用 CPU,要么正在等待使用中央处理器。 处于不可中断状态的进程正在等待某些 I/O 访问,例如等待磁盘。

如何查看uptime帮助信息

uptime 命令带有各种选项。 要检查选项,我们可以运行 help 命令。

除了 help 命令,您还可以运行 man 命令来检查“uptime”命令的使用情况。

/proc/loadavg

这是一个显示系统负载平均值的命令。该命令会读取 /proc/loadavg 文件并将结果输出。在这个例子中,系统的平均负载值为:0.00(1分钟内的平均负载)、0.02(5分钟内的平均负载)和 0.05(15分钟内的平均负载)。

进程队列中运行的进程数为1,总共有589个进程。

最后一个数字92448是最后一个运行队列的进程 ID。这个输出表示系统负载非常轻微,几乎没有负载。

free

free -h

free 是一个 Linux 命令行下的系统监测工具,用于显示系统中内存的使用情况。它会向终端输出系统当前的内存占用情况,包括系统总内存、已用内存、剩余内存和缓存和缓冲区的占用情况等。还可以显示交换空间的使用情况,显示的单位为 KB。

free 命令的输出默认单位为 KB,如果需要显示其他单位的话也可以通过命令参数进行指定。以下是 free 命令的常用选项:

  • -b:以字节为单位显示内存使用情况
  • -k:以 KB 为单位显示内存使用情况(默认操作)
  • -m:以 MB 为单位显示内存使用情况
  • -g:以 GB 为单位显示内存使用情况
  • -t:在最后一行显示总计信息(总内存、已用内存、剩余内存和缓存和缓冲区等)

例如,运行 free -m 命令会以 MB 为单位显示系统的内存使用情况。

/proc/meminfo

cat /proc/meminfo

 

cat /proc/meminfo 命令用于显示系统中内存的详细信息。该命令读取 /proc/meminfo 文件,并将文件内容以人类可读的形式输出到终端中。

/proc/meminfo 包含了系统中内存的各种使用情况,如系统总内存,已用内存,剩余内存,缓存和缓冲区大小等信息。一般情况下,我们可以通过该命令了解系统内存的状态和使用情况。

以下是 /proc/meminfo 命令输出信息中的一些常见字段的含义:

  • MemTotal:系统总内存(单位为 KB)
  • MemFree:系统可用内存(单位为 KB)
  • MemAvailable:系统可用内存,考虑了缓存和缓冲区的使用情况(单位为 KB)
  • Buffers:系统使用的缓冲区内存大小(单位为 KB)
  • Cached:系统使用的缓存内存大小(单位为 KB)
  • SwapCached:交换空间中使用的缓存大小(单位为 KB)
  • SwapTotal:交换空间总大小(单位为 KB)
  • SwapFree:交换空间可用大小(单位为 KB)

通过运行 cat /proc/meminfo 命令,可以查看系统中内存的各项详细信息。

swap 交换分区

1、在内存不足的情况下会使用SWAP交换分区

2、交换分区原理: 防止内存使用消耗殆尽的机制。 当Linux系统发现物理内存使用量不足时,就会选择内存中较长时间内没有被访问和更新的内存数据,将这些内存数据临时写入SWAP中,并释放物理内存中相应的空间,提供给系统中当前运行的程序使用。 当某个程序要使用SWAP中的数据时,系统会再次从SWAP中读取之前保存的数据并写回物理内存中

如何定义使用SWAP 交换分区

1、/proc/sys/vm/swappiness文件:配置何时使用swap分区 

/proc/sys/vm/swappiness 是一个系统参数文件,用于配置系统何时开始使用 swap 分区。Swap 分区是用于暂时存储不常用的内存页面的一块磁盘空间,当系统的内存不足时可以利用 swap 分区扩展可用的内存。

该文件的值表示系统对于内存压力的敏感程度,取值范围为 0 到 100。不同的取值对应不同的行为:

  • 当 swappiness 的值为 0 时,系统几乎不会使用 swap 分区。
  • 当 swappiness 的值为 100 时,系统会非常积极地使用 swap 分区。

通常情况下,建议将 swappiness 的值设置为一个合适的介于 0 到 100 之间的数值,以便根据实际情况平衡内存和磁盘的使用。例如,将 swappiness 设置为较低的值,系统会更倾向于使用物理内存而不是 swap 分区,这对于性能敏感的应用程序可能会更好。

要更改 swappiness 的值,可以使用 root 权限修改该文件,例如可以使用以下命令将 swappiness 设置为 10:

echo 10 > /proc/sys/vm/swappiness

请注意,这种方式修改的值在系统重启后会被重置为默认值。如果希望永久更改 swappiness 的值,可以修改 /etc/sysctl.conf 或者创建一个新的文件在 /etc/sysctl.d/ 目录下,以设置 vm.swappiness 参数为所需的值。然后执行 sysctl -p 命令以使修改生效。

# swappiness文件可以设置范围0-100,当设置不同值时,SWAP策略的差异性就会出现

vmstat<Virtual Memory Statistics>:性能监控工具

1、格式:vmstat 输出间隔秒数 输出次数

在 Linux 中,vmstat 是一个用于监控系统虚拟内存、进程、IO 等性能指标的工具。它提供了关于系统运行情况的实时统计信息。

通过运行 vmstat 命令,可以获取以下信息:

  1. 内存使用情况:

    • swpd(虚拟内存使用)
    • free(空闲内存)
    • buff(缓冲区使用)
    • cache(缓存使用)
  2. 进程相关:

    • procs(进程情况统计)
    • r(运行队列中的进程数量)
    • b(等待 I/O 的进程数量)
  3. 虚拟内存:

    • swap(交换空间使用情况)
    • si(从磁盘读入交换空间的速度)
    • so(从交换空间写入磁盘的速度)
  4. CPU 相关:

    • us(用户 CPU 时间比例)
    • sy(系统 CPU 时间比例)
    • id(空闲 CPU 时间比例)
    • wa(等待 I/O 的 CPU 时间比例)

vmstat 命令的输出默认每隔一秒更新一次。可以通过指定间隔时间和次数,例如 vmstat 2 5 表示每 2 秒输出一次,共输出 5 次。

例如,运行 vmstat 命令可以获取系统的实时性能数据,包括内存使用情况、进程状态、虚拟内存和 CPU 使用情况等。

性能影响

性能影响: 如果cache数值比较大,说明系统缓存中存放了很多数据,利于磁盘I/O性能的提升。bi数值相对较小,说明磁盘的操作少 如果si和so的值长期大于0,说明内存到交换分区的读写很频繁,很消耗CPU资源和磁盘I/O性能。这时要格外关注,内存可能存在瓶颈,要更换较大的内存 如果free的值很低,甚至接近于0,不一定是系统内存快耗尽,要同时看buffer和cache的值,大部分情况下是buffer和cache中存放了大量数据,占用了内存,说明内存利用率高,性能好。 如果发现bi和bo的值很大,说明有大量的磁盘I/O操作。如果符合预期还好,不符合的话就要查看是哪一块硬盘出现大量读写操作、哪块分区出现大量读写操作。 如果us的数值比较大,说明用户的进程占用CPU资源过大,说明开发的程序需要进行优化 sy是内核所消耗的cpu时间,这个数字如果很高,一定是系统出现了问题 如果wa数字很高,说明CPU总是在等待I/O操作。表明磁盘已经成为主要瓶颈: 需要升级磁盘为高性能磁盘 查看磁盘或分区有没有大量的随机读操作,如果是的话,可以考虑调整为顺序读或者考虑增加读缓存 r是运行中的进程数,如果这个数值超过了内核的个数,说明CPU已经成为性能瓶颈,可以考虑开启超线程、更换更多核的CPU,调整某些进程的NICE优先级等措施 如果在运行一个能产生大量随机数的程序,或者包含系统调用的程序,如果sy数值很高是正常的

在 Linux 系统中,性能受多个因素影响。以下是一些常见的性能影响因素:

  1. CPU 使用率:高 CPU 使用率可能会导致系统响应变慢,进程排队等待 CPU 时间。
  2. 内存使用率:内存不足会导致系统使用交换空间,进而降低系统性能。
  3. 磁盘 I/O:大量的磁盘读写操作可能会导致磁盘性能瓶颈,减慢系统的响应速度。
  4. 网络带宽:网络传输速度限制可能会导致网络连接变慢,影响系统的进程间通信或远程访问。
  5. 进程调度:调度策略和优先级的设置可能会影响进程的执行顺序和时间片分配,从而影响性能。
  6. 文件系统:文件系统的选择和配置可能会影响文件读写和访问的速度。
  7. 中断处理:高频率的中断请求可能会消耗大量 CPU 和内核资源。

扩展阅读: Linux 性能调优指南icon-default.png?t=N7T8https://www.redhat.com/cms/managed-files/cl-performance-tuning-rhel7-switch-20150603-v1-1-zh-cn_0.pdf

定位性能问题需要深入分析和监控系统的各个方面,例如使用工具如 topvmstatiostat 和 netstat 等。这些工具可以帮助你查看系统的实时性能数据,并帮助定位可能的性能瓶颈。根据具体情况,你可能需要针对性地调整设置、优化代码或升级硬件等措施来改善系统性能。

 mpstat:统计处理器的详细信息

在 Linux 中,mpstat 是一个用于监控系统中每个处理器的性能和利用率的工具。它提供了关于处理器的实时统计信息。

通过运行 mpstat 命令,可以获取以下信息:

  1. CPU 利用率:

    • %usr(用户空间程序占用 CPU 时间的百分比)
    • %nice(以较低优先级运行的用户空间程序占用CPU时间的百分比)
    • %sys(内核空间程序占用 CPU 时间的百分比)
    • %iowait(等待 I/O 完成的 CPU 时间的百分比)
    • %irq(用于处理硬件中断的 CPU 时间的百分比)
    • %soft(用于处理软件中断的 CPU 时间的百分比)
    • %steal(被其他虚拟机偷取的 CPU 时间的百分比)
    • %guest(运行虚拟机的 CPU 时间的百分比)
    • %idle(CPU 空闲时间的百分比)
  2. 中断和上下文切换情况:

    • intr/s(每秒中断数量)
    • ctxt/s(每秒上下文切换次数)

mpstat 命令的输出默认显示所有处理器的统计信息。可以通过指定一个整数作为参数,例如 mpstat -P 0 可以只显示特定处理器的统计信息。

例如,运行 mpstat 命令可以获取实时的 CPU 利用率和中断/上下文切换情况等信息,帮助你了解系统中每个处理器的性能和资源利用情况。

mpstat:统计处理器的详细信息

top 

常用参数

top的使用方式 top [-d number] | top [-bnp]

参数含义
-d numbernumber代表秒数,表示top命令显示的页面更新一次的间隔 (default=5s)
-b以批次的方式执行top
-n与-b配合使用,表示需要进行几次top命令的输出结果
-p指定特定的pid进程号进行观察

top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的)

参数含义
显示在top当中可以输入的命令
P以CPU的使用资源排序显示
M以内存的使用资源排序显示
N以pid排序显示
T由进程使用的时间累计排序显示
k给某一个pid一个信号,可以用来杀死进程(9)
r给某个pid重新定制一个nice值(即优先级)
q退出top(用ctrl+c也可以退出top)

top各输出参数含义

一、top前五条信息解释

top - 14:49:28 up 1:33, 1 user, load average: 0.00, 0.00, 0.00

内容含义
14:49:28表示当前时间
up 1:33系统远行时间,格式为时:分
1 user当前登陆用户数
load average: 0.00, 0.00, 0.00系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值

Tasks: 80 total, 2 running, 78 sleeping, 0 stopped, 0 zombie

内容含义
Tasks: 80 total进程总数
2 running正在运行的进程数
78 sleeping睡眠的进程数
0 stopped停止的进程数
0 zombie僵尸进程数

Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

内容含义
0.0%us用户空间占用CPU百分比
0.0%sy内核空间占用CPU百分比
0.0%ni用户进程空间内改变过优先级的进程占用CPU百分比
100.0%id空闲CPU百分比
0.0%wa等待输入输出的CPU时间百分比
0.0%hi硬中断(Hardware IRQ)占用CPU的百分比
0.0%si软中断(Software Interrupts)占用CPU的百分比
0.0 st用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间

Mem: 1922488k total, 406936k used, 1515552k free, 11940k buffers

内容含义
1922488k total物理内存总量
406936k used使用的物理内存总量
1515552k free空闲内存总量
11940k buffers用作内核缓存的内存量

Swap: 835576k total, 0k used, 835576k free, 111596k cached

内容含义
835576k total交换区总量
0k used使用的交换区总量
835576k free空闲交换区总量
111596k cached缓冲的交换区总量
二、进程信息
列名含义
PID进程id
USER进程所有者的用户名
PR优先级
NInice值。负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR共享内存大小,单位kb
S进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,单位1/100秒
COMMAND命令名/命令行

默认进入top时,各进程是按照CPU的占用量来排序的。

iostat命令:监控磁盘使用情况

iostat是一个用于监控Linux系统中磁盘I/O性能的命令行工具。它可以提供有关磁盘使用情况的详细统计信息,例如每秒读取和写入请求的数量、每秒传输的字节数以及磁盘空闲时间百分比等。以下是使用iostat命令来监控磁盘使用情况的步骤:

  1. 打开终端并登录到Linux系统上。

  2. 使用以下命令安装sysstat软件包(如果系统中尚未安装):

    sudo apt-get install sysstat
    
  3. 使用以下命令来运行iostat命令并监视磁盘使用情况:

    iostat -d -k 1
    

    其中,-d参数表示只显示磁盘统计数据,-k参数表示以KB/s为单位显示数据传输速度,1表示每秒更新一次数据。

  4. 您可以在终端中看到磁盘的统计数据,例如每秒的读写操作数、时间百分比等。在iostat输出窗口中,最重要的是在“%util”列中看到磁盘利用率。该列显示磁盘的利用率百分比,即每秒总的读写请求占磁盘处理能力的百分比。如果该列的值接近100%,则表示磁盘处于高负载状态。

使用iostat命令是一种非常有效的方法,可用于了解磁盘的使用情况,并在磁盘性能出现问题时进行调试。

 iostat命令,经验总结

iostat命令,经验总结

以下是有关iostat命令的经验总结:

  1. 了解每个列的含义:iostat输出的每个列都有具体的含义,例如,rrqm/s表示每秒合并的读请求次数,svctm表示平均I/O操作的服务时间等。

  2. 注意数据单位:默认情况下,iostat将统计数据显示为每秒读取和写入的字节数。使用-k参数可以将其切换为KB/s,-m参数可以将其切换为MB/s,-g可以将其切换为GB/s等。

  3. 提高监控频率:通过在iostat命令中使用频率参数,您可以增加对磁盘I/O的监控频率,以更及时地了解磁盘性能。默认情况下,iostat每隔一秒钟生成一次报告。您可以通过在命令中指定数值来增加这个时间间隔,例如-t 5表示每隔5秒生成一次报告。

  4. 实时监控繁忙的进程:在iostat输出中的 %util 列提供了磁盘利用率的信息。如果此列的值接近100%,则表示磁盘处于高负载状态。您可以使用iostatpidstat命令结合使用来跟踪繁忙的进程,以便排查导致磁盘负载高的可能原因。

  5. 没有输出?注意块设备名称:如果没有输出,可能是因为您在命令行中指定的块设备名称不正确。在Linux系统中,磁盘驱动器通常由/dev/sdX/dev/hdX表示,其中X是字母序号。通过命令fdisk -l 可获得有关块设备名称的详细信息。

总之,iostat命令对于了解磁盘I / O性能非常有用,可以帮助您进行内存和数据交换等方面的调优。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值