Summary of the analysis revised
This commit is contained in:
parent
470e5acf55
commit
72163cc7bc
@ -387,20 +387,13 @@ window.onerror = function (msg, url, lineNo, columnNo, errorObj) {
|
|||||||
The OOM killer calculates a score for each process and terminates the process with the highest score
|
The OOM killer calculates a score for each process and terminates the process with the highest score
|
||||||
to satisfy the original memory request.
|
to satisfy the original memory request.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
|
||||||
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>
|
|
||||||
(<span class="trigger_proc_requested_memory_pages"></span>) memory
|
|
||||||
from the <span class="trigger_proc_mem_zone"></span> memory zone.
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="js-text--default-show js-oom-manual--show">
|
<div class="js-text--default-show js-oom-manual--show">
|
||||||
<p>
|
<p>
|
||||||
The OOM killer was manually triggered (e.g. with "<code>echo f > /proc/sysrq-trigger</code>")
|
The OOM killer was manually triggered (e.g. with "<code>echo f > /proc/sysrq-trigger</code>")
|
||||||
by a user with root privileges.
|
by a user with root privileges. There is no demand to free memory but the OOM killer started
|
||||||
There is no demand to free memory but the OOM killer started nevertheless.
|
nevertheless. The OOM killer calculates a score for each process and terminates the process with the
|
||||||
The OOM killer calculates a score for each process and terminates the process with the highest score.
|
highest score.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="js-text--default-show js-swap-active--show">
|
<div class="js-text--default-show js-swap-active--show">
|
||||||
@ -421,22 +414,21 @@ window.onerror = function (msg, url, lineNo, columnNo, errorObj) {
|
|||||||
physical memory are in use.
|
physical memory are in use.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="js-text--default-show js-oom-automatic--show">
|
||||||
<p>
|
<p>
|
||||||
The process "<span class="killed_proc_name"></span>"
|
The process "<span class="trigger_proc_name"></span>" (PID <span class="trigger_proc_pid"></span>)
|
||||||
(PID <span class="killed_proc_pid"></span>)
|
requested a memory chunk of order <span class="trigger_proc_order"></span> from the
|
||||||
<span class="js-text--default-show js-killed-proc-score--show">
|
|
||||||
with an OOM score of <span class="killed_proc_score"></span>
|
|
||||||
</span>
|
|
||||||
has been terminated. It uses <span class="killed_proc_rss_percent"></span>
|
|
||||||
(<span class="killed_proc_total_rss_kb"></span>) of the resident memory.
|
|
||||||
</p>
|
|
||||||
<div class="js-text--default-hide js-alloc-failure--show">
|
|
||||||
<p>
|
|
||||||
A memory chunk of order <span class="trigger_proc_order"></span> (
|
|
||||||
<span class="trigger_proc_requested_memory_pages"></span> /
|
|
||||||
<span class="trigger_proc_requested_memory_pages_kb"></span> ) has been requested from the
|
|
||||||
"<span class="trigger_proc_mem_zone"></span>" memory zone.
|
"<span class="trigger_proc_mem_zone"></span>" memory zone.
|
||||||
|
|
||||||
|
That are 2<span class="text__superscript">order</span> pages ==
|
||||||
|
2<span class="trigger_proc_order text__superscript"></span> pages ==
|
||||||
|
<span class="trigger_proc_requested_memory_pages"></span>
|
||||||
|
a <span class="page_size_kb"></span> ==
|
||||||
|
<span class="trigger_proc_requested_memory_pages_kb"></span> memory.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="js-text--default-hide js-alloc-failure--show">
|
||||||
|
<p>
|
||||||
<span class="js-text--default-hide js-alloc-failure-below-low-watermark--show">
|
<span class="js-text--default-hide js-alloc-failure-below-low-watermark--show">
|
||||||
The request failed because after its fulfillment the free memory would be below the memory
|
The request failed because after its fulfillment the free memory would be below the memory
|
||||||
low watermark.
|
low watermark.
|
||||||
@ -448,13 +440,22 @@ window.onerror = function (msg, url, lineNo, columnNo, errorObj) {
|
|||||||
<span class="js-text--default-hide js-alloc-failure-unknown-reason-show">
|
<span class="js-text--default-hide js-alloc-failure-unknown-reason-show">
|
||||||
The request failed, but the reason is unknown.
|
The request failed, but the reason is unknown.
|
||||||
</span>
|
</span>
|
||||||
This analysis result is an estimate because the kernel reduces the minimum watermark in some rare cases.
|
The memory shortage triggers the OOM process.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<p>
|
||||||
<p class="js-text--default-hide js-memory-fragmentation--show">
|
The process "<span class="killed_proc_name"></span>"
|
||||||
Memory fragmentation is common. It occurs due to dynamic memory allocation by the kernel as well as by
|
(PID <span class="killed_proc_pid"></span>)
|
||||||
all applications.
|
<span class="js-text--default-show js-killed-proc-score--show">
|
||||||
|
with an OOM score of <span class="killed_proc_score"></span>
|
||||||
|
</span>
|
||||||
|
has been terminated. It uses <span class="killed_proc_rss_percent"></span>
|
||||||
|
(<span class="killed_proc_total_rss_kb"></span>) of the resident memory.
|
||||||
|
</p>
|
||||||
|
<div class="js-text--default-hide js-memory-fragmentation--show">
|
||||||
|
<p>
|
||||||
|
Dynamic memory allocation is used by both the kernel and all applications. This leads to memory
|
||||||
|
fragmentation and is a common behavior.
|
||||||
<span class="js-text--default-hide js-memory-heavy-fragmentation--show">
|
<span class="js-text--default-hide js-memory-heavy-fragmentation--show">
|
||||||
The system memory is heavily fragmented, because all chunks with an order ≥
|
The system memory is heavily fragmented, because all chunks with an order ≥
|
||||||
<span class="kconfig.PAGE_ALLOC_COSTLY_ORDER"></span> are in use. Allocation of larger contiguous
|
<span class="kconfig.PAGE_ALLOC_COSTLY_ORDER"></span> are in use. Allocation of larger contiguous
|
||||||
@ -505,18 +506,41 @@ window.onerror = function (msg, url, lineNo, columnNo, errorObj) {
|
|||||||
<td class="trigger_proc_nodemask text--align-right"></td>
|
<td class="trigger_proc_nodemask text--align-right"></td>
|
||||||
<td>Bit mask indicating the cores on which the process can run.</td>
|
<td>Bit mask indicating the cores on which the process can run.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr class="js-oom-automatic--show">
|
<tr class="js-oom-automatic--show">
|
||||||
<td>Requested memory<br>(order)</td>
|
<td>Requested memory: order</td>
|
||||||
<td class="text--align-right">
|
<td class="text--align-right">
|
||||||
<span class="trigger_proc_requested_memory_pages"></span> (2<span class="trigger_proc_order text__superscript"></span>) pages /
|
<span class="trigger_proc_order"></span>
|
||||||
<span class="trigger_proc_requested_memory_pages_kb"></span>
|
|
||||||
</td>
|
</td>
|
||||||
<td>The kernel specifies the requested number of pages as exponent of power of two.
|
<td>The kernel specifies the requested number of pages as an exponent of a power of two.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr class="js-oom-automatic--show">
|
||||||
<td>Requested memory<br>(zone)</td>
|
<td>Requested memory: number of pages</td>
|
||||||
|
<td class="text--align-right">
|
||||||
|
<span class="trigger_proc_requested_memory_pages"></span>
|
||||||
|
(2<span class="trigger_proc_order text__superscript"></span> pages) a
|
||||||
|
<span class="page_size_kb"></span> per page
|
||||||
|
</td>
|
||||||
|
<td>Requested memory in number of pages.</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="js-oom-automatic--show">
|
||||||
|
<td>Requested memory: size</td>
|
||||||
|
<td class="text--align-right"><span class="trigger_proc_requested_memory_pages_kb"></span></td>
|
||||||
|
<td>Requested memory in kBytes.</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="js-oom-automatic--show">
|
||||||
|
<td>Requested memory: zone</td>
|
||||||
<td class="trigger_proc_mem_zone text--align-right"></td>
|
<td class="trigger_proc_mem_zone text--align-right"></td>
|
||||||
<td>Memory zone from which the requested storage chunk should come from.
|
<td>Memory zone from which the requested storage chunk should come.</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="js-oom-automatic--show">
|
||||||
|
<td>Requested memory: node</td>
|
||||||
|
<td class="trigger_proc_numa_node text--align-right"></td>
|
||||||
|
<td>
|
||||||
|
First NUMA node with memory shortage watermark "<code>free</code>" <
|
||||||
|
"<code>min</code>" in memory watermark information.
|
||||||
|
<br>
|
||||||
|
Assumption that this is the node where the OOM was triggered.
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@ -1017,6 +1041,7 @@ window.onerror = function (msg, url, lineNo, columnNo, errorObj) {
|
|||||||
<li>Display missing memory chunks (buddyinfo) again</li>
|
<li>Display missing memory chunks (buddyinfo) again</li>
|
||||||
<li>Add analysis why the memory request failed</li>
|
<li>Add analysis why the memory request failed</li>
|
||||||
<li>Add check for heavy memory fragmentation</li>
|
<li>Add check for heavy memory fragmentation</li>
|
||||||
|
<li>Summary of the analysis revised</li>
|
||||||
<li>...</li>
|
<li>...</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user