热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

磁盘iolinux,linux查看磁盘IO

1、top命令观察cpu信息10:06:09up17:346usersloadaverage:18.02,17.53,14.23表示当前时间系统运行时间格式为时:分分

1、top命令观察cpu信息

a1e499a51428d971a6c274c35b8c12eb.png

10:06:09

up 17:34

6 users

load average: 18.02,17.53,14.23

表示当前时间

系统运行时间 格式为时:分

分别是1分钟、5分钟、15分钟的负载情况

load average: 如果这个数除以逻辑cpu的数量,结果高于5的时候就表明系统在超负荷运转了。

Tasks: 548 total

1 running

547sleeping

0 stopped

0 zombie

进程总数

正在运行的进程数

睡眠的进程数

停止的进程数

僵尸进程数

15.2 us

用户空间占用cpu百分比

5.2 sy

内核空间占用cpu百分比

0.0 ni

用户进程空间内改变过优先级的进程占用cpu百分比

78.0 id

id 空闲cpu百分比

1.6 wa

等待输入输出的cpu时间百分比    wa 的百分比可以大致的体现出当前的磁盘io请求是否频繁。如果 wa的数量比较大,说明等待输入输出的的io比较多。

0.0 hi

硬中断(Hardware IRQ)占用cpu的百分比

0.0 si

软中断(Software Interrupts)占用cpu的百分比

0.0 st

52827945+total

56582748 free

42740140+used

44295304 buff/cache

物理内存总量(512G)

空闲内存总量(50G)

使用中的内存总量

用作内核缓存的内存量

单位是KB

999420 total

799620 free,

199800 used

56961920 avail Mem

交换区总量

空闲交换区总量

使用的交换区总量

代表可用于进程下一次分配的物理内存数量

2、vmstat命令

vmstat 命令报告关于线程、虚拟内存、磁盘、陷阱和 cpu 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

461ba2944044fd641bce0f675b712b49.png

如果发现等待的进程和处在非中断睡眠状态的进程数非常多,并且发送到块设备的块数和从块设备接收到的块数非常大,那就说明磁盘io比较多。

vmstat参数解释:

这表示vmstat每2秒采集数据,一直采集,直到我结束程序,这里采集了5次数据我就结束了程序。

Procs

r: 等待运行的进程数(就是说多少个进程真的分配到cpu),我测试的服务器目前cpu比较空闲,没什么程序在跑,当这个值超过了cpu数目,就会出现cpu瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的cpu很繁忙,一般会造成cpu使用率很高。

b: 处在非中断睡眠状态的进程数,表示阻塞的进程

w: 被交换出去的可运行的进程数

Memory

单位:KB

swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

free: 空闲的内存,单位KB

buff: 被用来做为缓存的内存数,单位:KB

cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)

Swap

单位:KB/秒

si  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。

so 从内存交换到磁盘的交换页数量, 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上

IO

单位:块/秒

bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒

bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

System

in 每秒cpu的中断次数,包括时间中断

cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和Nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的cpu大部分浪费在上下文切换,导致cpu干正经事的时间少了,cpu没有充分利用,是不可取的。

us 用户cpu时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。

sy 系统cpu时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id  空闲 cpu时间,一般来说,id + us + sy = 100,一般我认为id是空闲cpu使用率,us是用户cpu使用率,sy是系统cpu使用率。

wt 等待IO cpu时间。

3、iostat命令

Centos的安装方式是:yum install sysstat

Ubuntu的安装方式是: aptitude install sysstat

iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出cpu使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析

使用:iostat显示所有设备的负载情况

ef3d73de50e306208d173fcebd0f82b5.png

%user:cpu处在用户模式下的时间百分比。

%nice:cpu处在带NICE值的用户模式下的时间百分比。

%system:cpu处在系统模式下的时间百分比。

%iowait:cpu等待输入输出完成时间的百分比。    如果%iowait的值过高,表示硬盘存在I/O瓶颈

%steal:管理程序维护另一个虚拟处理器时,虚拟cpu的无意识等待时间百分比。

%idle:cpu空闲时间百分比。  如果%idle值高,表示cpu较空闲,,如果%idle值高但系统响应慢时,可能是cpu等待分配内存,应加大内存容量。 如果%idle值持续低于10,表明cpu处理能力相对较低,系统中最需要解决的资源是cpu

tps:该设备每秒的传输次数

kB_read/s:每秒从设备(drive expressed)读取的数据量;

kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;

kB_read:  读取的总数据量;

kB_wrtn:写入的总数量数据量;

使用: iostat -dx 显示磁盘扩展信息

ab04a66c047cbc81a40999fff792b00d.png

r/s 和 w/s 分别是每秒的读操作和写操作,而rKB/s 和wKB/s 列以每秒千字节为单位显示了读和写的数据量。如果这两对数据值都很高的话说明磁盘io操作是很频繁。

定时显示所有信息:    iostat 2  3    # 【每隔2秒刷新显示,且显示3次】

显示指定磁盘信息:    iostat -d/dev/sda

显示tty和cpu信息:   iostat -t

以M为单位显示所有信息:  iostat -m

查看cpu状态:    iostat -c 1 1

查看设备使用率(%util)、响应时间(await):   iostat -d -x -k 1 1  #【-d 显示磁盘使用情况,-x 显示详细信息】

d0a880db5883a3223b2e1e99fcd8d613.png

rrqm/s:  每秒进行 merge 的读操作数目.即 delta(rmerge)/s

wrqm/s: 每秒进行 merge 的写操作数目.即 delta(wmerge)/s

%util: 一秒中有百分之多少的时间用于 I/O;;;如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷

idle小于70% IO压力就较大了,一般读取速度有较多的wait。

以上各列的含义如下:

选项

说明

rrqm/s

每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并

wrqm/s

每秒对该设备的写请求被合并次数

r/s

每秒完成的读次数

w/s

每秒完成的写次数

rkB/s

每秒读数据量(kB为单位)

wkB/s

每秒写数据量(kB为单位)

avgrq-sz

平均每次IO操作的数据量(扇区数为单位)

avgqu-sz

平均等待处理的IO请求队列长度

await

平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)

svctm

平均每次IO请求的处理时间(毫秒为单位)

%util

采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

总结

以上是编程之家为你收集整理的linux查看磁盘IO全部内容,希望文章能够帮你解决linux查看磁盘IO所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。



推荐阅读
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文介绍了使用数据库管理员用户执行onstat -l命令来监控GBase8s数据库的物理日志和逻辑日志的使用情况,并强调了对已使用的逻辑日志是否及时备份的重要性。同时提供了监控方法和注意事项。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
author-avatar
linxiuying261
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有