linux清cache会影响tcp不

linux清cache会影响tcp不,第1张

linux清cache会影响tcp,因为linux清cache时,这些文件会被系统用来设置所有socket的发送和接收缓存大小,此时既影响TCP,也影响UDP,所以linux清cache会影响tcp。

最近又出现了一个问题:同样的一个C程序,在同样的数据集,单线程,在不同的机器上跑,性能差距高达30倍以上(30s/1000s)。程序内存消耗不足300MB,数据集大小近100GB。

这两台机器的配置分别是:

分别称A和B机器。

从主频来看,B机器的CPU反而更高一些(查阅CPU天梯表,Core i7型号的CPU跑分也高一些)。

那么问题应该出在内存上。通过free -h命令查看内存使用情况,发现A机器RAM的 buffered/cached 高达100GB以上。这立即引起了我的警觉,会不会是数据集被缓存进了系统内存?

于是释放缓存(syncecho 3 >/proc/sys/vm/drop_caches)

然后再执行程序,好了,A机器执行无比缓慢。

究其原因,我的程序是一个基于索引的查询算法,这个程序刚好运行在索引构建算法之后,因此查询时涉及到的源数据访问,全都在索引构建算法的访问范围之内,因此被缓存进内存。

这也提了个醒,任何比较效率的算法,首先要在程序运行前清空缓存,否则不能反映真实情况,因为I/O的代价可能都变成了内存访问,使得结果过于乐观。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8958603.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-23
下一篇2023-04-23

发表评论

登录后才能评论

评论列表(0条)

    保存