用户发送请求后服务端i/o工作过程

华子目录

  • 服务端`i/o`介绍
    • `磁盘i/o`
      • `机械磁盘`的`寻道时间`、`旋转延迟`和`数据传输时间`
      • 常见的机械磁盘平均`寻道时间值`
      • 常见磁盘的平均`延迟时间`
      • 每秒最大`IOPS`的`计算方法`
    • `网络i/o`
      • `网络I/O`处理过程
      • `磁盘和网络i/o`
  • `一次完整的请求在内部的执行过程`

服务端i/o介绍

  • i/o计算机中指Input/OutputIOPS (Input/Output Per Second) 即每秒处理I/O请求的数量 (或读写次数),是衡量磁盘性能主要指标之一
  • IOPS是指单位时间内系统能处理I/O请求数量,一般以每秒处理的I/O请求数量单位
  • I/O请求通常为读或写数据操作请求
  • 一次完整I/O用户空间进程数据内核空间内核数据报文完整交换
  • 但是由于内核空间用户空间严格隔离的,所以其数据交换过程中不能由用户空间进程直接调用内核空间内存数据,而是需要经历一次内核空间中的内存数据copy到用户空间进程内存当中
  • 所以简单说I/O就是把数据内核空间中的内存数据复制到用户空间进程的内存当中

服务器I/O

  • 磁盘I/O
  • 网络I/O : 一切皆文件本质为对socket文件读写

磁盘i/o

  • 磁盘I/O进程内核发起系统调用,请求磁盘上某个资源,比如是html文件或者图片,然后内核通过相应的驱动程序目标文件加载到内核的内存空间加载完成之后数据内核内存复制进程内存,如果是比较大数据也需要等待时间

机械磁盘寻道时间旋转延迟数据传输时间

  • 寻道时间:是指磁头移动到正确的磁道上花费的时间寻道时间I/O处理越快,目前磁盘的寻道时间一般在3-15毫秒左右
  • 旋转延迟:是指从磁盘寻道结束开始,直到磁头旋转到I/O请求请求的起始数据块位置为止时间间隔这个时间间隔磁盘驱动器读取或写入数据时所需的一个额外时间,主要由磁盘物理特性决定
  • 旋转延迟大小取决于磁盘的转速磁头所在磁道与目标磁道之间角度差。一般使用磁盘旋转周期一半作为旋转延迟近似值这种方法实际应用非常实用
  • 旋转延迟 = 磁盘旋转一周所需时间 / 2 = 60秒 × 1000毫秒/秒 / 磁盘转速(RPM) / 2
  • 例如一个7200RPM磁盘,其平均旋转延迟大约为60 × 1000 / 7200 / 2 = 4.17毫秒
  • 数据传输时间:指的是读取数据后传输数据时间,主要取决于传输速率数据传输时间等于数据大小除以传输速率目前的磁盘接口每秒的传输速度可以达到600MB因此可以忽略不计

常见的机械磁盘平均寻道时间值

  • 7200转/分磁盘平均物理寻道时间9毫秒
  • 10000转/分磁盘平均物理寻道时间6毫秒
  • 15000转/分磁盘平均物理寻道时间4毫秒

常见磁盘的平均延迟时间

  • 7200转机械盘平均延迟60*1000/7200/2 = 4.17ms
  • 10000转机械盘平均延迟60*1000/10000/2 = 3ms
  • 15000转机械盘平均延迟60*1000/15000/2 = 2ms

每秒最大IOPS计算方法

  • 7200转磁盘IOPS计算方式:1000毫秒/(9毫秒的寻道时间+4.17毫秒的平均旋转延迟时间)=1000/13.13=75.9 IOPS
  • 10000转磁盘的IOPS计算方式:1000毫秒/(6毫秒的寻道时间+3毫秒的平均旋转延迟时间)=1000/9=111IOPS
  • 15000转磁盘的IOPS计算方式:15000毫秒/(4毫秒的寻道时间+2毫秒的平均旋转延迟时间)=1000/6=166.6 IOPS

网络i/o

  • 网络I/O指的是网卡内存之间输入输出。当网络上数据到来时网卡需要将数据拷贝到内存中;当要发送数据网络上的其他设备时,需要将数据内存拷贝到网卡里

