diff --git a/OOMAnalyser.html b/OOMAnalyser.html
index 03c1325..3e97fac 100644
--- a/OOMAnalyser.html
+++ b/OOMAnalyser.html
@@ -919,6 +919,18 @@ window.onerror = function (msg, url, lineNo, columnNo, errorObj) {
+
+
+
+ Memory Watermarks |
+
+
+ |
+
+
+ |
+
+
Process Table |
@@ -1074,6 +1086,7 @@ window.onerror = function (msg, url, lineNo, columnNo, errorObj) {
Add analysis why the memory request failed
Add check for heavy memory fragmentation
Summary of the analysis revised
+ Show memory watermarks together will all details
...
diff --git a/OOMAnalyser.py b/OOMAnalyser.py
index 11e853c..95973d0 100644
--- a/OOMAnalyser.py
+++ b/OOMAnalyser.py
@@ -304,6 +304,10 @@ class BaseKernelConfig:
r"(?P(^Node \d+ ((DMA|DMA32|Normal):|(hugepages)).+(\n|$))+)",
False,
),
+ "Memory watermarks": (
+ r"(?P(^(Node \d+ (DMA|DMA32|Normal) free:|lowmem_reserve\[\]:).+(\n|$))+)",
+ False,
+ ),
"Page cache": (
r"^(?P\d+) total pagecache pages.*$",
True,
diff --git a/test.py b/test.py
index f9c112e..d589577 100755
--- a/test.py
+++ b/test.py
@@ -294,7 +294,19 @@ class TestInBrowser(TestBase):
self.assertEqual(
mem_node_info.text[-80:],
"Node 1 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB",
- "Unexpected memory chunks",
+ "Unexpected memory information about hugepages",
+ )
+
+ mem_watermarks = self.driver.find_element(By.CLASS_NAME, "mem_watermarks")
+ self.assertEqual(
+ mem_watermarks.text[:51],
+ "Node 0 DMA free:15872kB min:40kB low:48kB high:60kB",
+ "Unexpected memory watermarks",
+ )
+ self.assertEqual(
+ mem_watermarks.text[-25:],
+ "lowmem_reserve[]: 0 0 0 0",
+ "Unexpected lowmem_reserve values",
)
head = self.driver.find_element(By.ID, "pstable_header")
@@ -374,7 +386,19 @@ class TestInBrowser(TestBase):
self.assertEqual(
mem_node_info.text[-80:],
"Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB",
- "Unexpected memory chunks",
+ "Unexpected memory information about hugepages",
+ )
+
+ mem_watermarks = self.driver.find_element(By.CLASS_NAME, "mem_watermarks")
+ self.assertEqual(
+ mem_watermarks.text[:54],
+ "Node 0 DMA free:15036kB min:352kB low:440kB high:528kB",
+ "Unexpected memory watermarks",
+ )
+ self.assertEqual(
+ mem_watermarks.text[-27:],
+ "lowmem_reserve[]: 0 0 0 0 0",
+ "Unexpected lowmem_reserve values",
)
head = self.driver.find_element(By.ID, "pstable_header")