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:
parent
3dc965e8ff
commit
13afe5247b
@ -212,32 +212,24 @@ function goBack() {
|
|||||||
The process "<span class="trigger_proc_name"></span>" (PID <span class="trigger_proc_pid"></span>)
|
The process "<span class="trigger_proc_name"></span>" (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
|
||||||
"<span class="killed_proc_name"></span>" (PID <span class="killed_proc_pid"></span>) to satisfy the initial
|
"<span class="killed_proc_name"></span>" (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>
|
||||||
|
@ -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"""
|
||||||
|
Loading…
Reference in New Issue
Block a user