Kafka 生产集群中的一个重要部分是页面缓存
这里很好地解释了什么是页面缓存
PageCache 是一种典型的读写缓存,操作系统利用空闲的物理内存来缓存文件,这个缓存就叫 PageCache。当应用程序写文件时,操作系统先把数据写入 PageCache,当数据成功写入 PageCache 后,对于用户代码来说写入就完成了。
然后操作系统异步地将数据更新到磁盘文件中。当应用程序在读取文件时,操作系统会尝试从PageCache中查找数据,如果找到,则直接返回数据,如果找不到,则触发缺页中断,然后操作系统将数据从磁盘文件读取到PageCache中,再将数据返回给应用程序。
数据写入PageCache后,并不会同时写入磁盘,这个过程有一定的延迟,即使某个应用意外退出,操作系统也能保证数据同步到磁盘,但如果服务器突然断电,那么这些数据就会丢失。
读写缓存设计本质上是不可靠的,牺牲了数据的一致性来换取性能。当然应用程序可以调用sync等系统调用强制操作系统立即将缓存数据同步到磁盘文件。但同步过程非常缓慢,并且失去了缓存的作用。
与页面缓存相关的内核OS Linux参数有:
cat /proc/vmstat | egrep "dirty|writeback"
nr_dirty 50376
nr_writeback 4673
nr_writeback_temp 0
nr_dirty_threshold 1746633
nr_dirty_background_threshold 1982726
我想知道,优化 Page Cache 内核参数的最佳方法是什么
或者找到某篇文章来解释设置页面缓存参数的最佳做法