NFS性能瓶颈分析
前言
atop – run it with -d option or press d to toggle the disk stats view.
iostat – try it with the -xm 2 options for extended statistics, in megabytes, and in two-second intervals.
iotop – top-like I/O monitor. Try it with the -oPa options to show the accumulated I/O of active processes only.
ps – use auxf, then under the “STAT” column “D” usually indicates disk iowait.
strace – view the actual operations issued by a process. Read the strace man page.
lsof – after you’ve identified the process responsible, use -p [PID] to find the specific files.
nfsiostat 是nfs-utils的一部分,参考了iostat,主要展示本机作为NFS客户端周期的统计数据
nfsiostat
nfsiostat是nfs-utils的一部分,参考了iostat,主要展示本机作为NFS客户端周期的统计数据
命令格式
nfsiostat [[<interval>] [<count>]] [<options>][<mount_point>]
官方命令文档

- op/s
This is the number of operations per second.
- rpc bklog
This is the length of the backlog queue.
- kB/s
This is the number of kB written/read per second.
- kB/op
This is the number of kB written/read per each operation.
- retrans
This is the number of retransmissions.
- avg RTT (ms)
This is the duration from the time that client's kernel sends the RPC request until the time it receives the reply.
- avg exe (ms)
This is the duration from the time that NFS client does the RPC request to its kernel until the RPC request is completed, this includes the RTT time above.
- avg queue (ms)
This is the duration from the time the NFS client created the RPC request task to the time the request is transmitted.
- errors
This is the number of operations that completed with an error status (status < 0). This count is only available on kernels with RPC iostats version 1.1 or above.
kB/op:每次操作的平均包大小,可以作为mount里的参数rsize,wsize参考
avg RTT (ms):客户端从kernel发出RPC请求 到 接收到回复的时间
avg exex(ms): 包含了 avg RTT, 是客户端发从请求到请求结束的时间
Avg RTT= network latency + NFS storage latency.


mountstats
官方文档

iostat
官方文档
iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V
] [ -x ] [ -y ] [ -z ] [ --dec={ 0 | 1 | 2 } ] [ { -f | +f }
directory ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ -o JSON ]
[ [ -H ] -g group_name ] [ --human ] [ --pretty ] [ -p [
device[,...] | ALL ] ] [ device [...] | ALL ] [ interval [ count
] ]
options 操作项,interval指定统计时间间隔,count总共输出次数222222
#iostat 会每2秒更新一次,一共打印5次信息, -x 的选项是打印出扩展信息
iostat -x 2 5

