Linux系统运行时参数命令--文件IO性能监控

news2025/1/9 2:28:33

目录

4 文件IO性能监控

4.1 I/O 的两种方式(缓存 I/O 和直接 I/O)

1 缓存 I/O

2 直接 I/O

4.2 监控磁盘I/O的命令

1 iostat IO状态

2 swapon查看分区使用情况

3 df硬盘使用情况

4 du目录文件大小

4.3 文件IO写入频繁案例分析


C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂

4 文件IO性能监控


写入速度
读取速度
写入次数
读取次数
io等待时间 时间越大说明文件操作频繁


磁盘的统计参数
tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued tothe device.)。"一次传输"意思是"一次I/O请求"。
多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。


系统调用、VFS、缓存、文件系统以及块存储之间的关系如下图所示:

Linux 内核在用户进程和文件系统的中间,又引入了一个抽象层,也就是虚拟文件系统 VFS(Virtual FileSystem)。

I/O 指的是相对内存而言的 input 和 output。从文件、数据库、网络向内存中写入数据叫做 input;从内存向文件、数据库、网络中输出数据叫做 output。Linux 系统 I/O 分为内核准备数据和将数据从内核拷贝到用户空间两个阶段

4.1 I/O 的两种方式(缓存 I/O 和直接 I/O)

1 缓存 I/O

缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/O 操作都是缓存 I/O。在 Linux 的缓存 I/O 机制中,数据先从磁盘复制到内核空间的缓冲区,然后从内核空间缓冲区复制到应用程序的地址空间(用户空间)。

读操作:操作系统检查内核空间的缓冲区有没有需要的数据,如果已经缓存了,那么就直接从缓存中返回,也就是将数据复制到应用程序的用户空间;否则从磁盘中读取数据至内核空间的缓冲区,再将内核空间缓冲区的数据返回。

写操作:将数据从用户空间复制到内核空间的缓冲区,这时对用户程序来说写操作就已经完成。至于什么时候将数据从内核空间写到磁盘中,这步由操作系统决定,除非显示地调用了 sync 同步命令。

缓存 I/O 的优点:

1. 在一定程度上分离了内核空间和用户空间,保护系统本身的运行安全;

2. 可以减少读盘的次数,从而提高性能。

缓存 I/O 的缺点:

  1. 在缓存 I/O 机制中,DMA 方式可以将数据直接从磁盘读到内核空间的页缓存中,或者将数据从内核空间的页缓存中直接写回到磁盘上,而不能直接在应用程序地址空间(用户空间)和磁盘之间进行数据传输。这样,数据在传输过程中需要在应用程序地址空间(用户空间)和页缓存(内核空间)之间进行多次数据拷贝操作,这些数据拷贝操作所带来的 CPU 以及内存开销是比较大的。

2 直接 I/O

直接 IO 就是应用程序直接访问磁盘,而不经过内核缓冲区,这样做的目的是减少一次从内核缓冲区到用户程序地址空间的数据复制操作。

例如数据库管理系统这类应用,它们更倾向于选择自己的缓存机制,因为数据库管理系统往往比操作系统更了解数据库中存放的数据。数据库管理系统可以提供一种更加高效的缓存机制来提高数据库中存取数据的性能。

4.2 监控磁盘I/O的命令

1 iostat IO状态

该命令用于监控CPU占用率、平均负载值及I/O读写速度等。

参数介绍

iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ]] [ interval [ count ] ]

常用参数

1. -c: 输出cpu统计信息

2. -d: 输出磁盘统计信息 注:默认是两个都输出

3. -k|-m: 以kb/s|mb/s代替原来的块/s

4. -t: 输出时打印收集信息时刻的时间 注:时间的打印格式和系统变量S_TIME_FORMAT相关

5. -x: 输出详细的拓展统计数据,比如各种等待时间,队列,利用率等信息。

6. interval [count] :interval是统计的时间间隔单位是s,count则是统计次数

await指的是平均等待时间,一般都在10ms左右

 

每个输出消息含义:

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

wrqm/s: 每秒对该设备的写请求被合并次数

r/s: 每秒完成的读次数

w/s: 每秒完成的写次数

rkB/s: 每秒读数据量(kB为单位)

wkB/s: 每秒写数据量(kB为单位)

avgrq-sz:平均每次IO操作的数据量(扇区数为单位) ,比如1616.56

avgqu-sz: 平均等待处理的IO请求队列长度,比如2.74

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

svctm: 平均每次IO请求的处理时间(毫秒为单位),比如0.72

%util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率。表示该设备的繁忙程度,比如82.80。例如,如果统计间隔1秒,该设备有0.5秒在处理IO,而0.5秒闲置,则该设备的%util =0.5/1 = 50%。一般地,如果该参数是100%表示设备已经接近满负荷运行。

cpu的统计信息,如果是多cpu系统,显示的所有cpu的平均统计信息。

%user:用户进程消耗cpu的比例

%nice:用户进程优先级调整消耗的cpu比例

