博客
关于我
你了解自己的业务IO么?
阅读量:605 次
发布时间:2019-03-12

本文共 1503 字,大约阅读时间需要 5 分钟。

我们为什么要关注业务的IO行为或IO访问模型呢?简单来说,任何系统都需要集中关注自身服务的对象,而在分布式文件存储中,上层应用正是我们需要关注的核心对象。存储系统的设计和架构是多种因素综合权衡的结果,一旦存储性能达到极限,无论是开发者还是使用者,都希望了解具体的IO表现,以便找到瓶颈和进行优化。

常见业务类型的IO特点

让我们以几个典型业务场景为例,分析其IO模型特点:

1. 记录日志

日志文件通常是追加写入模式。每次写入前,需要调用statfs获取文件大小,计算写入位置(pos),因此write和statfs请求比例为1:1。在监控客户端请求时,如果发现write/stat比例接近1:1,可以推断该业务主要是日志追加写。如果日志类型IO占存储访问比例很高,建议扩大日志写入缓冲区,减少write/stat请求,提升性能。

2. 系统命令:du/ls

操作系统命令对分布式文件存储友好与否直接影响性能。特别是du和ls命令,会多次调用readdir和statfs,不仅对单目录统计来说,甚至是递归多目录,此时MDS负载往往很高。ls命令同样依赖readdir和stat,但只处理单一目录。监测到某MDS负载异常时,可分析是否受到这些命令的频繁调用。如果确定具体客户端和业务,可根据IP追踪到具体业务。

3. 数据库

数据库的读写比例一般为20%写、80%读。写操作往往伴随fsync和fdatasync,用于保证数据持久化。但这些FileSync开销较大,影响性能。建议使用direct IO方式,绕过缓存。对于MySQL,设置innodb_flush_method为O_DIRECT_NO_FSYNC可抵消fsync元数据更新,不影响数据完整性。注意:MySQL 8.0.14及更新版本在文件操作时仍需自动调用fsync。

4. AI训练

AI训练的IO特点明显:90%以上数据为读操作,且多是小文件或大文件的随机读。数据集不修改,元数据操作集中在open/closequiring等,data操作仅read。此特点可启用POSIX语义弱化,降低一致性,如弱化读缓存,大幅提升训练效率。

分析业务IO模型的方法

分析业务IO模型有两种方式:阅读源码或使用存储系统工具。阅读源码通常不现实且过于繁琐,因此实际应用中更多依赖于存储系统提供的分析工具。

在大规模分布式文件存储中,分析复杂且多样化。尤其需要监控和分析多种IO操作类型,尤其是元数据和数据IO情况。元数据操作包括open/close/mkdir/rmdir/stat/unlink等,数据IO则包括read/write,核心考察IOPS和吞吐量。现有产品提供的工具有限,增加自有功能至关重要。

我们是怎么做的

为了帮助管理员深入理解业务IO特点,YRCloudFile开发了一套IO统计框架,可实时监控和分析各类业务操作:

功能亮点:

  • 元数据请求监控:覆盖35项元数据操作类型(如open、close等)。
  • 文件数据请求监控:覆盖17项文件数据操作类型(如read/write)。
  • 灵活设置:可根据实际情况设置关注点,更高效分析。
  • 可视化报告:提供实时统计、按时间平均分析,并支持导出,为管理决策提供数据支撑。

客户端监控功能

连接YRCloudFile客户端后,自动模块化监控元数据和文件数据行为,并通过直观界面展示操作分布和趋势。支持按天、周平均分析和排序,便于资源调配和系统优化。

作为技术团队,基于IO特点分析可为用户提供针对性优化建议,提升业务性能和稳定性。

这种做法使YRCloudFile在存储性能和业务优化方面更具竞争力。

转载地址:http://qjcxz.baihongyu.com/

你可能感兴趣的文章
Mysql 报错 Field 'id' doesn't have a default value
查看>>
MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
查看>>
Mysql 拼接多个字段作为查询条件查询方法
查看>>
mysql 排序id_mysql如何按特定id排序
查看>>
Mysql 提示:Communication link failure
查看>>
mysql 插入是否成功_PDO mysql:如何知道插入是否成功
查看>>
Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
查看>>
mysql 数据库中 count(*),count(1),count(列名)区别和效率问题
查看>>
mysql 数据库备份及ibdata1的瘦身
查看>>
MySQL 数据库备份种类以及常用备份工具汇总
查看>>
mysql 数据库存储引擎怎么选择?快来看看性能测试吧
查看>>
MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
查看>>
MySQL 数据库的高可用性分析
查看>>
MySQL 数据库设计总结
查看>>
Mysql 数据库重置ID排序
查看>>
Mysql 数据类型一日期
查看>>
MySQL 数据类型和属性
查看>>
mysql 敲错命令 想取消怎么办?
查看>>
Mysql 整形列的字节与存储范围
查看>>
mysql 断电数据损坏,无法启动
查看>>