Summary of the analysis revised

This commit is contained in:
Carsten Grohmann 2023-03-13 21:51:46 +01:00
parent 470e5acf55
commit 72163cc7bc

View File

@ -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 &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>
(<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 &quot;<code>echo f > /proc/sysrq-trigger</code>&quot;) The OOM killer was manually triggered (e.g. with &quot;<code>echo f > /proc/sysrq-trigger</code>&quot;)
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 &quot;<span class="killed_proc_name"></span>&quot; The process &quot;<span class="trigger_proc_name"></span>&quot; (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
&quot;<span class="trigger_proc_mem_zone"></span>&quot; memory zone. &quot;<span class="trigger_proc_mem_zone"></span>&quot; 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 &quot;<span class="killed_proc_name"></span>&quot;
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 &ge; The system memory is heavily fragmented, because all chunks with an order &ge;
<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 &quot;<code>free</code>&quot; &lt;
&quot;<code>min</code>&quot; 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>