关于Linux系统缓存的一些测试

本文详述了Linux系统缓存测试的过程,包括LRU缓存回收策略的验证,通过测试数据展示了缓存行为。第一组测试表明系统会记录文件访问次数并逐步替换缓存内容。第二组测试验证了不同访问频率下文件缓存的变化。此外,还探讨了`drop_caches`参数中1和2的区别,涉及数据缓存和目录缓存的清理,以及它们对性能的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LRU缓存回收策略的验证

环境信息:

[root~]# uname -r
2.6.32-431.el6.x86_64
[root~]# cat /etc/redhat-release 
CentOS release 6.5 (Final)

[root~]# free -g
             total       used       free     shared    buffers     cached
Mem:            62         10         52          0          0          2
-/+ buffers/cache:          7         55
Swap:           31          0         31

准备工作:

[root]# ls -lhtr
total 64G
-rw-r--r-- 1 root root 32G May  3 14:36 file1.csv
-rw-r--r-- 1 root root 32G May  3 14:45 file2.csv

操作步骤:

第一组测试
  • 先多次执行time wc -l file1.csv,观察每次执行所用时间
  • 在不清理缓存情况下,多次执行time wc -l file2.csv,观察每次执行所用时间。
  • 同时使用linux-fincore工具查看file1和file2这两个文件的cache情况(关于这个工具也请参考上一篇博文的介绍)

测试数据:

  • 先多次(大约六七次) wc -l file1.csv, 可以看到file1.csv被完全cache住:
    # 第一次执行耗时5分钟多  
    [root]# time wc -l file1.csv
    107746446 file1.csv

    real    5m8.501s
    user    0m5.280s
    sys 0m16.962s

    # 第二次执行只用了22秒
    [root]# time wc -l file1.csv
    107746446 file1.csv

    real    0m22.138s
    user    0m2.133s
    sys 0m8.252s

    # 第三次执行只用了9秒,且之后都是9秒左右。
    [root@192-168-19-124 cache_test]# time wc -l file1.csv
    107746446 file1.csv

    real    0m9.550s
    user    0m2.168s
    sys 0m6.785s

    # 第三次执行之后,查看file1的缓存情况:
    [root]# ./linux-fincore  --pages=false --summarize --only-cached /home/cache_test/*
    filename                                                                                       size        total_pages    min_cached page       cached_pages        cached_size        cached_perc
    --------                                                                                       ----        -----------    ---------------       ------------        -----------        -----------
    /home/cache_test/file1.csv                                                       33,792,286,436          8,250,070                  0          8,250,070     33,792,286,720             100.00
    ---
    total cached size: 33,792,286,720
  • 不清理缓存,直接执行 wc -l file2.csv 。同样耗时5分多。但通过fincore查看,直到命令被执行完、且通过free看到系统内存几乎耗尽,file2被cache的大小也只占到 33.8%,而file1.csv仍然被cache 98.7%
[root]# time wc -l file2.csv 
102468691 file2.csv

real    5m23.170s
user    0m4.718s
sys 0m20.965s

[root]# free -g                                                                                                                                                                                                  Fri May  4 15:11:54 2018

             total   used       free     shared    buffers     cached
Mem:            62         60          2          0          0         45
-/+ buffers/cache:         15         47
Swap:           31          0         31

[root]# ./linux-fincore  --pages=false --summarize --only-cached /home/cache_test/*
filename                                                                                       size        total_pages    min_cached page       cached_pages        cached_size        cached_perc
--------                                                                                       ----        -----------    ----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值