加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 人物访谈 > 专访 > 正文

LinuxCPU达到瓶颈,怎样优化?

发布时间:2019-12-23 15:56:55 所属栏目:专访 来源:站长网
导读:副标题#e# 1. 分析手段 在理解平均负载之前,先要理清楚 Linux 下的进程状态。 1.1. 进程状态 1.1.1. R (TASK_RUNNING),可执行状态 只有在该状态的进程才可能在 CPU 上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的 task_struct 结构(进程控

:查看某个进程中线程的上下文切换情况,下图查看的是 hicore 进程中所有的线程上下文切换情况。

LinuxCPU达到瓶颈,怎样优化?

关注两列内容:

1. 自愿上下文切换:进程无法获取所需资源,导致的上下文切换。比如, I/O、内存等系统资源不足时。

2. 非自愿上下文切换:进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如,大量进程都在争抢 CPU 时。

1.3.9. Procps 工具

procps 是一组命令行和全屏工具,是由内核动态生成的一个 "伪" 文件系统,可以提供进程表中条目状态的信息。该文件系统为内核数据结构提供了一个简易接口,procps 程序通常就集中在这个描述了系统进程运行状态的数据结构上。

procps 包括以下程序:

free - 报告系统中可用内存和已用内存的数量

kill - 基于 PID,向进程发送信号

pgrep - 根据名称或其他属性列出进程

pkill - 根据名称或其他属性向进程发送信号

pmap - 报告进程的内存映射

ps - 报告进程信息

pwdx - 报告进程的当前目录

skill - pgrep/pkill 的过时版本

slabtop - 实时显示内核 slab 缓存信息

snice - Renice 一个进程

sysctl -运行时内核参数的读或写

tload - 系统负载均值的可视化

top - 正运行进程的实时动态视图

uptime - 显示系统的已运行时间和负载情况

vmstat - 报告虚拟内存统计信息

w - 报告登录用户,以及他们正在做什么

watch - 定期执行程序,显示全屏输出官网地址:

1.3.10. sysstat 工具

在嵌入式 Linux 设备中同样也不存在该工具,busybox 中也没有相关命令。需要安装 Linux 性能监控工具 sysstat,他是一个工具集,包括 sar、sadf、mpstat、iostat、pidstat 等,这些工具可以监控系统性能和使用情况。各工具的作用如下:

1. iostat - 提供 CPU 统计,存储 I/O 统计(磁盘设备,分区及网络文件系统)

2. mpstat - 提供单个或组合 CPU 相关统计

3. pidstat - 提供 Linux 进程级别统计:I/O、CPU、内存等

4. sar - 收集、报告、保存系统活动信息:CPU、内存、磁盘、中断、网络接口、TTY、内核表等

5. sadc - 系统活动数据收集器,作为 sar 后端使用

6. sa1 - 收集系统活动日常数据,并二进制格式存储,它作为 sadc 的工具的前端,可以通过 cron 来调用

7. sa2 - 生成系统每日活动报告,同样可作为 sadc 的工具的前端,可以通过 cron 来调用

8. sadf - 可以以 CSV、XML 格式等显示 sar 收集的性能数据,这样非常方便的将系统数据导入到数据库中,或导入到 Excel 中来生成图表

9. nfsiostat-sysstat: 提供 NFS I/O 统计

10. cifsiostat: 提供 CIFS 统计

sysstat 功能强大,功能也在不断的增强,每个版本提供了不同的功能,可以到 sysstat 官网了 解 工 具 最 先 发 展 情 况 和 获 得 相 应 的 帮 助 手 册 。 官 网 地 址 :

1.3.11. 中断

中断是一种异步的事件处理机制,可以提高系统的并发处理能力。中断处理程序会打断其他进程的运行,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行。

Linux 将中断处理过程分成了两个阶段,也就是上半部和下半部。

· 上半部用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关的或时间敏感的工作。

· 下半部用来延时处理上半部未完成的工作,通常以内核线程的方式运行。

/proc/interrupts:查看硬中断发生的类型

硬件中断发生频繁,是件很消耗 CPU 资源的事情,Linux 默认情况下是将所有的硬件中断都绑定在 CPU0 上,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的

CPU (core) 处理显然能很好的平衡性能。

1.3.13. 根据上下文切换的类型做具体分析

· 自愿上下文切换变多,说明进程都在等待资源,有可能发生 I/O 等其他问题

· 非自愿上下文切换变多,说明进程都在被强制调度,也就是都在争抢 CPU,说明 CPU 的确成了瓶颈

· 中断次数变多,说明 CPU 被中断处理程序占用,还需要通过查看 /proc/interrupts 文件来分析具体的中断类型。

1.4. CPU 使用率

/proc/stat,提供的是系统的 CPU 和任务统计信息。这个信息非常的原始

LinuxCPU达到瓶颈,怎样优化?

CPU 使用率相关的重要指标

第一列:user(us),代表用户态 CPU 时间。

第二列:nice(ni),代表低优先级用户态 CPU 时间,也就是进程的 nice 值被调整为 1-

19 之间时的 CPU 时间。nice 可取值范围是 -20 到 19, 数值越大,优先级反而越低

第三列:system (sys),代表内核态 CPU 时间。

第四列:idle(us),代表空闲时间。注意,这里它不包括等待 I/O 的时间(iowait)。

第五列:iowait(wa),代表等待 I/O 的 CPU 时间。

第六列:irq(hi),代表处理硬中断的 CPU 时间

第七列:softirq(si),代表处理软中断的 CPU 时间。

真正查看 CPU 使用率的命令是通过 top 命令

LinuxCPU达到瓶颈,怎样优化?

1.5. 软中断

提供了软中断的运行情况。

LinuxCPU达到瓶颈,怎样优化?

注意软中断的类型,也就是第一列内容。

注意同一种软中断在不同 CPU 上的分布情况,也就是同一行内容。

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读