在这里插入图片描述

网络I/O处理过程

  • 获取请求数据客户端服务器建立连接发出请求服务器接受请求
  • 构建响应,当服务器接收完请求,并在用户空间处理客户端的请求直到构建响应完成
  • 返回数据服务器已构建好的响应再通过内核空间网络I/O发还给客户端

磁盘和网络i/o

每次I/O,都要经由两个阶段

  • 第一步:将数据文件加载内核内存空间缓冲区),等待数据准备完成时间较长
  • 第二步:将数据内核缓冲区复制到用户空间进程的内存中时间较短

一次完整的请求在内部的执行过程

  • 网卡内存都在主板上网卡内存通过总线通信不消耗cpu),用户请求的数据就会到io空间上,访问的是socket套接字,这个io空间内核开的,然后内核会把请求copy到应用软件app,然后进程就会知道这个请求需要什么东西所有对于硬件的调用,app是做不到的,只能内核可以),如果说这个appnginx请求是index.htmlnginx就会构建报文告诉内核它要取index.html文件内核读取完所有数据之后需要消耗cpu),返回给nginxnginx开始构建相应报文,将相应报文返回给内核中socketsocket在返回给用户

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

240004基于Jamva+ssm+maven+mysql的房屋租赁系统的设计与实现

基于ssmmavenmysql的房屋租赁系统的设计与实现 1.项目描述2.运行环境3.项目截图4.源码获取 1.项目描述 该项目在原有的基础上进行了优化,包括新增了注册功能,房屋模糊查询功能,管理员和用户信息管理等功能,以及对网站界面进行了优…

MinerU(2):GPU加速

目录 遗留问题:ubuntu使用特定conda环境CUDA加速速度对比 解析效果公式解析表格解析实验结论 遗留问题:ubuntu使用特定conda环境 发现在vscode中能查看到版本, 但是到虚拟机,同样的目录下查不到 可能是vscode能自己切换Python环…

C# 生成随机数的方法

C# 提供了一种强大而方便的工具类 Random ,用于生成随机数。这里将分类讨论如何通过 C# 实现随机数生成,以及应用于实际情况中的一些具体方案。 一、Random 类概述 Random 类表示一个伪随机数生成器,用于生成满足随机性统计要求的数字序列。…

wazuh-modules-sca-scan

