top和ps 之类的工具可以为我提供当前分配给进程的内存量,但我感兴趣的是测量自进程创建以来或在给定时间间隔内分配给进程的最大内存量。有关如何查找的任何建议?
出于基准测试的目的,我想强制 Apache 2 从磁盘加载每个请求的文件,而不是从内存中的缓存加载它。从我读过的同步开始,然后
echo 3 > /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
让我删除 linux 的缓存。对特定文件的后续请求将不会从 linux 的缓存中提供,但对同一文件的进一步请求将再次从 linux 的缓存中提供。这是因为 /proc/sys/vm/drop_caches 不会禁用缓存,它只会丢弃在那一刻之前缓存的内容。我可能会在每个请求之前删除缓存,但我更喜欢另一种解决方案。我还能做些什么来确保 apache 从磁盘加载每个请求的文件?
我为什么要这样做:我知道在正常操作中启用了缓存。但是服务器不提供小的和经常访问的文件,例如 html 页面、小图像等。相反,它提供的文件大多是来自一个非常大的文件集的几兆字节大小的文件。这些文件的访问非常统一,因此很少访问每个单独的文件。因此,在正常操作中,我希望大多数访问不会导致缓存命中,但需要从磁盘加载文件。我有几个示例文件,我想使用 apache 的ab访问它们衡量服务器每秒能够处理多少事务的基准。不幸的是,我相信由于缓存,我得到的结果太乐观了。因此,我想禁用 Linux 的磁盘缓存,而任何缓存 Apache 可能会自行完成。
更新:到目前为止给出的答案告诉我如何禁用 Apache 自己的缓存,但我仍然想知道是否有办法禁用由 linux 内核完成的缓存。