我有一个进程需要执行大量磁盘写入但不需要读取。我可以写入大量小文件(~1,000,000,000 个文件,我目前正在执行此操作)或写入几个大文件。
小文件平均约为 2Kb,但由于我的块大小为 4096b,因此我的磁盘容量损失了大约一半。
但是,由于很多线程需要同时写入,大文件不会成为瓶颈吗?因为每个线程都需要打开文件、写入,然后关闭它?
总而言之,对于 I/O 和空间优化来说,哪个最好:
- 很多小文件
- 一些大文件
答案1
最简单的方法可能是写缓存确定频率实际的进行 HDD(或 SSD)写入。您可以在操作系统级别打开或关闭写入缓存,或尝试各种hd参数设置。这样无需更改应用程序即可进行调整。请参阅Unix StackExchange 上的调优。
另一种可能性是写入 RAM 磁盘,并定期将数据移动到 HDD。
警告:增加写入延迟会增加数据丢失的可能性,但如果您使用的是带有 UPS 的笔记本电脑或 PC,这可能不是问题。