%sys:系统内核消耗的cpu比例

%iowait:等待磁盘io所消耗的cpu比例

%idle:闲置cpu的比例(不包括等待磁盘I/O)

常用用法 

// kb/s显示磁盘信息,每2s刷新一次

iostat -d -k 2

// kb/s显示磁盘统计信息及扩展信息,每1s刷新 ,刷新10次结束

iostat -dkx 1 10

2 swapon查看分区使用情况

查看交互分区的使用情况

使用方法:swapon -s

[root@VM_0_ubuntu ~]# swapon -s

Filename Type Size Used Priority

/var/swap file 8191996 473856 -2

我们在安装系统的时候已经建立了 swap 分区。swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。 也就是说,当内存不够用时,我们使用 swap 分区来临时顶替。这种“拆东墙,补西墙”的方式应用于几乎所有的操作系统中

一般来讲,swap 分区容量应大于物理内存大小,建议是内存的两倍,但不超过 2GB。

3 df硬盘使用情况

该命令用于查看文件系统的硬盘挂载点和空间使用情况。

使用方式:df -h

 

 

4 du目录文件大小

du常用的选项:

-h:以人类可读的方式显示,显示M或K

-a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小-s:显示目录占用的磁盘空间大小,不显示其下子目录和文件占用的磁盘空间大小-c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和

du -a 显示目录和目录下子目录和文件占用磁盘空间的大小。直接使用-a 以字节为单位,-ha 如下图以M或K为结果显示。

du -s 显示当前所在目录大小

du -s -h home 显示home目录大小

du -c 显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和

du -lh --max-depth=1 : 查看当前目录下一级子文件和子目录占用的磁盘容量。

4.3 文件IO写入频繁案例分析

1. 启动iostat -x命令监测

iostat -dkx 1 30

2. 使用sysbench模拟数据读写

sysbench的性能测试都需要做prepare,run,cleanup这三步,准备数据,跑测试,删除数据。在准备阶段创建测试所需数据,在清理阶段删除这些数据。

#cd要到你测试的磁盘目录下

cd /data/disktest

# 线程数=4 每隔4s输出一次结果 测试时间=60s

# 文件数=10 文件总大小=10G 文件操作模式=随机读写

sysbench --num-threads=4 --max-time=60 --test=fileio --file-num=10 --file-totalsize=10G --file-test-mode=rndrw prepare

sysbench --num-threads=4 --max-time=60 --test=fileio --file-num=10 --file-totalsize=10G --file-test-mode=rndrw run

sysbench --num-threads=4 --max-time=60 --test=fileio --file-num=10 --file-totalsize=10G --file-test-mode=rndrw cleanup

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/118563.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IU8689+IU5706 单声道100W/立体声60W同步升压+功放IC大功率拉杆音箱应用组合方案

引言 目前中大功率拉杆音箱主要采用12V铅酸电池为供电电源,在电源直供的时候,一般的功放芯片输出功率在20W左右(喇叭为4欧、THD10%)。超过50W的功率现阶段市场上主要采用升压芯片TPA3116的组合解决方案。 随着竞争的加剧&#x…

如何进行数据可视化图表设计?

如何进行数据可视化图表设计? 对数据人来说,数据可视化是分析理解数据,并最终呈现数据的必修课。本文从以下几个点来说明,如何进行数据可视化图表设计。1、数据背后的故事2、充分理解数据3、多种图表类型设计指南 1数据背后的故…

安克创新能否锚定全球家用储能市场 隆起新的增长极?

提到能源储存,似乎应该是涉及一个国家或者地区的宏大概念。但事实上,储能正在走向家用领域。 近年来,全球能源价格持续高涨,但家用储能的成本却随着锂电等新能源技术的发展在逐渐下降,经济性开始凸显。家用储能在海外…

用HTML制作独一无二的2022回忆旋转相册

目录 前言 效果展示 流程 前言 元旦即将来临,展望2022,我们可以制作一个自己的2022回忆的旋转相册,通过下面的方法来学习吧 效果展示 制作好后,十张相册会在下面旋转,可以改为自己想要放的照片和音乐,制…

史上最简单的推箱子(AS3.0版)

我最熟悉的语言是 AS3.0,现在主要用C,还想学学Python,因此,最近一段时间先用AS3.0实现了最简版的推箱子、贪吃蛇和俄罗斯方块,然后换Python实现,算是熟悉了一下Python的基本用法,最后用C实现&a…

微信小程序 Spdier - OfferShow 反编译逆向(一)

微信小程序 Spdier - OfferShow 反编译逆向(一) 文章目录微信小程序 Spdier - OfferShow 反编译逆向(一)前言一、任务说明1.尝试反编译分析出js_code参数的生成方式,用来获取token2.将小程序搜索出来的数据保存至本地e…

【Java开发】Spring Cloud 01 :微服务前提精要

