应用程序可以通过posix_fadvise()
来告诉内核访问文件的模式,建议内核如何进行IO以达到最优性能(如名字所示,它仅仅是一个建议或期望,内核不承诺遵守)。可用的模式有:POSIX_FADV_NORMAL
,POSIX_FADV_SEQUENTIAL
,POSIX_FADV_RANDOM
,POSIX_FADV_NOREUSE
,POSIX_FADV_WILLNEED
,POSIX_FADV_DONTNEED
。本文看一看它们的行为。
Rust的Option细节
Rust中Option使用细节。
TiKV的BatchSystem
BatchSystem是TiKV实现multi-raft的基石,本文介绍BatchSystem的实现。BatchSystem本身是一个抽象出来的通用的模块,不牵涉业务逻辑(multi-raft),方便单独介绍。
Rust的pattern match
Rust中match随处可见,但是其中有一些细节值得注意:被match的对象可以是值也可以是引用,pattern可以是值也可以是引用,这就有4种组合,各自是什么行为呢?
block layer的plug
Block层的请求在device的queue里会发生reorder与merge以提高效率,然而,在进入device的queue之前也会做同样的努力,这就是plug机制。
避免block device stack中的递归
本篇研究一个具体问题:block device stack中,如何避免递归。
megaraid
简单介绍megaraid。
Advanced Format Disks
简单介绍advanced format disks(4K扇区磁盘)的产生与标准,并对比512e磁盘分区对齐与不对齐时的性能。
Linux blktrace
Java的Error和Exception
简单记录一下Java的Error
和Exception
的区别,以及checked和unchecked的区别。