我atop
每天以 10 分钟为间隔存储日志,我可以使用 读取它们atop -r <path_to_log>
,但如何在此日志中找到内存使用峰值?
答案1
分析记录数据的命令是atopsar
。
例如:
# atopsar -r /var/log/atop/atop_20170511 -m -R 1 | head
trucka 3.4.113-sun7i+ #1 SMP PREEMPT Fri Oct 28 16:54:21 CEST 2016 armv7l 2017/05/11
-------------------------- analysis date: 2017/05/11 --------------------------
00:00:01 memtotal memfree buffers cached dirty slabmem swptotal swpfree _mem_
00:10:01 1888M 604M 381M 422M 0M 185M 2047M 2047M
00:20:01 1888M 604M 381M 422M 0M 185M 2047M 2047M
00:30:01 1888M 604M 381M 422M 0M 185M 2047M 2047M
00:40:01 1888M 604M 381M 422M 0M 185M 2047M 2047M
您必须考虑在您的情况下什么记忆对您来说很重要。
按第三列 (memfree) 排序以找到可用内存的最低点可能是有意义的。您还可以考虑查看 swapfree(第 9 列)以找到使用最多内存的点,这会导致内存管理页面调出以进行交换。
例如,我使用 sort 命令对输出进行排序,以获得最低的可用内存:
# atopsar -r /var/log/atop/atop_20170511 -m -R 1 | sort -b -k 3,3 | head
trucka 3.4.113-sun7i+ #1 SMP PREEMPT Fri Oct 28 16:54:21 CEST 2016 armv7l 2017/05/11
06:40:01 1888M 416M 400M 612M 9M 164M 2047M 2047M
06:30:01 1888M 543M 423M 483M 4M 141M 2047M 2047M
03:10:01 1888M 551M 376M 480M 0M 184M 2047M 2047M
03:20:01 1888M 551M 376M 480M 0M 184M 2047M 2047M
03:30:01 1888M 551M 376M 480M 0M 184M 2047M 2047M
为了美化输出,我将在下面的示例中忽略对 autosar 标题的前 7 行进行排序:
# atopsar -r /var/log/atop/atop_20170511 -m -R 1 | awk 'NR<7{print $0;next}{print $0| "sort -k 3,3"}' | head -11
trucka 3.4.113-sun7i+ #1 SMP PREEMPT Fri Oct 28 16:54:21 CEST 2016 armv7l 2017/05/11
-------------------------- analysis date: 2017/05/11 --------------------------
00:00:01 memtotal memfree buffers cached dirty slabmem swptotal swpfree _mem_
06:40:01 1888M 416M 400M 612M 9M 164M 2047M 2047M
06:30:01 1888M 543M 423M 483M 4M 141M 2047M 2047M
03:10:01 1888M 551M 376M 480M 0M 184M 2047M 2047M
03:20:01 1888M 551M 376M 480M 0M 184M 2047M 2047M