使用GO获取实际操作(_U)

2020-06-08 07:23:45

在Linux中,系统调用(Syscall)是一切的核心。它们是应用程序与内核交互的主要接口。因此,他们的速度是至关重要的。特别是在后幽灵/熔毁的世界里,这一点变得更加重要。

系统调用的主要部分处理I/O,因为大多数应用程序都是这样做的。对于网络I/O,我们有EPOLL系列的syscall,它们为我们提供了相当快的性能。但是在文件系统I/O部门,还缺少一些东西。我们使用Async_io已经有一段时间了,但是除了一小部分应用程序之外,它没有什么好处。主要原因是,只有在使用O_DIRECT标志打开文件时,它才起作用。这将使内核绕过任何操作系统缓存,并尝试直接从设备读取/写入设备。当我们试图让事情进行得更快时,这不是一种非常好的I/O方式。在缓冲模式下,它将同步运行。

所有这些都在缓慢地改变,因为现在我们有了一个全新的接口来使用kernel-io_uring执行I/O。有很多关于它的议论。这是理所当然的,因为它给了我们一个与内核交互的全新模型。让我们潜入其中,试着了解它是什么,它是如何解决问题的。然后,我们将构建一个带有围棋的小型演示应用程序。