首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPU绑定任务写入磁盘的需求分析

CPU绑定任务写入磁盘的需求分析
EN

Server Fault用户
提问于 2018-09-26 22:49:40
回答 1查看 31关注 0票数 0

我有一个数据分析应用程序,这是CPU绑定,并产生35 MB/s的数据每线程的执行。

我试图计算出我可以并发运行多少个线程,并且能够写入磁盘,而不会导致每个线程都无休止地等待I/O。

我找到了关于如何计算写性能的这个答案,这是我在我的两个本地磁盘SSD和7200 RPM HD上执行的。

研究结果如下:

SSD:

代码语言:javascript
复制
$ time sh -c "dd if=/dev/zero of=testfile bs=1000k count=1k && sync"
1024+0 records in
1024+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 0.668421 s, 1.6 GB/s

real    0m3.549s
user    0m0.000s
sys     0m0.456s

同步的话,是281 MB/s

HD:

代码语言:javascript
复制
$ time sh -c "dd if=/dev/zero of=testfile bs=1000k count=1k && sync"
1024+0 records in
1024+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 8.79985 s, 119 MB/s

real    0m10.122s
user    0m0.004s
sys     0m0.549s

与同步,这是98 MB/s。

我能得出以下结论吗?

SSD的Writing结果:

  • 可写入281 MB/s的磁盘
  • 每个线程产生35 MB/s

因此,我可以同时运行8个线程。(281 / 35 = 8)

HD:的<#>Writing结果

  • 可写入98 MB/s的磁盘
  • 每个线程产生35 MB/s

因此,我可以同时运行两个线程。(281 / 35 = 2.8)

  • 是否还有其他需要考虑的因素,如互连速度等?(我的驱动器使用SATA 3连接)
  • 如果上面的分析是正确的,我是否能够添加额外的驱动器来允许运行更多的线程?如果是的话,他们是否会共享一个互连,并因此引入一个上限,如果是,我将如何计算?)
EN

回答 1

Server Fault用户

发布于 2018-10-01 21:09:11

您需要考虑使用HDD的搜索时间。实际上,同时写入HDD可能会非常缓慢,因为需要不断地寻找HDD。

一般来说,用这种方法来估计可能的程序容量是错误的。影响性能的因素太多,因此不可能以这种方式获得任何真实的性能数字。

正确的方法是用科学的方法,在一个系统上运行,衡量绩效。如果性能不够高,就把它放在新的硬件上,然后重复到性能足够好为止。

这个问题有更多关于使用科学方法的细节。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/932850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档