From 5a07333894bd9de77d5874b16d16129ef5847956 Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 25 Jan 2021 15:30:03 +0000 Subject: [PATCH 01/20] src: simplify kernel transparent_hugepage enabled flag check by removing while loop There was an unexpected and hard-to-spot issue here: the /sys/kernel/mm/transparent_hugepage/enabled file contains three entries, and the std::ifstream reader was reading two values on each loop iteration, resulting in incorrect behaviour. --- src/large_pages/node_large_page.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index a4b109d1b0ef69..bb467b6902b459 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -268,7 +268,7 @@ bool IsTransparentHugePagesEnabled() { std::string always, madvise; if (ifs.is_open()) { - while (ifs >> always >> madvise) {} + ifs >> always >> madvise; } ifs.close(); From 72082b9956c6b360cf2b27107a36ba307cf3c2b3 Mon Sep 17 00:00:00 2001 From: James Addison Date: Tue, 26 Jan 2021 15:11:00 +0000 Subject: [PATCH 02/20] src: inspect kernel transparent_hugepage flag values without assuming their length or ordering --- src/large_pages/node_large_page.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index bb467b6902b459..3c984322d4fa57 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -266,13 +266,16 @@ bool IsTransparentHugePagesEnabled() { return false; } - std::string always, madvise; + bool enabled; if (ifs.is_open()) { - ifs >> always >> madvise; + std::string token; + while (ifs >> token) { + enabled = enabled || token == "[always]" || token == "[madvise]"; + } } ifs.close(); - return always == "[always]" || madvise == "[madvise]"; + return enabled; } #elif defined(__FreeBSD__) bool IsSuperPagesEnabled() { From 53648a00b20d7d39042e1695aab0313e7dbf89b7 Mon Sep 17 00:00:00 2001 From: James Addison Date: Tue, 26 Jan 2021 16:25:26 +0000 Subject: [PATCH 03/20] src: add an explicit default value for the 'enabled' bool variable Co-authored-by: Darshan Sen --- src/large_pages/node_large_page.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index 3c984322d4fa57..e72c55310f2db3 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -266,7 +266,7 @@ bool IsTransparentHugePagesEnabled() { return false; } - bool enabled; + bool enabled = false; if (ifs.is_open()) { std::string token; while (ifs >> token) { From a7fe1932a49685bd388917ec3e7c68325d123fb3 Mon Sep 17 00:00:00 2001 From: James Addison Date: Tue, 26 Jan 2021 16:24:29 +0000 Subject: [PATCH 04/20] src: extract GetTransparentHugePagesConfiguration function to read system huge tables configuration on Linux-based systems --- src/large_pages/node_large_page.cc | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index e72c55310f2db3..789fbc6b93e1f1 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -257,24 +257,30 @@ struct text_region FindNodeTextRegion() { } #if defined(__linux__) -bool IsTransparentHugePagesEnabled() { - std::ifstream ifs; +std::istream *GetTransparentHugePagesConfiguration() { + std::ifstream *ifs = new std::ifstream(); - ifs.open("/sys/kernel/mm/transparent_hugepage/enabled"); - if (!ifs) { + ifs->open("/sys/kernel/mm/transparent_hugepage/enabled"); + if (!*ifs) { PrintWarning("could not open /sys/kernel/mm/transparent_hugepage/enabled"); + return nullptr; + } + + return ifs; +} + +bool IsTransparentHugePagesEnabled() { + std::istream *configuration = GetTransparentHugePagesConfiguration(); + if (configuration == nullptr) { return false; } bool enabled = false; - if (ifs.is_open()) { - std::string token; - while (ifs >> token) { - enabled = enabled || token == "[always]" || token == "[madvise]"; - } + std::string token; + while (*configuration >> token) { + enabled = enabled || token == "[always]" || token == "[madvise]"; } - ifs.close(); - + delete configuration; return enabled; } #elif defined(__FreeBSD__) From 72dd2f3c8336d49333f252f73d20e9ac732838bc Mon Sep 17 00:00:00 2001 From: James Addison Date: Tue, 26 Jan 2021 16:36:57 +0000 Subject: [PATCH 05/20] src: extract IsTransparentHugePagesEnabledViaConfiguration function to determine huge tables enabled state based on the contents of a configuration stream --- src/large_pages/node_large_page.cc | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index 789fbc6b93e1f1..75e3640579e152 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -269,17 +269,21 @@ std::istream *GetTransparentHugePagesConfiguration() { return ifs; } -bool IsTransparentHugePagesEnabled() { - std::istream *configuration = GetTransparentHugePagesConfiguration(); - if (configuration == nullptr) { - return false; - } - +bool IsTransparentHugePagesEnabledViaConfiguration(std::istream *configuration) { bool enabled = false; std::string token; while (*configuration >> token) { enabled = enabled || token == "[always]" || token == "[madvise]"; } + return enabled; +} + +bool IsTransparentHugePagesEnabled() { + std::istream *configuration = GetTransparentHugePagesConfiguration(); + if (configuration == nullptr) { + return false; + } + bool enabled = IsTransparentHugePagesEnabledViaConfiguration(configuration); delete configuration; return enabled; } From 519f21264b2430956da866d4cf20bd9f20c78ce4 Mon Sep 17 00:00:00 2001 From: James Addison Date: Tue, 26 Jan 2021 16:38:53 +0000 Subject: [PATCH 06/20] src: refactor: return early when we discover that huge tables is enabled in the configuration stream --- src/large_pages/node_large_page.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index 75e3640579e152..d809217a17d18f 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -270,12 +270,11 @@ std::istream *GetTransparentHugePagesConfiguration() { } bool IsTransparentHugePagesEnabledViaConfiguration(std::istream *configuration) { - bool enabled = false; std::string token; while (*configuration >> token) { - enabled = enabled || token == "[always]" || token == "[madvise]"; + if (token == "[always]" || token == "[madvise]") return true; } - return enabled; + return false; } bool IsTransparentHugePagesEnabled() { From 21ed800d050e1296cd495cb065bd379fe3e54324 Mon Sep 17 00:00:00 2001 From: James Addison Date: Tue, 26 Jan 2021 18:47:27 +0000 Subject: [PATCH 07/20] src: apply lint fix: use left-leaning pointers --- src/large_pages/node_large_page.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index d809217a17d18f..a624356823a95b 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -257,8 +257,8 @@ struct text_region FindNodeTextRegion() { } #if defined(__linux__) -std::istream *GetTransparentHugePagesConfiguration() { - std::ifstream *ifs = new std::ifstream(); +std::istream* GetTransparentHugePagesConfiguration() { + std::ifstream* ifs = new std::ifstream(); ifs->open("/sys/kernel/mm/transparent_hugepage/enabled"); if (!*ifs) { @@ -269,7 +269,7 @@ std::istream *GetTransparentHugePagesConfiguration() { return ifs; } -bool IsTransparentHugePagesEnabledViaConfiguration(std::istream *configuration) { +bool IsTransparentHugePagesEnabledViaConfiguration(std::istream* configuration) { std::string token; while (*configuration >> token) { if (token == "[always]" || token == "[madvise]") return true; @@ -278,7 +278,7 @@ bool IsTransparentHugePagesEnabledViaConfiguration(std::istream *configuration) } bool IsTransparentHugePagesEnabled() { - std::istream *configuration = GetTransparentHugePagesConfiguration(); + std::istream* configuration = GetTransparentHugePagesConfiguration(); if (configuration == nullptr) { return false; } From 03922c01e00676fe480c33b75476488b847db6a4 Mon Sep 17 00:00:00 2001 From: James Addison Date: Tue, 26 Jan 2021 18:48:25 +0000 Subject: [PATCH 08/20] src: lint fixup: rename function to fit within column width constraint --- src/large_pages/node_large_page.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index a624356823a95b..550ab70c2119eb 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -269,7 +269,7 @@ std::istream* GetTransparentHugePagesConfiguration() { return ifs; } -bool IsTransparentHugePagesEnabledViaConfiguration(std::istream* configuration) { +bool IsTransparentHugePagesConfigured(std::istream* configuration) { std::string token; while (*configuration >> token) { if (token == "[always]" || token == "[madvise]") return true; @@ -282,7 +282,7 @@ bool IsTransparentHugePagesEnabled() { if (configuration == nullptr) { return false; } - bool enabled = IsTransparentHugePagesEnabledViaConfiguration(configuration); + bool enabled = IsTransparentHugePagesConfigured(configuration); delete configuration; return enabled; } From 434e8b8bba8554d89867fb7a54a035f99ed1f58a Mon Sep 17 00:00:00 2001 From: James Addison Date: Tue, 26 Jan 2021 20:43:00 +0000 Subject: [PATCH 09/20] src: use single-line return statement for null-pointer condition --- src/large_pages/node_large_page.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index 550ab70c2119eb..c7e5541ac6a1a3 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -279,9 +279,7 @@ bool IsTransparentHugePagesConfigured(std::istream* configuration) { bool IsTransparentHugePagesEnabled() { std::istream* configuration = GetTransparentHugePagesConfiguration(); - if (configuration == nullptr) { - return false; - } + if (configuration == nullptr) return false; bool enabled = IsTransparentHugePagesConfigured(configuration); delete configuration; return enabled; From 49b35e9a09cfd495c5cfc5f295ca9091b659fbe8 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 27 Jan 2021 14:33:47 +0000 Subject: [PATCH 10/20] Revert "src: use single-line return statement for null-pointer condition" This reverts commit 434e8b8bba8554d89867fb7a54a035f99ed1f58a. --- src/large_pages/node_large_page.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index c7e5541ac6a1a3..550ab70c2119eb 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -279,7 +279,9 @@ bool IsTransparentHugePagesConfigured(std::istream* configuration) { bool IsTransparentHugePagesEnabled() { std::istream* configuration = GetTransparentHugePagesConfiguration(); - if (configuration == nullptr) return false; + if (configuration == nullptr) { + return false; + } bool enabled = IsTransparentHugePagesConfigured(configuration); delete configuration; return enabled; From 24d49431f6eb680fcdaef07b7c98b905dad6edf5 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 27 Jan 2021 14:33:53 +0000 Subject: [PATCH 11/20] Revert "src: lint fixup: rename function to fit within column width constraint" This reverts commit 03922c01e00676fe480c33b75476488b847db6a4. --- src/large_pages/node_large_page.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index 550ab70c2119eb..a624356823a95b 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -269,7 +269,7 @@ std::istream* GetTransparentHugePagesConfiguration() { return ifs; } -bool IsTransparentHugePagesConfigured(std::istream* configuration) { +bool IsTransparentHugePagesEnabledViaConfiguration(std::istream* configuration) { std::string token; while (*configuration >> token) { if (token == "[always]" || token == "[madvise]") return true; @@ -282,7 +282,7 @@ bool IsTransparentHugePagesEnabled() { if (configuration == nullptr) { return false; } - bool enabled = IsTransparentHugePagesConfigured(configuration); + bool enabled = IsTransparentHugePagesEnabledViaConfiguration(configuration); delete configuration; return enabled; } From 250e0138cbf4f097e5524cb450df3e257fceef10 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 27 Jan 2021 14:34:09 +0000 Subject: [PATCH 12/20] Revert "src: apply lint fix: use left-leaning pointers" This reverts commit 21ed800d050e1296cd495cb065bd379fe3e54324. --- src/large_pages/node_large_page.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index a624356823a95b..d809217a17d18f 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -257,8 +257,8 @@ struct text_region FindNodeTextRegion() { } #if defined(__linux__) -std::istream* GetTransparentHugePagesConfiguration() { - std::ifstream* ifs = new std::ifstream(); +std::istream *GetTransparentHugePagesConfiguration() { + std::ifstream *ifs = new std::ifstream(); ifs->open("/sys/kernel/mm/transparent_hugepage/enabled"); if (!*ifs) { @@ -269,7 +269,7 @@ std::istream* GetTransparentHugePagesConfiguration() { return ifs; } -bool IsTransparentHugePagesEnabledViaConfiguration(std::istream* configuration) { +bool IsTransparentHugePagesEnabledViaConfiguration(std::istream *configuration) { std::string token; while (*configuration >> token) { if (token == "[always]" || token == "[madvise]") return true; @@ -278,7 +278,7 @@ bool IsTransparentHugePagesEnabledViaConfiguration(std::istream* configuration) } bool IsTransparentHugePagesEnabled() { - std::istream* configuration = GetTransparentHugePagesConfiguration(); + std::istream *configuration = GetTransparentHugePagesConfiguration(); if (configuration == nullptr) { return false; } From 53d148d6a39e47273fc23278eb1a8f507748174e Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 27 Jan 2021 14:34:37 +0000 Subject: [PATCH 13/20] Revert "src: refactor: return early when we discover that huge tables is enabled in the configuration stream" This reverts commit 519f21264b2430956da866d4cf20bd9f20c78ce4. --- src/large_pages/node_large_page.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index d809217a17d18f..75e3640579e152 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -270,11 +270,12 @@ std::istream *GetTransparentHugePagesConfiguration() { } bool IsTransparentHugePagesEnabledViaConfiguration(std::istream *configuration) { + bool enabled = false; std::string token; while (*configuration >> token) { - if (token == "[always]" || token == "[madvise]") return true; + enabled = enabled || token == "[always]" || token == "[madvise]"; } - return false; + return enabled; } bool IsTransparentHugePagesEnabled() { From 759b8095774af2b673562afdb9d7e1293c79fd89 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 27 Jan 2021 14:34:50 +0000 Subject: [PATCH 14/20] Revert "src: extract IsTransparentHugePagesEnabledViaConfiguration function to determine huge tables enabled state based on the contents of a configuration stream" This reverts commit 72dd2f3c8336d49333f252f73d20e9ac732838bc. --- src/large_pages/node_large_page.cc | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index 75e3640579e152..789fbc6b93e1f1 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -269,21 +269,17 @@ std::istream *GetTransparentHugePagesConfiguration() { return ifs; } -bool IsTransparentHugePagesEnabledViaConfiguration(std::istream *configuration) { - bool enabled = false; - std::string token; - while (*configuration >> token) { - enabled = enabled || token == "[always]" || token == "[madvise]"; - } - return enabled; -} - bool IsTransparentHugePagesEnabled() { std::istream *configuration = GetTransparentHugePagesConfiguration(); if (configuration == nullptr) { return false; } - bool enabled = IsTransparentHugePagesEnabledViaConfiguration(configuration); + + bool enabled = false; + std::string token; + while (*configuration >> token) { + enabled = enabled || token == "[always]" || token == "[madvise]"; + } delete configuration; return enabled; } From 37bf5f96f1147aaf634ef496d6e9b70a877f3d0d Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 27 Jan 2021 14:35:09 +0000 Subject: [PATCH 15/20] Revert "src: extract GetTransparentHugePagesConfiguration function to read system huge tables configuration on Linux-based systems" This reverts commit a7fe1932a49685bd388917ec3e7c68325d123fb3. --- src/large_pages/node_large_page.cc | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index 789fbc6b93e1f1..e72c55310f2db3 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -257,30 +257,24 @@ struct text_region FindNodeTextRegion() { } #if defined(__linux__) -std::istream *GetTransparentHugePagesConfiguration() { - std::ifstream *ifs = new std::ifstream(); +bool IsTransparentHugePagesEnabled() { + std::ifstream ifs; - ifs->open("/sys/kernel/mm/transparent_hugepage/enabled"); - if (!*ifs) { + ifs.open("/sys/kernel/mm/transparent_hugepage/enabled"); + if (!ifs) { PrintWarning("could not open /sys/kernel/mm/transparent_hugepage/enabled"); - return nullptr; - } - - return ifs; -} - -bool IsTransparentHugePagesEnabled() { - std::istream *configuration = GetTransparentHugePagesConfiguration(); - if (configuration == nullptr) { return false; } bool enabled = false; - std::string token; - while (*configuration >> token) { - enabled = enabled || token == "[always]" || token == "[madvise]"; + if (ifs.is_open()) { + std::string token; + while (ifs >> token) { + enabled = enabled || token == "[always]" || token == "[madvise]"; + } } - delete configuration; + ifs.close(); + return enabled; } #elif defined(__FreeBSD__) From e299a652d83ad8a859ab0f29f53050293386acf5 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 27 Jan 2021 14:35:55 +0000 Subject: [PATCH 16/20] Revert "src: add an explicit default value for the 'enabled' bool variable" This reverts commit 53648a00b20d7d39042e1695aab0313e7dbf89b7. --- src/large_pages/node_large_page.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index e72c55310f2db3..3c984322d4fa57 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -266,7 +266,7 @@ bool IsTransparentHugePagesEnabled() { return false; } - bool enabled = false; + bool enabled; if (ifs.is_open()) { std::string token; while (ifs >> token) { From d00fce6676cd63ef28dd0544001213c56e855d51 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 27 Jan 2021 14:36:12 +0000 Subject: [PATCH 17/20] Revert "src: inspect kernel transparent_hugepage flag values without assuming their length or ordering" This reverts commit 72082b9956c6b360cf2b27107a36ba307cf3c2b3. --- src/large_pages/node_large_page.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index 3c984322d4fa57..bb467b6902b459 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -266,16 +266,13 @@ bool IsTransparentHugePagesEnabled() { return false; } - bool enabled; + std::string always, madvise; if (ifs.is_open()) { - std::string token; - while (ifs >> token) { - enabled = enabled || token == "[always]" || token == "[madvise]"; - } + ifs >> always >> madvise; } ifs.close(); - return enabled; + return always == "[always]" || madvise == "[madvise]"; } #elif defined(__FreeBSD__) bool IsSuperPagesEnabled() { From e7f1cf0ab3e83729edb0a78b38fdecd06a58cea8 Mon Sep 17 00:00:00 2001 From: James Addison Date: Wed, 27 Jan 2021 14:38:35 +0000 Subject: [PATCH 18/20] src: add Linux huge memory enabled system flag file format reference --- src/large_pages/node_large_page.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index bb467b6902b459..38594d5fecf857 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -260,6 +260,8 @@ struct text_region FindNodeTextRegion() { bool IsTransparentHugePagesEnabled() { std::ifstream ifs; + // File format reference: + // https://github.com/torvalds/linux/blob/13391c60da3308ed9980de0168f74cce6c62ac1d/mm/huge_memory.c#L162-L177 ifs.open("/sys/kernel/mm/transparent_hugepage/enabled"); if (!ifs) { PrintWarning("could not open /sys/kernel/mm/transparent_hugepage/enabled"); From 572b34aaf1d1c52df7b4087de33b8b37b73af75c Mon Sep 17 00:00:00 2001 From: James Addison Date: Thu, 28 Jan 2021 18:52:00 +0000 Subject: [PATCH 19/20] src: update documentation reference to use the source of truth --- src/large_pages/node_large_page.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index 38594d5fecf857..0ce6d321bafe1c 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -261,7 +261,7 @@ bool IsTransparentHugePagesEnabled() { std::ifstream ifs; // File format reference: - // https://github.com/torvalds/linux/blob/13391c60da3308ed9980de0168f74cce6c62ac1d/mm/huge_memory.c#L162-L177 + // https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/mm/huge_memory.c?id=13391c60da3308ed9980de0168f74cce6c62ac1d#n162 ifs.open("/sys/kernel/mm/transparent_hugepage/enabled"); if (!ifs) { PrintWarning("could not open /sys/kernel/mm/transparent_hugepage/enabled"); From 239589b951444a8335fea81cf2434690a5c7c9c3 Mon Sep 17 00:00:00 2001 From: James Addison Date: Thu, 28 Jan 2021 18:52:40 +0000 Subject: [PATCH 20/20] src: nit: update documentation reference to link to the line that the relevant function is declared on --- src/large_pages/node_large_page.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/large_pages/node_large_page.cc b/src/large_pages/node_large_page.cc index 0ce6d321bafe1c..22810ef08fb878 100644 --- a/src/large_pages/node_large_page.cc +++ b/src/large_pages/node_large_page.cc @@ -261,7 +261,7 @@ bool IsTransparentHugePagesEnabled() { std::ifstream ifs; // File format reference: - // https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/mm/huge_memory.c?id=13391c60da3308ed9980de0168f74cce6c62ac1d#n162 + // https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/mm/huge_memory.c?id=13391c60da3308ed9980de0168f74cce6c62ac1d#n163 ifs.open("/sys/kernel/mm/transparent_hugepage/enabled"); if (!ifs) { PrintWarning("could not open /sys/kernel/mm/transparent_hugepage/enabled");