在Linux 64位(例如Amazon EC2实例)上,我需要将几个大型二进制文件加载到内存中.什么是最快的方式?
此外,节点可能会或可能不会再次启动此可执行文件,因此如果文件在后续尝试中加载得更快,则会有所帮助.某种预加载步骤甚至可能有效.
时间将由磁盘I/O占主导地位,因此您使用的API并不像考虑磁盘的工作方式那么重要.如果你随机访问一个磁盘(旋转媒体),它将花费3到9毫秒来寻找......一旦磁盘正在流式传输,它可以维持大约128 MB /秒,这就是从磁头开始的位数.SATA链路或PCIe总线具有比这更高的带宽(600到2000 MB /秒).Linux在内存中有一个页面缓存,它在磁盘上保留一份页面副本,因此如果您的计算机有足够的RAM,后续尝试将很快,即使您随后随机访问数据也是如此.所以建议一次读取大块.如果你真的想加快初始加载,那么你可以使用mmap映射整个文件(1GB-4GB)并有一个帮助程序线程按顺序读取每个页面的第一个字节.
您可以在此处详细了解磁盘驱动器性能特征.
| 归档时间: |
|
| 查看次数: |
2825 次 |
| 最近记录: |