io_uring api api数据结构定义好了,逻辑实现具体是如何驱动这些数据结构的呢?使用上,大体分为准备、提交、收割过程。 linux kernel仅仅提供了三个系统调用,简化了异步io的操作 12345678910// 初始化一个新的 io_uring 上下文,注册io_uring实例,包括注册共享内存等int io_uring_setup(u32 entries, struct io_uring_params * 2024-03-26 Linux kernel
io_uring api 动机探索scylladb因高效io带来的极速性能,然而并未用上io_uring这一技术。不过无所谓了,如果io_uring在其执行框架seastar前提出,应该就被用上了。 资料 Efficient IO with io_uring What’s new with io_uring Ringing in a new asynchronous I/O API liburing 操作 2024-03-26 Linux kernel
jump label 什么是jump label 在通常情况下,我们会使用分支语句来决定是否执行某个事件,例如 123456bool keyfalse;if (!key) // do unlikely codeelse // do likely code 上述分支判断语句通常会被编译为mov, test, je的指令组合 在linux kernel中,启用jump label后,这类分支语句可以改写为 2024-03-18 Linux kernel
io_uring 动机了解到异步io给scylladb带来了极速性能,因此想了解其异步io框架seastar,然而其并未使用io_uring。不过如果io_uring在其执行框架seastar前被提出,应该是会被用上的。 异步io的优势异步io不会占用cpu资源,在计算密集型任务中,可以更充分地利用处理器资源,进程在提交异步io后,可以立即执行后续任务,不会阻塞。在nginx中,读取文件的操作会异步地提交给内核,内 2024-03-10 Linux kernel
memory type Memory Type什么是Memory Type每个内存区域都有自己的memory type,代表此内存区域的一些特性,例如数据是否会使用cache、访存操作是否可以reorder等等 Linux下可以通过以下命令查看 1cat /sys/kernel/debug/x86/pat_memtype_list 目前IA32中的memory type如下表所示 Memory Type an 2024-03-04 体系结构