算是新开了一个 Spring Cloud 的坑,本文来源于姚半仙的《Spring Cloud 微服务项目实战》课程,大部分文字内容基于该课程,我的工作可能就是梳理归纳和拓展,希望尽快搞懂相对来说较为简单的 Spring Cloud Alibaba 微服务框架&#x…

决策树及分类原理与划分依据:信息熵、信息增益、信息增益率、基尼值和基尼指数

一、决策树及分类原理 决策树:是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果,本质是一颗由多个判断节点组成的树 熵(Entropy) :…

PostgreSQL数据库查询执行——SeqScan节点执行

SeqScan节点代码处于src/backend/executor/nodeSeqscan.c文件中,包含了4个重要函数:ExecInitSeqScan、ExecSeqScan、ExecReScanSeqScan和 ExecEndSeqScan。 ExecInitSeqScan src/backend/executor/nodeSeqscan.c文件中的ExecInitSeqScan函数&#xff0c…

数智化转型给企业带来了什么?

数智化转型的核心价值之一在于对企业创智型活动的赋能,从用户需求趋势预测到创意快速验证,数智化应用具有巨大的价值前景。 因此,尽管目前数智化研发还存在着一定程度的复杂性高、不确定性大等问题,但因数智化研发所具有极大的潜…

C# 网络信息获取

一 网络信息浏览 1 HTTP协议 2 客户端与服务器 3 Request与Response 4 Stream 5 Get与Post 二 一些查看工具 1 Fiddler2 http://www.fidddler2.com 2 其他工具 如NetworkMoniter、Visula Sniffer、httpwatch、WireShark 3 Chrom/FireFox等浏览器F12 ① Chrome 中按F…

泛微齐业成,一文告诉你如何实现全程数字化的预算管理

新一代全程数字化费控管理软件-齐业成预算管理,实现从预算建模、预算编制、预算审批、预算管控、预算变更、预算分析、预算考评的全程数字化管理。 随着数字经济和数字社会的高速发展,预算管理已成为组织内部最重要的经营管理活动之一,其过程…

MySQL窗口函数 和 阿里云日志留存率统计脚本实现

窗口函数的官方描述:窗口函数对一组查询行执行类似聚合的操作。但是,虽然聚合操作将查询行分组为单个结果行,但窗口函数会为每个查询行生成一个结果,发生函数评估的行称为当前行,与发生函数评估的当前行相关的查询行构…

docker镜像导出和导入

1.容器镜像导出 我们先通过docker images查看需要导出的镜像 然后我们使用镜像导出命令 docker save -o /home/备份包名.tar 镜像id或镜像名 # -o(即output) 或 > 表示输出到文件备份镜像可以同时备份多个,空格分隔,这里建议使用镜像名备份&#xff…

DeepMind:用 GNN 学习通用推理算法

文 | 智商掉了一地小孩子才做选择,我的模型全!都!要!近年来,基于深度神经网络的机器学习系统取得了巨大进步,尤其是在以感知为主的任务上。这一领域表现突出的模型通常要在分布中进行泛化,意味着…

Keras深度学习实战(43)——深度Q学习算法

Keras深度学习实战(43)——深度Q学习算法0. 前言1. Q 学习简介2. 使用 Q 学习进行 FrozenLake 游戏2.1 FrozenLake 环境分析2.2 模型分析2.3 使用 Q 学习算法解决 FrozenLake 问题3. 使用深度 Q 学习进行 CartPole 游戏3.1 问题分析3.2 模型分析3.3 使用…

通讯录怎么恢复?在 手机上检索找回已删除的电话号码的3种方式

不幸的是,我从手机中删除了一些号码,因此它也从帐户中删除了。我想恢复它们或将我的帐户恢复到一周前我拥有这些号码的日期。— 来自 Android 用户 像上述用户一样,您可能已经删除了一些电话号码,但希望有一天能恢复它们。这种事故…

python数据分析及可视化(十八)Power BI(数据获取、整理、清洗以及可视化、Power Query的基本操作、删除及增加列)

Power BI 微软推出的数据分析和可视化工具,用于在组织中提供见解,是商业分析工具,让视觉对象分析触手可及,可以创建交互式数据可视化效果和报表,连接数百个数据源、简化、准备数据等,并提供相应的分析&…

虚拟机Ubuntu设置固定IP与主机相互通讯

虚拟机Ubuntu设置固定IP与主机相互通讯1. 写在最前1.1 最好了解的预备知识1.2 虚拟机与主机三种连接方式1.3 写在最前2. VMware 虚拟机Ubuntu系统与主机共享IP2.1 配置VMware桥接网卡2.2 设置虚拟机为固定IP2.3 Vmware 虚拟机与主机互相通讯3. VirtualBox虚拟机Ubuntu系统与主机…

ContrastMask: Contrastive Learning to Segment Every Thing

摘要 部分监督实例分割是一种通过学习有限的base类和带注释的掩码来从novel类别中分割对象的任务,从而消除了沉重的注释负担。解决这一问题的关键是建立一个有效的类不可知掩码分割模型。与以前只在base类别上学习此类模型的方法不同,在本文中&#xff…