答案1
sync
当您需要确保任何脏扇区都刷新到介质时,需要调用。
一种常见的情况是,当您将dd
图像fs
写入usb
闪存棒并且不提供conv=fdatasync
选项时(在此处和那里发布的大多数食谱中都缺少该选项):闪存设备的写入速度非常低,因此可能需要几分钟才能完成写入所有内容,特别是如果该棒之前写入了许多扇区。
该sync
程序确保在其终止时所有内容都被刷新。
答案2
除了基准测试之外,我知道没有任何情况需要刷新缓存。 Linux 缓存的管理非常巧妙,并且它们使用的内存始终按需可用。因此,除了减慢系统速度之外,刷新它们可能不会实现任何目标。
要详细阅读有关此问题的内容,请参阅这个网页。
答案3
哔叽和希安已经说过关于Linux中缓存管理的重要事情,特别是通过干扰很难获得任何东西。
但是,除了基准测试之外,还有一些特殊情况可以从删除缓存中受益:
例如,我有一台具有大 RAM (32 GB) 的笔记本电脑。当然,Linux利用了它,这很好。但是,当系统休眠时,所有有效的内存内容都必须写入持久存储(在我的例子中是交换)。因此,提前释放一些内存可以极大地加速休眠过程。
这就是为什么我有
echo 3 > /proc/sys/vm/drop_caches
在我的一个休眠挂钩中,紧随sync
.在我的例子中,速度的提升高达半个数量级。
当然,从休眠状态恢复也是如此。
注意:从休眠状态恢复后,系统反应速度明显变慢,直到缓存再次被填满。