avg-cpu %user %nice %system %iowait %steal %idle
78.26 0.00 9.84 4.13 0.00 7.77
user: user 级别的cpu使用占比
nice:
system: kernel 解绑cpu使用占比
iowait: 等待io的占比
steal: Show the percentage of time spent in involuntary wait by the virtual CPU or CPUs while the hypervisor was servicing another virtual processor
Device r/s rkB/s rrqm/s %rrqm r_await rareq-sz w/s wkB/s wrqm/s %wrqm w_await wareq-sz d/s dkB/s drqm/s %drqm d_await dareq-sz aqu-sz %util
nvme0n1 14426.57 1601785.67 0 0 0.27 111.03 0 0 0 5.88 2.56 2.25 0 0 0 0 0 0 0 95.86
r/s: request/ per second
rkB/s, rMB/s: 每秒读的字节数
rrqm/s: 读请求每秒加入磁盘队列的数量
%rrqm:通上,单位百分比
r_await: 单位milliseconds,完成读请求平均时间,包括队列中的时间
rareq-sz: 平均每次请求的大小,单位KB
r:read 读,w:write 写,d:discard 抛弃, w和d的参数参考r,不细写了
aqu-sz:磁盘平均队列长度
util:bandwidth utilization for the device。Percentage of elapsed time during which I/O requests were issued to the device (bandwidth utilization for the device). Device saturation occurs when this value is close to 100% for devices serving requests serially. But for devices serving requests in parallel, such as RAID arrays and modern SSDs, this number does not reflect their performance limits.
util:在统计时间内所有处理IO时间,除以总共统计时间。
例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。
一般地,如果该参数是100%表示设备已经接近满负荷运行了
(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)
nfstat
nfsstat(8) - Linux manual page
Ubuntu Manpage: nfsstat - list NFS statistics
/proc/net/rpc/nfsd
procfs-based interface to kernel NFS server statistics.
/proc/net/rpc/nfs
procfs-based interface to kernel NFS client statistics.
/proc/mounts
procfs-based interface to the mounted filesystems.
# server信息
nfsstat -s
# clinet 信息
nfsstat -c
nfsd
Ubuntu Manpage: nfsd - special filesystem for controlling Linux NFS server
rpc.nfsd
Ubuntu Manpage: rpc.nfsd - NFS server process
相关文章:
NFS性能瓶颈分析
前言 atop – run it with -d option or press d to toggle the disk stats view. iostat – try it with the -xm 2 options for extended statistics, in megabytes, and in two-second intervals. iotop – top-like I/O monitor. Try it with the -oPa options to show the…...
Java中配置RabbitMQ基本步骤
在Java中配置RabbitMQ,需要遵循以下步骤: 1.添加依赖 在项目的pom.xml文件中添加RabbitMQ的Java客户端依赖: <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><versio…...
Ingress典型配置
Ingress 是 Kubernetes 中用于管理 HTTP 和 HTTPS 路由的资源。以下是一个典型的 Ingress 配置示例,用于将流量引导到两个不同的服务: apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: example-ingress spec:rules:- host: example.com…...
webpack中常见的Loader解决了什么问题?
一、是什么 loader 用于对模块的"源代码"进行转换,在 import 或"加载"模块时预处理文件 webpack做的事情,仅仅是分析出各种模块的依赖关系,然后形成资源列表,最终打包生成到指定的文件中。如下图所示&#…...
阿里7年经验之谈 —— 如何实现前端项目的自动化测试?
这其实就是我们常说的“UI自动化测试”,针对这个问题,我先告知答题思路如下: 1、什么是UI自动化?有什么优势? 2、UI自动化实践中会遇到什么难题? 3、如何解决难题,将UI落实到实践中?…...
动态开辟内存空间函数
文章目录 malloc函数calloc函数malloc函数和calloc函数的不同free函数realloc函数 malloc函数 参数是要开辟内存空间的大小 开辟成功则返回值为开辟空间的首地址,若开辟失败则返回一个空指针NULL calloc函数 第一个参数为开辟空间的元素个数,第二个参数…...
nodejs+vue备忘记账系统-计算机毕业设计
本文首先介绍了备忘记账系统管理技术的发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章…...
百度Comate代码助手SaaS版本:智慧编程,引领新潮
引言 在当今数字化时代,软件开发已成为企业成功的关键因素之一。为了应对市场需求的不断变化,企业需要更高效、更灵活的开发工具。百度Comate代码助手的SaaS版本的正式上线,为广大企业和开发者提供了一种全新的编码方式,帮助他们…...
数据与视图的完美契合:Vue响应式的交织魅力
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
Centos8 降低gcc版本至gcc-7.3
1 首先卸载系统中的gcc sudo yum remove gcc 2 重新安装gcc-7.3 sudo dnf group install “Development Tools” 然后再次卸载gcc sudo yum remove gcc 然后发现centos-release-scl-rh已经安装了 sudo yum install centos-release-scl-rh yum -y install devtoolset-7-gcc dev…...
Qt之设置QLineEdit只能输入浮点数
Qt提供了QDoubleValidator来进行浮点数校验,但是它同样存在限定范围无效的问题,详见:Qt之彻底解决QSpinBox限定范围无效的问题 因此我们要子类化QDoubleValidator,并重写其中的validate方法,最后调用QLineEdit的setValidator方法,并将这个子类当做参数传入。 QHDoubleVa…...
Spark项目实战-卡口流量统计
一、卡口介绍 卡口摄像头正对车道安装,拍摄正面照片。 功能:抓拍正面特征 这种摄像头多安装在国道、省道、高速公路的路段上、或者城区和郊区交接的主要路口,用来抓拍超速、进出城区车辆等行为。它进行的是车辆正面抓拍,可以清晰…...
kubernetesr进阶--Secret概述
概述 Kubernetes Secret 对象可以用来储存敏感信息,例如:密码、OAuth token、ssh 密钥等。如果不使用 Secret,此类信息可能被放置在 Pod 定义中或者容器镜像中。将此类敏感信息存储到 Secret 中,可以更好地: 控制其使…...
在 Python 中使用 Pillow 进行图像处理【2/4】
第二部分 一、说明 该文是《在 Python 中使用 Pillow 进行图像处理》的第二部分,主要介绍pil库进行一般性处理:如:图像卷积、钝化、锐化、阈值分割。 二、在 Python 中使用 Pillow 进行图像处理 您已经学习了如何裁剪和旋转图像、调整图像大…...
XTU-OJ 1171-coins
题目描述 一个均质硬币抛n次,求不存在连续2次为正面的方案数。 输入 每行一个正整数n,n≤40。如果n为0,表示输入结束,不需要处理。 输出 每行输出一个结果,为一个整数。 样例输入 1 2 3 0样例输出 2 3 5 解题思路&…...
如何使用 JMeter 进行 HTTPS 请求测试?
本文将介绍如何使用 JMeter 测试 HTTPS 请求,并提供相关的技巧和注意事项。 在进行性能测试时,很多网站都采用了 HTTPS 协议。当我们测试 HTTPS 请求,如果服务端开启了双向认证,则需要客户端发送请求时带上证书。本文介绍如何在 …...
KNN-水仙花的分类
题目: 思路: 1、处理数据集,这里用的是题目已知的数据集,所以说需要提前将写好的数据放到excel表格里,再进行读取。 2、将数据集划分为训练集和测试集 3、定义K-NN模型。 4、训练模型 5、预测模型 6、计算分类精…...
Kotlin 如何确定协程是否启动
在Kotlin中,你可以确定协程是否已启动并正在运行,可以使用Job接口来管理协程,并使用一些函数来检查协程的状态。以下是一些常见的方法: 1.launch 函数返回一个 Job 对象,可以使用这个对象来确定协程的状态。例如&…...
【Spring Boot】Spring Boot集成RabbitMQ
一、发送和接收消息 Spring Boot提供了`spring-boot-starter-amqp`组件,只需要简单地配置即可与Spring Boot无缝集成。下面通过示例演示集成RabbitMQ实现消息的接收和发送。 步骤01 配置pom包。 创建Spring Boot项目并在pom.xml文件中添加spring-bootstarter-amqp等相关组件…...
Hadoop部署过程中问题总结
Hadoop伪分布式集群部署问题总结 一、HDFS初始化失败 初始化失败,HDFS初始化操作如下: hdfs namenode -format然后我运行后报错:error parsing conf core-site.xml 出现这个信息就说明core-site.xml配置文件出错了,用vim命令可…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
