前言
最近在做压力测试,对磁盘、CPU、内存等指标比较敏感,因为产生了大量的日志文件需要定期删除,于是写了个定时清理磁盘的脚本,今天早上发现内存曲线居然产生了一个漂亮的图形,不知道你们想到了什么?看到这曲线我首先想到的是《编程之美》中那个“让CPU占用率曲线听你指挥” 的面试题,是不是得加一个想内存使用率曲线听你指挥啊?
图形本尊
我所说的漂亮曲线入下图所示,是不是有一种对称美?
搭配这条曲线的还有当时的磁盘占用曲线,两幅图对比基本可以确定这两个指标是相关的
产生的原因
关于实际的原因我不能给出准确的解释,所以跑去问了GPT,它的回答内容如下,如果有不同意的小伙伴欢迎来反驳:
在Ubuntu或其他Linux操作系统中,当你删除大量磁盘文件时,可能会看到内存缓存(cache)降低而”free”(可用内存)升高的情况。这是由于Linux的内存管理机制导致的,这个机制是为了最大程度地提高系统性能。
当你删除文件时,内核会将这些文件从文件系统中删除,但为了提高文件访问的效率,已经读取的数据可能会被保留在内存的缓存中。这样,如果在不久的将来需要访问相同的文件,可以直接从内存缓存中获取,而不必从磁盘读取。这个缓存被称为”page cache”,它占用一部分内存。
当你删除大量文件时,这些文件所占用的内存缓存将被释放,以便更好地利用内存来满足其他正在运行的程序的需求。因此,内存缓存的降低是一个正常现象。
同时,”free”命令在Linux中显示的”free”内存指的是没有被使用的内存,包括未被分配的内存和被内核回收的缓存。因此,当你删除大量文件时,已释放的缓存会被计算在”free”内存中,导致”free”内存升高。
这种行为是Linux内存管理的一部分,它旨在在系统性能和内存使用之间找到平衡。当系统需要更多内存时,它可以释放缓存来满足正在运行的程序的需求。所以,不要担心这种情况,它是Linux操作系统的正常行为。
补一个长周期对比图
总结
- 想要控制好计算机资源产生自定义曲线,控制好“消耗”就可以了,但是如何控制是门学问,需要考虑的各种相关因素
- 为了提高文件访问的效率,已经读取的数据可能会被保留在内存的缓存中,其被称为”page cache”,便于下次访问直接从内存缓存中获取
- 当删除大量文件时,已释放的缓存会被计算在”free”内存中,导致”free”内存升高
风急天高猿啸哀,渚清沙白鸟飞回。无边落木萧萧下,不尽长江滚滚来~
2023-8-12 10:41:18