Rollback changed interpretation of last OOM line

This is a logical rollback because I was wrong about the
interpretation of this line.
This commit is contained in:
Carsten Grohmann 2020-01-08 20:59:20 +01:00
parent 3dc965e8ff
commit 13afe5247b
2 changed files with 71 additions and 45 deletions

View File

@ -212,32 +212,24 @@ function goBack() {
The process &quot;<span class="trigger_proc_name"></span>&quot; (PID <span class="trigger_proc_pid"></span>) The process &quot;<span class="trigger_proc_name"></span>&quot; (PID <span class="trigger_proc_pid"></span>)
requested <span class="trigger_proc_requested_memory_pages_kb"></span> requested <span class="trigger_proc_requested_memory_pages_kb"></span>
(<span class="trigger_proc_requested_memory_pages"></span>) memory. (<span class="trigger_proc_requested_memory_pages"></span>) memory.
The system couldn't satisfy this request and started the OOM killer to free memory. The OOM killer The system couldn't satisfy this request and started the OOM killer to free memory. The OOM killer
calculates a score for each process and terminates the process with the highest score calculates a score for each process and terminates the process with the highest score
&quot;<span class="killed_proc_name"></span>&quot; (PID <span class="killed_proc_pid"></span>) to satisfy the initial &quot;<span class="killed_proc_name"></span>&quot; (PID <span class="killed_proc_pid"></span>) to satisfy the initial
memory request. memory request.
</p> </p>
<p> <p>
The terminated process uses <span class="killed_proc_rss_kb"></span> The terminated process uses <span class="killed_proc_total_rss_kb"></span>
(<span class="killed_proc_rss_percent text--append-suffix-percent"></span>) resident memory (<span class="killed_proc_rss_percent text--append-suffix-percent"></span>) resident memory
and has an OOM score of <span class="killed_proc_score"></span>. and has an OOM score of <span class="killed_proc_score"></span>.
</p>
<p> <p>
The system has <span id="system_total_ram_kb"></span> physical memory and The system has <span class="system_total_ram_kb"></span> physical memory and
<span class="swap_total_kb"></span> swap space. That's <span class="system_total_ramswap_kb"></span> total. <span class="swap_total_kb"></span> swap space. That's <span class="system_total_ramswap_kb"></span> total.
<br>
<span class="system_total_ram_used_kb"></span> out of <span class="system_total_ram_kb"></span> physical
memory and <span class="swap_used_kb"></span> out of <span class="swap_total_kb"></span> swap space
are in use.
</p> </p>
<!--
r'^Killed process \d+ \(.*\) total-vm:(?P<system_total_vm_kb>\d+)kB, anon-rss:(?P<system_anon_rss_kb>\d+)kB, '
r'file-rss:(?P<system_file_rss_kb>\d+)kB, shmem-rss:(?P<system_shmem_rss_kb>\d+)kB.*'
<p>
<span class="text--append-suffix-kbytes" id="explain_used_memory_kb"></span>
(<span class="text--append-suffix-percent" id="explain_used_memory_percent"></span>) of the physical memory
and <span class="text--append-suffix-kbytes" id="explain_swap_used_kb"></span>
(<span class="text--append-suffix-percent" id="explain_swap_used_percent"></span>) of the swap space
were used used when the OOM killer has been invoked.
</p>
-->
</div> </div>
<h3>Details of analysis</h3> <h3>Details of analysis</h3>
@ -315,26 +307,64 @@ r'^Killed process \d+ \(.*\) total-vm:(?P<system_total_vm_kb>\d+)kB, anon-rss:(?
</tr> </tr>
<tr> <tr>
<td>Virtual Memory <br> (total_vm) </td> <td>Virtual Memory <br> (total_vm) </td>
<td class="killed_proc_vm_kb"></td> <td class="killed_proc_total_vm_kb"></td>
<td>Virtual memory used by this process.</td> <td>Virtual memory used by this process.</td>
</tr> </tr>
<tr> <tr>
<td>Resident anonymous memory <br> (rss) </td> <td>Resident anonymous memory <br> (rss)</td>
<td class="killed_proc_rss_kb"></td> <td class="killed_proc_rss_kb"></td>
<td>Part of the virtual process memory mapped into RAM.</td> <td>Part of the virtual process memory mapped into RAM.</td>
</tr> </tr>
<!-- Memory Usage Graphs -->
<tr> <tr>
<th scope="row" colspan="3">Memory Usage Graphs</th> <td>Total resident anonymous memory <br> (rss)</td>
<td class="killed_proc_total_rss_kb"></td>
<td>
All virtual process memory mapped into RAM. <br>
<code>TotalRSS = anon-rss + file-rss + shmem-rss</code>
</td>
</tr> </tr>
<tr> <tr>
<td class="table__sub-section--bold">RAM Summary</td> <td>Resident anonymous memory <br> (anon-rss)</td>
<td class="killed_proc_anon_rss_kb"></td>
<td>Resident anonymous pages <br> Part of the virtual process memory mapped into RAM.</td>
</tr>
<tr>
<td>Resident file mapping memory <br> (file-rss)</td>
<td class="killed_proc_file_rss_kb"></td>
<td>
Resident file mapping pages <br> Files which have been mapped into RAM (with
<a href="http://man7.org/linux/man-pages/man2/mmap.2.html">mmap(2).</a>)
</td>
</tr>
<tr>
<td>Resident shared memory <br> (shmem-rss)</td>
<td class="killed_proc_shmem_rss_kb"></td>
<td>
Resident shared memory pages <br>
This may include System V shared memory and shared anonymous memory.
</td>
</tr>
<!-- Memory Usage -->
<tr>
<th colspan="3" scope="row">Memory Usage</th>
</tr>
<!-- Graphs -->
<tr>
<td class="table__sub-section--bold">Graphs</td>
<td></td>
<td></td>
</tr>
<tr>
<td>RAM Summary</td>
<td colspan="2"><div id="svg_ram"></div></td> <td colspan="2"><div id="svg_ram"></div></td>
</tr> </tr>
<tr> <tr>
<td class="table__sub-section--bold">Swap Summary</td> <td>Swap Summary</td>
<td colspan="2"><div id="svg_swap"></div></td> <td colspan="2"><div id="svg_swap"></div></td>
</tr> </tr>
@ -349,8 +379,7 @@ r'^Killed process \d+ \(.*\) total-vm:(?P<system_total_vm_kb>\d+)kB, anon-rss:(?
<tr> <tr>
<td>RAM pages</td> <td>RAM pages</td>
<td class="ram_pages"></td> <td class="ram_pages"></td>
<td>Total number of RAM pages <td>Total number of RAM pages</td>
</td>
</tr> </tr>
<tr> <tr>
<td>HighMem/MovableOnly</td> <td>HighMem/MovableOnly</td>
@ -363,26 +392,22 @@ r'^Killed process \d+ \(.*\) total-vm:(?P<system_total_vm_kb>\d+)kB, anon-rss:(?
<tr> <tr>
<td>Reserved pages</td> <td>Reserved pages</td>
<td id="reserved_pages"></td> <td id="reserved_pages"></td>
<td>Number of reserved pages <td>Number of reserved pages</td>
</td>
</tr> </tr>
<tr> <tr>
<td>CMA reserved pages</td> <td>CMA reserved pages</td>
<td id="cma_pages">0</td> <td id="cma_pages">0</td>
<td>Pages reserved for Contiguous Memory Allocator (CMA) <td>Pages reserved for Contiguous Memory Allocator (CMA)</td>
</td>
</tr> </tr>
<tr> <tr>
<td>Pagetable Cache</td> <td>Pagetable Cache</td>
<td id="pagetablecache_pages">0</td> <td id="pagetablecache_pages">0</td>
<td>Number of pages in pagetable cache <td>Number of pages in pagetable cache</td>
</td>
</tr> </tr>
<tr> <tr>
<td>Number of pages with hardware errors</td> <td>Number of pages with hardware errors</td>
<td id="hwpoisoned_pages">0</td> <td id="hwpoisoned_pages">0</td>
<td>Pages with uncorrectable memory errors <td>Pages with uncorrectable memory errors</td>
</td>
</tr> </tr>
<!-- Memory Usage Details --> <!-- Memory Usage Details -->
@ -393,7 +418,7 @@ r'^Killed process \d+ \(.*\) total-vm:(?P<system_total_vm_kb>\d+)kB, anon-rss:(?
<td></td> <td></td>
</tr> </tr>
<tr> <tr>
<td>Active anonymous memory <br> (active_anon) </td> <td>Active anonymous memory <br> (active_anon)</td>
<td id="active_anon_pages"></td> <td id="active_anon_pages"></td>
<td>Recently used anonymous memory.<br> <td>Recently used anonymous memory.<br>
These memory pages will usually not swapped out. These memory pages will usually not swapped out.
@ -700,7 +725,6 @@ r'^Killed process \d+ \(.*\) total-vm:(?P<system_total_vm_kb>\d+)kB, anon-rss:(?
<h4>General</h4> <h4>General</h4>
<ol> <ol>
<li>Add a textual summary of the analysis</li> <li>Add a textual summary of the analysis</li>
<li>Fix interpretation of the last OOM line</li>
<li>Fix calculation of requested memory in kBytes</li> <li>Fix calculation of requested memory in kBytes</li>
<li>...</li> <li>...</li>
</ol> </ol>

View File

@ -353,8 +353,8 @@ class OOMAnalyser(object):
) )
REC_KILLED_PROCESS = re.compile( REC_KILLED_PROCESS = re.compile(
r'^Killed process \d+ \(.*\) total-vm:(?P<system_total_vm_kb>\d+)kB, anon-rss:(?P<system_anon_rss_kb>\d+)kB, ' r'^Killed process \d+ \(.*\) total-vm:(?P<killed_proc_total_vm_kb>\d+)kB, anon-rss:(?P<killed_proc_anon_rss_kb>\d+)kB, '
r'file-rss:(?P<system_file_rss_kb>\d+)kB, shmem-rss:(?P<system_shmem_rss_kb>\d+)kB.*', r'file-rss:(?P<killed_proc_file_rss_kb>\d+)kB, shmem-rss:(?P<killed_proc_shmem_rss_kb>\d+)kB.*',
re.MULTILINE) re.MULTILINE)
lines = [] lines = []
@ -606,7 +606,7 @@ class OOMAnalyser(object):
def _calc_trigger_process_values(self): def _calc_trigger_process_values(self):
"""Calculate all values related with the trigger process""" """Calculate all values related with the trigger process"""
self.results['trigger_proc_requested_memory_pages'] = 2 ** self.results['trigger_proc_order'] self.results['trigger_proc_requested_memory_pages'] = 2 ** self.results['trigger_proc_order']
self.results['trigger_proc_requested_memory_pages_kb'] = self.results['trigger_proc_requested_memory_pages'] *\ self.results['trigger_proc_requested_memory_pages_kb'] = self.results['trigger_proc_requested_memory_pages'] * \
self.results['page_size_kb'] self.results['page_size_kb']
# process gfp_mask # process gfp_mask
if self.results['trigger_proc_gfp_flags'] != '<not found>': # None has been is converted to '<not found>' if self.results['trigger_proc_gfp_flags'] != '<not found>': # None has been is converted to '<not found>'
@ -625,11 +625,13 @@ class OOMAnalyser(object):
def _calc_killed_process_values(self): def _calc_killed_process_values(self):
"""Calculate all values related with the killed process""" """Calculate all values related with the killed process"""
self.results['killed_proc_rss_kb'] = self.results['_processes'][self.results['killed_proc_pid']]['rss'] self.results['killed_proc_total_rss_kb'] = self.results['killed_proc_anon_rss_kb'] + \
self.results['killed_proc_vm_kb'] = self.results['_processes'][self.results['killed_proc_pid']]['total_vm'] self.results['killed_proc_file_rss_kb'] + \
self.results['killed_proc_shmem_rss_kb']
self.results['killed_proc_rss_percent'] = int(100 * self.results['killed_proc_rss_percent'] = int(100 *
self.results['killed_proc_rss_kb'] / self.results['killed_proc_total_rss_kb'] /
self.results['system_total_ram_kb']) int(self.results['system_total_ram_kb']))
def _calc_swap_values(self): def _calc_swap_values(self):
"""Calculate all swap related values""" """Calculate all swap related values"""
@ -649,10 +651,10 @@ class OOMAnalyser(object):
# calculate remaining explanation values # calculate remaining explanation values
self.results['system_total_ram_kb'] = self.results['ram_pages'] * self.results['page_size_kb'] self.results['system_total_ram_kb'] = self.results['ram_pages'] * self.results['page_size_kb']
self.results['system_total_ramswap_kb'] = self.results['system_total_ram_kb'] + self.results['swap_total_kb'] self.results['system_total_ramswap_kb'] = self.results['system_total_ram_kb'] + self.results['swap_total_kb']
self.results['system_total_ram_used_kb'] = self.results['system_total_vm_kb'] + \ total_rss_pages = 0
self.results['system_anon_rss_kb'] + \ for pid in self.results['_processes'].keys():
self.results['system_file_rss_kb'] + \ total_rss_pages += self.results['_processes'][pid]['rss']
self.results['system_shmem_rss_kb'] self.results['system_total_ram_used_kb'] = total_rss_pages * self.results['page_size_kb']
def _determinate_platform_and_distribution(self): def _determinate_platform_and_distribution(self):
"""Determinate platform and distribution""" """Determinate platform and distribution"""