使用 Bonnie 对托管服务提供商的 IO 进行基准测试

Der*_*gan 1 virtualization vps dedicated-server cloud-hosting benchmark

好的,由于我正在处理的一系列项目,我可以访问 3 个托管服务提供商的专用服务器。

作为实验和教育目的,我决定看看我是否可以对每个 IO 的好坏进行基准测试。

一些研究让我找到了 Bonnie++

所以我将它安装在服务器上并运行了这个简单的命令

/usr/sbin/bonnie -d /tmp/foo 
Run Code Online (Sandbox Code Playgroud)

不同主机提供商的 3 台机器都是专用机器,一台是 VPS,另外两台在一些云平台上,例如 VMWare / Xen 使用某种集群 SAN 进行存储

这可能是一件天真的事情,但这是我发现的结果。

    HOST A

    Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-
                        -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
    Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
    xxxxxxxxxxxxxxxx 1G 45081  88 56244  14 19167   4 20965  40 67110   6  67.2   0
                        ------Sequential Create------ --------Random Create--------
                        -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
                  files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                     16 15264  28 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
    xxxxxxxx,1G,45081,88,56244,14,19167,4,20965,40,67110,6,67.2,0,16,15264,28,+++++,+++,+++++,+++,+++++,+++,+++++,+++,+++++,+++



    HOST B

    Version 1.03d       ------Sequential Output------ --Sequential Input- --Random-
                        -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
    Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
    xxxxxxxxxxxx     4G 43070  91 64510  15 19092   0 29276  47 39169   0 448.2   0
                        ------Sequential Create------ --------Random Create--------
                        -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
                  files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                     16 24799  52 +++++ +++ +++++ +++ 25443  54 +++++ +++ +++++ +++
    xxxxxxx,4G,43070,91,64510,15,19092,0,29276,47,39169,0,448.2,0,16,24799,52,+++++,+++,+++++,+++,25443,54,+++++,+++,+++++,+++



    HOST C

    Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-
                        -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
    Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
    xxxxxxxxxxxxx 1536M 15598  22 85698  13 258969  20 16194  22 723655  21 +++++ +++
                        ------Sequential Create------ --------Random Create--------
                        -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
                  files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                     16 14142  22 +++++ +++ 18621  22 13544  22 +++++ +++ 17363  21
    xxxxxxxx,1536M,15598,22,85698,13,258969,20,16194,22,723655,21,+++++,+++,16,14142,22,+++++,+++,18621,22,13544,22,+++++,+++,17363,21
Run Code Online (Sandbox Code Playgroud)

好的,那么首先阅读这些数字的最佳方法是什么,真正比较这些数字有什么问题吗?

这是 IO 速度的真实代表吗?

如果没有,我有什么方法可以测试吗?

注意:这 3 台机器使用的是 Ubuntu 或 Debian(我认为这并不重要)

Joe*_*l K 5

这些网站可以帮助您解释 bonnie 结果:

http://www.textuality.com/bonnie/advice.html

http://www.issociate.de/board/post/478953/Understanding_bonnie++_results.html

http://sourceforge.net/projects/witme/files/bonnie-to-chart/

首先 - 我想在这里解决一些不一致的问题:

您已经完成了三种不同的测试尺寸,并且没有显示任何其他系统参数,因此您的结果有点难以评估。(这里的 CPU 是什么?什么样的磁盘子系统?为什么你运行三种不同大小的?为什么你使用不同版本的 bonnie?你在什么文件系统上运行?你是否对文件系统挂载选项进行了任何改进?)

了解哪些规范对您很重要取决于您的应用程序需求:视频流需要快速读取(bonnie 输入)性能。视频录制需要快速写入(bonnie 输出)性能。等等。

以下是我通常使用的一些 bonnie 提示/技巧:

  • 尽可能减少系统 RAM 您可以在启动时传递内核参数来执行此操作。mem=512MB 是我通常使用的。这可确保您的本地操作系统缓存效果对您的 IO 测试的影响最小。

  • 使用合适的测试大小来强调 IO 我发现 5-20G 是很好的测试范围。确保您的结果在各种或范围内相似,然后在所有测试中使用相同的大小。

  • 不要打扰每个字符的测试。
    它们不反映真实世界的磁盘使用情况并且需要时间来运行。(所有关于磁盘 i/o 的事情都会发生在块上,而不是字符上)

  • 如果您在 SAN 上运行,请考虑在运行测试之前将我们的块层归零​​。有时在分配空间时会出现首次写入惩罚。如果您在运行测试之前删除整个驱动器,您可以肯定地知道您没有遇到这个问题。(在同一节点上运行多次迭代测试并比较结果也有助于确定这是否是一个问题)

  • 始终发布您的 bonnie 命令行以帮助其他人复制您的测试。

EC2 提示:一些人发现在 AWS EBS 上运行软件 RAID0 条带可以提高 IO 性能。