2013-08-21 47 views
1

我在写一个应用程序,其中磁盘性能很有趣。我以前使用的旧的,机械硬盘和使用的技术,this thread明确衡量业绩前缓存:以编程方式清除Linux中安装的(SSD)磁盘上的缓存

// Clear cache for benchmarking            
sync();  
std::ofstream ofs("/proc/sys/vm/drop_caches"); 
ofs << "3" << std::endl; 
ofs.close(); 

运作良好,并给了我预期的结果 - 的〜100 MB/s的测量盘连续读取速度清理缓存时,缓存独立时会高出许多倍。

有一天,我安装了一个SSD盘,安装在/ media /下。在新的计算机重新启动后,第一对测量结果与预期的一样(约300 MB/s),但当缓存开始时,它们显然要高得多。

我现在的问题是,自从将应用程序移动到SSD之后,以前使用的代码行无效。那个缓存的行为方式可能不同吗?任何我需要做的不同来清除它?现在唯一可行的就是重启电脑。

+1

给那个downvoted这个的人:请留下评论,并指出为什么我可以修复它。 –

+0

奇怪的是,这些磁盘应该具有相同的行为,因为缓存位于操作系统的更高层......可能是其他内容,比如读取SSD上的缓存(注意:我甚至不确定它们是否有一个.. 。)? –

+0

@ KarolyHorvath:你能详细说明一下读取缓存的想法吗?我对这些事情大部分都是新手。 –

回答

0

你不会说你刚刚在做什么,也不知道是否有其他方法可以处理这些数据。您只能使用drop_caches从缓存中清除未使用的数据 - 如果由于某些原因需要保留数据(例如,因为它很脏并且需要写回),它将不会被清除。从kernel documentation for drop_caches

这是一个非破坏性的操作,不会释放任何脏物体。 要增加通过此操作释放的对象数量,用户可以在写入/proc/sys/vm/drop_caches之前运行 sync。这将最大限度地减少系统上的脏对象的数量,并创建更多的候选人,以便删除 。

相关问题