Rust编写的Redox OS发布了一份新的月度状态报告,概述了这个开源操作系统在2月份所做的增强。
最令人兴奋的是,通过实施记录支持,RedoxFS的I/O性能得到了大幅提升。状态报告说明了RedoxFS的I/O性能工作:
为了将RedoxFS读/写操作的大小与磁盘块大小分开,引入了“记录”的概念,其中记录大小是块大小的两倍的幂。
对于大文件,选择128KiB的记录大小,因为这在顺序访问和随机访问速度之间提供了很好的平衡。
举个例子,第一次运行大型程序的命令启动时间大约比以前快3倍。
4lDO2发现了一个相关的优化机会。
在Rust标准库中,包括std::IO::Copy在内的大多数内置读/写API的默认缓冲区大小为8KiB。
如果您使用8 KiB缓冲区大小复制30 MiB文件,则该过程将需要3840次方案调用往返才能完成。如果调度程序中有其他进程争用CPU时间,这可能需要很长时间。这是因为Redox还不支持直接的上下文切换,并且dd不使用并行化或批处理的I/O。
Redox还没有指定utils的cp程序直接使用的std::FS::Copy。Linux和MacOSX有一个优化(fclonefileat/CLONE_FILE_RANGE),它允许更大的缓冲区大小,可以更积极地进行优化。
我们计划在不久的将来在Relbc中实现这一点。
记录大小优化是性能改进的低挂果的一个例子。我们仍有许多其他改进计划,并将尽最大努力让您了解最新情况。
2月份的RedoxFS还看到了对网络驱动程序和内核的代码清理,Relibc继续变得更有成效,Boxedwin正在作为较旧的Wine下游版本(支持Wine 1.8到Wine 5.0)进行移植,以运行16/32位Windows程序,可以选择使用QEMU的NVMe接口,以及其他改进。
有关这些最新的RedoxOS Rust操作系统的更多详细信息,请访问Redox-OS.org.