我已在 I/O 查询中支付了约 2 美元的费用。
只是好奇是否有人可以确切解释它们是什么。
如果我将 php 中的文件从一个本地文件夹复制并粘贴到另一个本地文件夹。这会耗费 1 个 I/O 查询吗?
答案1
不,它肯定会花费至少一个 I/O 查询(顺便说一下,“操作”是一个更好的术语),但有多少完全取决于文件的大小、文件系统使用的块/集群大小以及可能涉及文件复制的任何其他“元”相关子操作(即索引/目录更新、写后读写验证、配置的重复数据删除)。
这是一个非常基本的概述,但如果您的文件系统使用 4KB 块/簇,并且您想要写入少于 4KB 的文件,那么您可能会使用 2 到 16 次写入操作来执行此操作(因为大多数文件系统都有这种“元”开销)。如果您在同一个文件系统上写入 400k 文件,那么您预计会看到 102 到 116 次左右的操作,即 400,000/4,000 加上一些“胖”,4GB 的情况也是如此,即 4,000,000,000/4000 等于 4m 次操作。
当然也要考虑到读取也算作一种操作。
现在,这听起来可能很多,因为 EBS 对零售客户来说每 100 万 IO 操作的费用约为 0.10 美元,但实际上您可能正在读取/写入更多的每个操作少于 4k - 我找不到任何文档来准确说明 EBS 定义的最大 IO 大小 - 但使用 64KB 块的情况并不罕见,因此这会降低您的总体成本。
如果您想查看目前正在执行的操作数,以帮助估算 Linux 机器上的这些成本,那么您可以查看 /proc/diskstats,从该表中,第一列是读取操作,第五列是写入操作,每个操作都是自系统启动以来的。如果将它们加在一起并除以您的正常运行时间,那么这就是您每天将获得的操作数的粗略估计。从中您可以快速乘以您的 EBS 费率和您的计费期,这就是您的估算值!
希望这可以帮助。