作者回复: 是的,这里有些不准确,原来的意思是想表达网络存储,用 NAS 这样的专业术语就不准确了。谢谢指出。
作者回复: 实际上这是可以提高性能的,一方面,文件的读写是有操作系统缓存的,每次文件读写调用并不是立刻对应一个磁盘IO操作,在文件系统和块设备层依然可以作很多优化(比如最基本的排序、合并)。另一方面,如果是逐个来写的话,多个线程的工作就有可能被这一系列的文件读写阻塞,而分开来每个线程就只需要阻塞自己所读写的文件(假设采用阻塞I/O)
作者回复: 没有,性能跟资源之间的关系不是线性的
作者回复: 是的 这三个都是最常用的
作者回复: 这就是内存回收的逻辑了,比如 LRU 算法
作者回复: 没有,SSD读写的基本单位是页
作者回复: 碰到这种问题最好的方法是查手册,比如在 select 的文档(https://linux.die.net/man/3/select)中你可以看到:
File descriptors associated with regular files shall always select true for ready to read, ready to write, and error conditions.
也就是普通文件读、写总是 Ready 的,所以用 select 也就没有意义。当然,在编程接口上,你可以还是调用它的。
作者回复: 嗯,是的。RAID分软件RAID和硬件RAID,其中软件RAID属于bio层
作者回复: 访问地址连续的时候就是连续I/O,否则就是随机I/O
作者回复: 嗯嗯,谢谢指出
作者回复: 继续看后面的几篇,有讲到的