sca模块主函数wm_sca_main -> wm_sca_start 检查policy文件中的每一个项目wm_sca_check_policy static int wm_sca_check_policy(const cJSON * const policy, const cJSON * const checks, OSHash *global_check_list) {if(!policy) {return 1;}const cJSON * const id c…

SpringCloud微服务实战系列:03spring-cloud-gateway业务网关灰度发布

目录 spring-cloud-gateway 和zuul spring webflux 和 spring mvc spring-cloud-gateway 的两种模式 spring-cloud-gateway server 模式下配置说明 grayLb://system-server 灰度发布代码实现 spring-cloud-gateway 和zuul zuul 是spring全家桶的第一代网关组件&#x…

Arm Cortex-M处理器对比表

Arm Cortex-M处理器对比表 当前MCU处理器上主要流行RISC-V和ARM处理器,其他的内核相对比较少;在这两种内核中,又以Arm Cortex-M生态环境相对健全,大部分的厂家都在使用ARM的处理器。本文主要介绍Arm Cortex-M各个不同系列的参数对…

如何实现规范化LabVIEW编程

规范编写LabVIEW程序的目的是提高代码的可读性、可维护性、可扩展性,并确保团队成员能够高效地理解和修改代码。以下是一些关键建议,帮助您编写更专业的LabVIEW代码,并确保它易于后续的升级和维护: ​ 1. 合理的项目结构 目录结构…

深入C语言文件操作:从库函数到系统调用

引言 文件操作是编程中不可或缺的一部分,尤其在C语言中,文件操作不仅是处理数据的基本手段,也是连接程序与外部世界的重要桥梁。C语言提供了丰富的库函数来处理文件,如 fopen、fclose、fread、fwrite 等。然而,这些库…

游戏引擎学习第52天

仓库 : https://gitee.com/mrxiao_com/2d_game 这节的内容相当多 回顾 在游戏中,实体被分为不同的类别:接近玩家的“高频实体”、距离较远并正在模拟的“低频实体”和不进行更新的“休眠实体”。这些实体会根据它们与玩家的距离进行处理,接…

docker 安装mysql 5.7 详细保姆级教程

1. 安装mysql(5.7) docker pull mysql:5.7 若是拉取不了,可以配置下 docker 源 2. 查看是否安装成功 docker images 下图就是成功了 3.创建mysql专用目录、数据挂载目录、配置文件目录 ,演示目录在于/home/下 //命令逐条执行cd /home/ mkdir mysql …

宝塔SSL证书申请失败,报错:申请SSL证书错误 module ‘OpenSSL.crypto‘ has no attribute ‘sign‘(已解决)

刚安装宝塔申请SSL就报错:申请SSL证书错误 module OpenSSL.crypto has no attribute sign 面板、插件版本:9.2.0 系统版本:Alibaba Cloud Linux 3.2104 LTS 问题:申请SSL证书错误 module OpenSSL.crypto has no attribute sign…

Three使用WebGPU的关键TSL

Three.js 使用 WebGPU 的关键 TSL TSL: three.js shader language 介绍 three.js 材质转为webgpu的关键流程, 从而引出 TSL. 1、关键类关系 WebGPURenderer|-- library: StandardNodeLibrary|-- _nodes: Nodes|-- _objects: RenderObjects|-- createRenderObject()StandardN…

【蓝桥杯国赛真题15】python质因数个数 蓝桥杯青少年组python编程国赛真题详细解析

目录 python质因数个数 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python质因数个数 第十二届蓝桥杯青少年组python比赛国赛真题详细解析 …

发布/部署WebApi服务器(IIS+.NET8+ASP.NETCore)

CS软件授权注册系统-发布/部署WebApi服务器(IIS.NET8ASP.NETCore) 目录 本文摘要VS2022配置发布VS2022发布WebApiIIS服务器部署WebApi 将程序文件复制到云服务器添加网站配置应用程序池配置dns域名配置端口阿里云ECS服务器配置19980端口配置https协议 (申请ssl证书)测试WebAp…

MybatisPlus-配置加密

配置加密 目前配置文件中的很多参数都是明文,如果开发人员发生流动,很容易导致敏感信息的泄露。所以MybatisPlus支持配置文件的加密和解密功能。 我们以数据库的用户名和密码为例。 生成秘钥 首先,我们利用AES工具生成一个随机秘钥&#…

九个任务调度框架

一、背景介绍 说到定时任务,相信大家都不陌生,在我们实际的工作中,用到定时任务的场景可以说非常的多,例如: 双 11 的 0 点,定时开启秒杀每月1号,财务系统自动拉取每个人的绩效工资&#xff0…

photoshop的2个形状-箭头

有时候用ps画一些教程类图文,需要用到箭头. 另外自己画了一个镂空的长方形和正方形 形状的路径一般在Custom Shapes文件夹内 例如 E:\photoshopCS4\Adobe Photoshop CS4\Presets\Custom Shapes

R-Studio Technician,无网络负担地进行远程数据分析和数据恢复任务

对于数据恢复技术人员和技术支持团队来说,时间就是金钱。这不仅包括您在客户机器上花费的时间 - 还包括您往返公司办公室的时间,这可能会带来巨大的不便,特别是如果客户位于其他省市。电话支持通常不适用于需要数小时才能完成的复杂任务&…

将PDF流使用 canvas 绘制展示在页面上(一)

将PDF流展示在页面上 使用 pdfjs-dist 库来渲染 PDF 页面到 canvas 上进行绘制展示 安装 pdfjs-dist 依赖 npm install pdfjs-dist 或者 yarn add pdfjs-dist创建一个组件来处理 PDF 流的加载和渲染 该组件中是一个包含 PDF 文件的 Base64。 将 pdf 流传入该组件中使用 /** fo…

【Java 学习】详细讲解---包和导包、Scanner类、输入源

1. 包 1.1 什么是包? 举个例子,你和你的同学有不同的家庭,你们都有自己的爸爸妈妈,都有自己的家。在自己的家中你们可以按照自己爱好摆放东西,都互不干扰。但是,假如你们的家都在一起,你们就不…