首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从磁带中获得良好的阅读效果?

如何从磁带中获得良好的阅读效果?
EN

Stack Overflow用户
提问于 2012-04-25 00:25:32
回答 1查看 791关注 0票数 1

我有一个算法来执行一些文件I/O (读、写)和计算。

如果我写到磁带(而不是读),这个算法工作得很好。如果我从磁带上读(不写),表现很差。如果将磁带从方程中取出来(仅用于I/O的磁盘),那么它工作得很好。

现在,我把它归结为一个相对简单的案例,我正在试图理解它。

设置是一个单独的,20 GB的文件在磁带上。我是按顺序分块读取这个文件的。

测试算法类似于:

代码语言:javascript
复制
while (fileRemaining)
{
    ReadBlock(blockSize);
    Sleep(sleepTime); // this is to mimic computation time
}

一些意见:

当使用8K的

  • 和0的sleepTime时,吞吐量(数据读取/秒)是很好的。此外,磁带驱动器不断发出噪音。
  • 在使用blockSize为8K时,以及任何非零sleepTime (甚至1ms)时,吞吐量都会受到严重影响。数据仍然会被读取,但是磁带驱动器不会经常发出噪音。
  • 在使用blockSize为2M,sleepTime为100 is时,吞吐量很好。磁带驱动器在整个过程中都会产生噪音(尽管听起来像是速度较慢的speed?).
  • Windows资源管理器能够以良好的吞吐量将文件从磁带传输到磁盘。)

我在这里如何获得良好的阅读性能?

如果你能帮我理解其他的谜团-如果你愿意帮助我理解其他的奥秘一次从磁带上读出的“最佳”量是多少?磁带驱动器发出的噪音是否与注意事项有关?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-16 23:48:59

您还没有提供驱动器正在使用的磁带媒体、驱动器或接口类型的任何细节。

目前的技术,如LTO4/5,能够以240至280 of /s的速度传送数据。性能是通过读取LTO的最佳块大小来实现的,我相信这是64 of。最大256 of的块大小不会产生明显的影响,但是读取大量的小块会有影响。读取/写入更大的块,并在程序中读取数据后将其拆分。如果数据已经以8KB块的形式出现在磁带上,那么将驱动器设置为固定块模式并读取多个8KB块。

磁带驱动器必须达到特定的运动速度才能读取数据。如果来自驱动器的数据流不够快,那么驱动器将不得不减速、停止、倒带、重新定位、恢复速度,然后再开始读取。此停止/启动将对性能产生重大影响。LTO试图弥补这一点,能够在不同的磁带速度,但有限制。

使用异步I/O可以实现进一步的速度改进,但是我不认为这对于这个应用程序是不必要的。

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

https://stackoverflow.com/questions/10307823

复制
相关文章

相似问题

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