任何人都可以告诉我在Linux VM可调参数中使用dirty_bytes和dirty_background_bytes。
我推断dirty_bytes指定应用程序执行写操作之后的内存量,开始直接写入磁盘。它是否正确或分配的内存量是否已用完,该部分首先转移到磁盘,然后新数据再次存储在内存中。例如。假设我想将1 GB文件传输到磁盘,并将dirty_bytes设置为100 MB然后将100 MB写入内存后,执行写入的应用程序现在开始将数据直接写入磁盘或将100 MB传输到磁盘磁盘然后再将100 MB写入内存然后转移到磁盘等等?
在dirty_background_bytes的情况下,当脏内存部分超过此值时,pdflush会在后台将脏数据写回磁盘。
我对这两个参数的理解是否正确?
答案 0 :(得分:6)
不,超过dirty_bytes
(或dirty_ratio
)不会导致进程开始直接写入磁盘。
相反,当一个进程弄脏超过限制的页面时,该进程用于执行某些脏页面的同步写入 - 具体哪些仍然由通常的启发式决定。它们可能不一定是最初被特定过程弄脏的页面。
实际上,进程看到它的写入(可能只是一个内存写入)暂停,直到发生一些写出。
你对dirty_background_*
是正确的。当超出后台限制时,将启动异步写入,但允许用户空间进程继续。