如何准确定位标题是页面缓存是否使我们知道问题的发生通常涉及操作系统的许多模块。例如,当系统有升高的问题时,冲突太强大了,物理资源(CPU,内存,磁盘I/O,网络I/O)是由参数引起的。这也可能是由内核特性的设计缺陷引起的。
当问题发生时,我们需要准确地找到问题的原因以服用正确的药物。盲目策略可能会使我们的系统恶化。
Linux/Proc和/SYS Linux内核的典型分析方法主要是通过/PROC和/SYS向用户导出系统信息。当系统存在问题时,我们可以尝试阅读这些目录中的系统信息,SEEESEE,指标异常。
如何粗略地确定问题是否是由Page Cache引起的,我们可以在单位时间内阅读PROC/VMSTATAT中PGSCAN的更改。如果更改太大,则可能是由于问题引起的,因为PGSCAN代表页面缓存内存回收行为的内存回收,通常意味着系统内存压力很紧。
如何分析 /proc和 /sys生成的信息可以指出问题分析的一般方向,我们可以确定问题是否由页面cache引起。然后我们可以使用一些专业工具(例如Ftrace,EBPF,Perf,等等。)在深度中更多地分析问题,以了解问题的发生方式。
如果您想跟踪,则如何选择合适的工具静态跟踪(预设跟踪点)和动态跟踪(需要使用探针),如果您已经具有预设跟踪点;如果没有预设跟踪点,则需要查看是否可以使用探针(包括Kprobe和Uprobe)来实现。
应当指出的是,分析工具本身也将对业务(Heisenbug)产生一定的影响。例如,您需要更多地了解这些工具的副作用,以避免发生事故。
真正的 - 时间问题分析系统现在非常高,是由页面缓存引起的?1。更喜欢将系统与工具一起检查系统的概述,易于入门:
在Linu内核4.20之后,如果SAR也升级到版本12.3.3,我们可以使用SAR的新PSI函数,并且将在/proc/dishile file ::中记录相同的信息。
CPU格式
我们需要专注于AVG10的列,这表明最近的平均压力为10s内存。如果它很大(例如大于40),则负载飙升的可能性是由于记忆压力,尤其是页面缓存的压力。
参考文档:PSI - 按压失速信息 - Linux内核文档
2.收集指标,定位问题点SAR仅收集了一些常用的指标。它不涵盖页面缓存的所有行为,例如内存压实,业务工作集和其他容易加载的问题。
收集了这些指标后,我们可以分析由Page Cache异常引起的原因。例如,当Compact_fail在单位时间内发生很大变化时,这意味着这些片段已经失败了,这也意味着也意味着系统中的系统非常严重。很难申请连续的物理记忆。目前,您需要调整片段索引或片段索引原始触发记忆法规,以减慢记忆片段引起的压力。
页缓存经常出色的快递
3.打破砂锅以提出要求,进一步分析上述问题的问题。我们需要知道什么适用于连续记忆,以进行更有针对性的调整,这需要进一步观察。
使用内核预设相关的跟踪点进行更详细的分析
计算记忆法规提出的延迟存款法规为例,以查看如何使用跟踪点来观察它:
可以看出,49355的过程触发了压实,开始和结束了两个由缩短时间戳记触发的痕迹,并且可以获得计算机带来的延迟。我们可以将这段时间的延迟计算为17ms。
有时我们收集的数据太多了,通常需要自动分析工具来分析问题,例如:perf -script(1)-linux手册页(man7.org)
历史问题分析系统负载值昨天很高,是由页面缓存引起的吗?对于真实的时间问题,因为存在 - 集合信息以进行收集,因此相对容易分析。但是有时候,我们没有办法及时收集 - 点信息。例如,当问题在深夜发生时,我们没有时间收集实时信息。目前,我们只能查看历史记录。
SAR日志信息我们可以根据SAR的日志信息来判断当时发生的事情。例如,我们的业务系统昨晚出现了RT抖动。通过查看日志,我们发现SAR -B中的业务RT抖动和PGSCAND的时间不是0。与页面缓存回收有一些关系。我们可以尝试调整vm.min_free_kbytes来验证效果,并查看业务是否仍然抖动。
提示:调整Vm.min_free_kbytes会有一些风险。如果系统本身的内存恢复已经很紧,则很可能会触发OOM,甚至导致系统下降。因此,进行调整时,您必须进行一些检查以查看此时是否可以进行调整。
SAR命令补充:Linux中的20个SAR命令示例[备忘单] |GolinuxCloud
原始:https://juejin.cn/post/7102678421448163364