From 0ac8f4939a0e1a068f41778bb27f99c07be9b2f1 Mon Sep 17 00:00:00 2001 From: Carsten Grohmann Date: Mon, 27 Mar 2023 21:25:59 +0200 Subject: [PATCH] Add support for secondary page table counters as with kernel 6.1 "mm: add NR_SECONDARY_PAGETABLE to count secondary page table usage." (ebc97a52) added. --- OOMAnalyser.html | 2 +- OOMAnalyser.py | 34 +++++++++++++++++++++++++++++----- test.py | 2 +- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/OOMAnalyser.html b/OOMAnalyser.html index 4ba1c66..ea72edb 100644 --- a/OOMAnalyser.html +++ b/OOMAnalyser.html @@ -1091,7 +1091,7 @@ window.onerror = function (msg, url, lineNo, columnNo, errorObj) {
  • Add check for heavy memory fragmentation
  • Summary of the analysis revised
  • Show memory watermarks together will all details
  • -
  • Add GFP flags for kernel 6.0
  • +
  • Add support for kernel 6.0 and newer
  • ...
  • diff --git a/OOMAnalyser.py b/OOMAnalyser.py index ee9d128..1b565dd 100644 --- a/OOMAnalyser.py +++ b/OOMAnalyser.py @@ -1545,7 +1545,6 @@ class KernelConfig_4_8(KernelConfig_4_6): class KernelConfig_4_9(KernelConfig_4_8): # Supported changes: # * "mm: oom: deduplicate victim selection code for memcg and global oom" (7c5f64f84483bd13886348edda8b3e7b799a7fdb) - # * update GFP flags name = "Configuration for Linux kernel 4.9 or later" release = (4, 9, "") @@ -2122,7 +2121,6 @@ class KernelConfig_4_18(KernelConfig_4_15): class KernelConfig_4_19(KernelConfig_4_18): # Supported changes: # * mm, oom: describe task memory unit, larger PID pad (c3b78b11efbb2865433abf9d22c004ffe4a73f5c) - # * update GFP flags name = "Configuration for Linux kernel 4.19 or later" release = (4, 19, "") @@ -2133,7 +2131,6 @@ class KernelConfig_4_19(KernelConfig_4_18): class KernelConfig_5_0(KernelConfig_4_19): # Supported changes: # * "mm, oom: reorganize the oom report in dump_header" (ef8444ea01d7442652f8e1b8a8b94278cb57eafd) - # * update GFP flags name = "Configuration for Linux kernel 5.0 or later" release = (5, 0, "") @@ -2240,7 +2237,6 @@ class KernelConfig_5_1(KernelConfig_5_0): class KernelConfig_5_8(KernelConfig_5_1): # Supported changes: # * "mm/writeback: discard NR_UNSTABLE_NFS, use NR_WRITEBACK instead" (8d92890bd6b8502d6aee4b37430ae6444ade7a8c) - # * update GFP flags name = "Configuration for Linux kernel 5.8 or later" release = (5, 8, "") @@ -2538,7 +2534,35 @@ class KernelConfig_6_0(KernelConfig_5_18): } +class KernelConfig_6_1(KernelConfig_5_18): + # Supported changes: + # * "mm: add NR_SECONDARY_PAGETABLE to count secondary page table uses." (ebc97a52b5d6) + + name = "Configuration for Linux kernel 6.1 or later" + release = (6, 1, "") + + EXTRACT_PATTERN_OVERLAY_61 = { + "Mem-Info (part 2)": ( + r"^ slab_reclaimable:(?P\d+) slab_unreclaimable:(?P\d+)" + r"(?:\n)" + r"^ mapped:(?P\d+) shmem:(?P\d+) pagetables:(?P\d+)" + r"(?:\n)" + r"^ sec_pagetables:(?P\d+) bounce:(?P\d+)" + r"(?:\n)" + r"^ kernel_misc_reclaimable:(?P\d+)" + r"(?:\n)" + r"^ free:(?P\d+) free_pcp:(?P\d+) free_cma:(?P\d+)", + True, + ), + } + + def __init__(self): + super().__init__() + self.EXTRACT_PATTERN.update(self.EXTRACT_PATTERN_OVERLAY_61) + + AllKernelConfigs = [ + KernelConfig_6_1(), KernelConfig_6_0(), KernelConfig_5_18(), KernelConfig_5_14(), @@ -2638,7 +2662,7 @@ class OOMEntity: @see: _rsyslog_unescape_lf() """ - pattern = r"^\s+ (active_file|unevictable|slab_reclaimable|mapped|free):.+$" + pattern = r"^\s+ (active_file|unevictable|slab_reclaimable|mapped|sec_pagetables|kernel_misc_reclaimable|free):.+$" rec = re.compile(pattern) add_cols = "" diff --git a/test.py b/test.py index c25a70c..0769156 100755 --- a/test.py +++ b/test.py @@ -776,7 +776,7 @@ Hardware name: HP ProLiant DL385 G7, BIOS A18 12/08/2012 "CPU: 4 PID: 29481 Comm: sed Not tainted 5.23.0 #1", ), ( - OOMAnalyser.KernelConfig_6_0(), + OOMAnalyser.KernelConfig_6_1(), "CPU: 4 PID: 29481 Comm: sed Not tainted 6.12.0 #1", ), (