2

I have atop logs stored on a dayly basis with 10 min interval and I can read them with atop -r <path_to_log>, but how can I find a peak memory usage in this log?

1 Answer 1

2

The command to analyze the recorded data is atopsar.

For example:

# 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

You have to consider what memory is important for you in your case.

It may make sense for you to sort by the third column (memfree) to find the lowest point of free memory. You could also consider to have a look at the swapfree (9th column) to find the point where most memory is used, which causes the memory management to page out to swap.

As an example, I sort the output for lowest memory free with the sort command:

# 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

Just to beautify the output, I will ignore sorting the first 7 rows of autosar's header in the following example:

# 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
8
  • What if I want just one number (minimum free memory from log)? is it possible with awk?
    – mrgloom
    Commented May 12, 2017 at 8:46
  • Seems it should be: atopsar -r /var/log/atop/atop_20170512 -m -R 1 | sed 1,6d | awk '{print $3}' | sed 's:M::g' | sed 's:[^0-9]*::g'| awk 'NF' | sort -n | head -n 1
    – mrgloom
    Commented May 12, 2017 at 10:20
  • Thats technical correct so far, but you should think about your intentions of finding out lowest "free memory". free memory can also be low, when the system uses memory as cache because the applications do not require the whole memtotal. Also paged out memory to swap could be important for any memory related investigations. Good luck Commented May 12, 2017 at 10:27
  • Seems memfree is not 'correct', I don't know how it's calculated, but even in days without heavy load on server it shows about only 30% of memory free.
    – mrgloom
    Commented May 12, 2017 at 10:31
  • Sounds perfectly fine for me, as linux utilizes memory for buffers and caches until an application requires more memory. try out: free -m and compare "free memory" with "available memory": daniel@trucka:~$ free -m total used free shared buff/cache available Mem: 1888 312 734 17 840 1496 Swap: 2047 0 2047 As you can see in my example: there is 1496M of memory available, but 840 are currently used for caches (which is fine). Commented May 12, 2017 at 10:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .