All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20170119112336.GN30786@dhcp22.suse.cz>

diff --git a/a/1.txt b/N1/1.txt
index 6dc8c77..ed48097 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -53,70 +53,4 @@ usecase rather than theoretical scenarios.
 
 So what do you think about the following? Tetsuo, would you be willing
 to run this patch through your torture testing please?
----
->From 47cba23b5b50260b533d7ad57a4c9e6a800d9b20 Mon Sep 17 00:00:00 2001
-From: Michal Hocko <mhocko@suse.com>
-Date: Thu, 19 Jan 2017 12:11:56 +0100
-Subject: [PATCH] mm, vmscan: do not loop on too_many_isolated for ever
-
-Tetsuo Handa has reported [1] that direct reclaimers might get stuck in
-too_many_isolated loop basically for ever because the last few pages on
-the LRU lists are isolated by the kswapd which is stuck on fs locks when
-doing the pageout. This in turn means that there is nobody to actually
-trigger the oom killer and the system is basically unusable.
-
-too_many_isolated has been introduced by 35cd78156c49 ("vmscan: throttle
-direct reclaim when too many pages are isolated already") to prevent
-from pre-mature oom killer invocations because back then no reclaim
-progress could indeed trigger the OOM killer too early. But since the
-oom detection rework 0a0337e0d1d1 ("mm, oom: rework oom detection")
-the allocation/reclaim retry loop considers all the reclaimable pages
-and throttles the allocation at that layer so we can loosen the direct
-reclaim throttling.
-
-Make shrink_inactive_list loop over too_many_isolated bounded and returns
-immediately when the situation hasn't resolved after the first sleep.
-Replace congestion_wait by a simple schedule_timeout_interruptible because
-we are not really waiting on the IO congestion in this path.
-
-Please note that this patch can theoretically cause the OOM killer to
-trigger earlier while there are many pages isolated for the reclaim
-which makes progress only very slowly. This would be obvious from the oom
-report as the number of isolated pages are printed there. If we ever hit
-this should_reclaim_retry should consider those numbers in the evaluation
-in one way or another.
-
-[1] http://lkml.kernel.org/r/201602092349.ACG81273.OSVtMJQHLOFOFF@I-love.SAKURA.ne.jp
-Signed-off-by: Michal Hocko <mhocko@suse.com>
----
- mm/vmscan.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index a60066d4521b..d07380ba1f9e 100644
---- a/mm/vmscan.c
-+++ b/mm/vmscan.c
-@@ -1718,9 +1718,15 @@ shrink_inactive_list(unsigned long nr_to_scan, struct lruvec *lruvec,
- 	int file = is_file_lru(lru);
- 	struct pglist_data *pgdat = lruvec_pgdat(lruvec);
- 	struct zone_reclaim_stat *reclaim_stat = &lruvec->reclaim_stat;
-+	bool stalled = false;
- 
- 	while (unlikely(too_many_isolated(pgdat, file, sc))) {
--		congestion_wait(BLK_RW_ASYNC, HZ/10);
-+		if (stalled)
-+			return 0;
-+
-+		/* wait a bit for the reclaimer. */
-+		schedule_timeout_interruptible(HZ/10);
-+		stalled = true;
- 
- 		/* We are about to die and free our memory. Return now. */
- 		if (fatal_signal_pending(current))
--- 
-2.11.0
-
-
--- 
-Michal Hocko
-SUSE Labs
\ No newline at end of file
+---
\ No newline at end of file
diff --git a/a/content_digest b/N1/content_digest
index ce68ead..191d2db 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -105,73 +105,7 @@
   "\n",
   "So what do you think about the following? Tetsuo, would you be willing\n",
   "to run this patch through your torture testing please?\n",
-  "---\n",
-  ">From 47cba23b5b50260b533d7ad57a4c9e6a800d9b20 Mon Sep 17 00:00:00 2001\n",
-  "From: Michal Hocko <mhocko\@suse.com>\n",
-  "Date: Thu, 19 Jan 2017 12:11:56 +0100\n",
-  "Subject: [PATCH] mm, vmscan: do not loop on too_many_isolated for ever\n",
-  "\n",
-  "Tetsuo Handa has reported [1] that direct reclaimers might get stuck in\n",
-  "too_many_isolated loop basically for ever because the last few pages on\n",
-  "the LRU lists are isolated by the kswapd which is stuck on fs locks when\n",
-  "doing the pageout. This in turn means that there is nobody to actually\n",
-  "trigger the oom killer and the system is basically unusable.\n",
-  "\n",
-  "too_many_isolated has been introduced by 35cd78156c49 (\"vmscan: throttle\n",
-  "direct reclaim when too many pages are isolated already\") to prevent\n",
-  "from pre-mature oom killer invocations because back then no reclaim\n",
-  "progress could indeed trigger the OOM killer too early. But since the\n",
-  "oom detection rework 0a0337e0d1d1 (\"mm, oom: rework oom detection\")\n",
-  "the allocation/reclaim retry loop considers all the reclaimable pages\n",
-  "and throttles the allocation at that layer so we can loosen the direct\n",
-  "reclaim throttling.\n",
-  "\n",
-  "Make shrink_inactive_list loop over too_many_isolated bounded and returns\n",
-  "immediately when the situation hasn't resolved after the first sleep.\n",
-  "Replace congestion_wait by a simple schedule_timeout_interruptible because\n",
-  "we are not really waiting on the IO congestion in this path.\n",
-  "\n",
-  "Please note that this patch can theoretically cause the OOM killer to\n",
-  "trigger earlier while there are many pages isolated for the reclaim\n",
-  "which makes progress only very slowly. This would be obvious from the oom\n",
-  "report as the number of isolated pages are printed there. If we ever hit\n",
-  "this should_reclaim_retry should consider those numbers in the evaluation\n",
-  "in one way or another.\n",
-  "\n",
-  "[1] http://lkml.kernel.org/r/201602092349.ACG81273.OSVtMJQHLOFOFF\@I-love.SAKURA.ne.jp\n",
-  "Signed-off-by: Michal Hocko <mhocko\@suse.com>\n",
-  "---\n",
-  " mm/vmscan.c | 8 +++++++-\n",
-  " 1 file changed, 7 insertions(+), 1 deletion(-)\n",
-  "\n",
-  "diff --git a/mm/vmscan.c b/mm/vmscan.c\n",
-  "index a60066d4521b..d07380ba1f9e 100644\n",
-  "--- a/mm/vmscan.c\n",
-  "+++ b/mm/vmscan.c\n",
-  "\@\@ -1718,9 +1718,15 \@\@ shrink_inactive_list(unsigned long nr_to_scan, struct lruvec *lruvec,\n",
-  " \tint file = is_file_lru(lru);\n",
-  " \tstruct pglist_data *pgdat = lruvec_pgdat(lruvec);\n",
-  " \tstruct zone_reclaim_stat *reclaim_stat = &lruvec->reclaim_stat;\n",
-  "+\tbool stalled = false;\n",
-  " \n",
-  " \twhile (unlikely(too_many_isolated(pgdat, file, sc))) {\n",
-  "-\t\tcongestion_wait(BLK_RW_ASYNC, HZ/10);\n",
-  "+\t\tif (stalled)\n",
-  "+\t\t\treturn 0;\n",
-  "+\n",
-  "+\t\t/* wait a bit for the reclaimer. */\n",
-  "+\t\tschedule_timeout_interruptible(HZ/10);\n",
-  "+\t\tstalled = true;\n",
-  " \n",
-  " \t\t/* We are about to die and free our memory. Return now. */\n",
-  " \t\tif (fatal_signal_pending(current))\n",
-  "-- \n",
-  "2.11.0\n",
-  "\n",
-  "\n",
-  "-- \n",
-  "Michal Hocko\n",
-  "SUSE Labs"
+  "---"
 ]
 
-99fff709673c5756b13be31a4ccac01def397cbd71da3eded48d5e542b1554b8
+4563db974f386d6088785f4e0e240910e8a31ac53016c503aa162766235f8df6

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.