以下面的代码snippit:
f = open("/mnt/remoteserver/bar/foo.bin",O_RDONNLY); while (true) { byteseread = read(f,buffer,1000); if (bytesread > 0) ProcessBytes(buffer,bytesread); else break; }
如果上面的例子,我们说远程文件,foo.bin是1MB,以前从来没有被客户访问过。 所以,大约有1000个调用来“读取”来获取整个文件。
此外,让我们说客户端上安装目录的服务器是通过互联网,而不是本地。 客户端带宽快,但延迟时间长。
是否每个“读取”调用都会返回到服务器以请求更多的数据? 或者客户机/服务器协议认识到,远程文件上的后续读取通常是连续的,因此,在应用程序实际进行read()调用之前,后续的块被压下。 因此,随后的读取调用会更快地返回,因为数据是预取和caching的。
对于文件系统,由statvfs()计算的已用空间大于fs中所有文件大小的总和
模拟一个大的文件系统来testing在Windows中testing大内存映射(> 5tb)
使用Linux恢复Windows Spanned disks(LDM)?
jffs2文件系统立即破坏(Magic bitmask 0x1985找不到错误)
写在低级访问pendrive
做现代networking文件系统协议(NFS,SMB / Samba,任何其他?)做任何这样的优化。 有networking文件系统协议调整为互联网有这样的优化?
我正在调查一个可能涉及通过互联网实施networking文件系统的个人项目。 令我感到惊讶的是,如果文件I / O的往返次数可以减less,性能可能会更快。
如何find重名的同名文件,但在不同情况下存在于同一目录中的Linux文件?
dd中ibs / obs / bs的用途
如何有效地监视一个目录在Linux上的变化?
如何加快在Linux上阅读固定的一组小文件?
这将非常依赖于协议实现。 一般来说,我不认为大多数客户端实现预取,但最精明的存储管理员使用大块(32 + kb见rsize / wsize挂载选项),这有效地导致同样的事情。 网络文件系统通常也会通过系统缓冲区缓存进行缓存,因此您绝对不会将read()调用直接转换为网络IO。
我的建议是将天真地编写程序(或简单的测试用例),并通过nfsstat等读取网络统计信息,然后从那里进行优化。 有太多的变数来以其他方式得到答案。
我不是专家,但从我可以告诉NFS4有更多的广域网优化比旧的协议(nfs2,3,cifs),所以我一定会把它融入到你的组合。 也就是说,大多数远程文件系统协议并不是专为高延迟访问而设计的,这就是为什么我们最终得到像S3这样的系统。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。