All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mm: swap: Use swapfiles in priority order
@ 2014-02-13 10:42 ` Mel Gorman
  0 siblings, 0 replies; 94+ messages in thread
From: Mel Gorman @ 2014-02-13 10:42 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Hugh Dickins, Michal Hocko, Linux-MM, LKML

According to the swapon documentation

	Swap  pages  are  allocated  from  areas  in priority order,
	highest priority first.  For areas with different priorities, a
	higher-priority area is exhausted before using a lower-priority area.

A user reported that the reality is different. When multiple swap files
are enabled and a memory consumer started, the swap files are consumed in
pairs after the highest priority file is exhausted. Early in the lifetime
of the test, swapfile consumptions looks like

Filename                                Type            Size    Used    Priority
/testswap1                              file            100004  100004  8
/testswap2                              file            100004  23764   7
/testswap3                              file            100004  23764   6
/testswap4                              file            100004  0       5
/testswap5                              file            100004  0       4
/testswap6                              file            100004  0       3
/testswap7                              file            100004  0       2
/testswap8                              file            100004  0       1

This patch fixes the swap_list search in get_swap_page to use the swap files
in the correct order. When applied the swap file consumptions looks like

Filename				Type		Size	Used	Priority
/testswap1                              file		100004	100004	8
/testswap2                              file		100004	100004	7
/testswap3                              file		100004	29372	6
/testswap4                              file		100004	0	5
/testswap5                              file		100004	0	4
/testswap6                              file		100004	0	3
/testswap7                              file		100004	0	2
/testswap8                              file		100004	0	1

Signed-off-by: Mel Gorman <mgorman@suse.de>
---
 mm/swapfile.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/swapfile.c b/mm/swapfile.c
index 4a7f7e6..6d0ac2b 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -651,7 +651,7 @@ swp_entry_t get_swap_page(void)
 		goto noswap;
 	atomic_long_dec(&nr_swap_pages);
 
-	for (type = swap_list.next; type >= 0 && wrapped < 2; type = next) {
+	for (type = swap_list.head; type >= 0 && wrapped < 2; type = next) {
 		hp_index = atomic_xchg(&highest_priority_index, -1);
 		/*
 		 * highest_priority_index records current highest priority swap

^ permalink raw reply related	[flat|nested] 94+ messages in thread

end of thread, other threads:[~2014-05-13 10:34 UTC | newest]

Thread overview: 94+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-02-13 10:42 [PATCH] mm: swap: Use swapfiles in priority order Mel Gorman
2014-02-13 10:42 ` Mel Gorman
2014-02-13 15:58 ` Weijie Yang
2014-02-13 15:58   ` Weijie Yang
2014-02-14 10:17   ` Mel Gorman
2014-02-14 10:17     ` Mel Gorman
2014-02-14 13:33     ` Weijie Yang
2014-02-14 13:33       ` Weijie Yang
2014-02-14 13:10   ` Christian Ehrhardt
2014-02-16  2:59     ` Weijie Yang
2014-02-24  8:28       ` Hugh Dickins
2014-02-24  8:28         ` Hugh Dickins
2014-04-12 21:00         ` [PATCH 0/2] swap: simplify/fix swap_list handling and iteration Dan Streetman
2014-04-12 21:00           ` Dan Streetman
2014-04-12 21:00           ` [PATCH 1/2] swap: change swap_info singly-linked list to list_head Dan Streetman
2014-04-12 21:00             ` Dan Streetman
2014-04-23 10:34             ` Mel Gorman
2014-04-23 10:34               ` Mel Gorman
2014-04-24  0:17               ` Shaohua Li
2014-04-24  0:17                 ` Shaohua Li
2014-04-24  8:30                 ` Mel Gorman
2014-04-24  8:30                   ` Mel Gorman
2014-04-24 18:48               ` Dan Streetman
2014-04-24 18:48                 ` Dan Streetman
2014-04-25  4:15                 ` Weijie Yang
2014-04-25  4:15                   ` Weijie Yang
2014-05-02 20:00                   ` Dan Streetman
2014-05-02 20:00                   ` Dan Streetman
2014-05-02 20:00                     ` Dan Streetman
2014-05-04  9:39                     ` Bob Liu
2014-05-04  9:39                     ` Bob Liu
2014-05-04  9:39                       ` Bob Liu
2014-05-04 20:16                       ` Dan Streetman
2014-05-04 20:16                       ` Dan Streetman
2014-05-04 20:16                         ` Dan Streetman
2014-04-25  8:38                 ` Mel Gorman
2014-04-25  8:38                   ` Mel Gorman
2014-04-12 21:00           ` [PATCH 2/2] swap: use separate priority list for available swap_infos Dan Streetman
2014-04-12 21:00             ` Dan Streetman
2014-04-23 13:14             ` Mel Gorman
2014-04-23 13:14               ` Mel Gorman
2014-04-24 17:52               ` Dan Streetman
2014-04-24 17:52                 ` Dan Streetman
2014-04-25  8:49                 ` Mel Gorman
2014-04-25  8:49                   ` Mel Gorman
2014-05-02 19:02           ` [PATCHv2 0/4] swap: simplify/fix swap_list handling and iteration Dan Streetman
2014-05-02 19:02             ` Dan Streetman
2014-05-02 19:02             ` [PATCHv2 1/4] swap: change swap_info singly-linked list to list_head Dan Streetman
2014-05-02 19:02               ` Dan Streetman
2014-05-02 19:02             ` [PATCH 2/4] plist: add helper functions Dan Streetman
2014-05-02 19:02               ` Dan Streetman
2014-05-12 10:35               ` Mel Gorman
2014-05-12 10:35                 ` Mel Gorman
2014-05-02 19:02             ` [PATCH 3/4] plist: add plist_rotate Dan Streetman
2014-05-02 19:02               ` Dan Streetman
2014-05-06  2:18               ` Steven Rostedt
2014-05-06  2:18                 ` Steven Rostedt
2014-05-06 20:12                 ` Dan Streetman
2014-05-06 20:12                   ` Dan Streetman
2014-05-06 20:39                   ` Steven Rostedt
2014-05-06 20:39                     ` Steven Rostedt
2014-05-06 21:47                     ` Dan Streetman
2014-05-06 21:47                       ` Dan Streetman
2014-05-06 22:43                       ` Steven Rostedt
2014-05-06 22:43                         ` Steven Rostedt
2014-05-02 19:02             ` [PATCH 4/4] swap: change swap_list_head to plist, add swap_avail_head Dan Streetman
2014-05-02 19:02               ` Dan Streetman
2014-05-05 15:51               ` Dan Streetman
2014-05-05 15:51                 ` Dan Streetman
2014-05-05 19:13               ` Steven Rostedt
2014-05-05 19:13                 ` Steven Rostedt
2014-05-05 19:38                 ` Peter Zijlstra
2014-05-09 20:42                 ` [PATCH] plist: make CONFIG_DEBUG_PI_LIST selectable Dan Streetman
2014-05-09 20:42                   ` Dan Streetman
2014-05-09 21:17                   ` Steven Rostedt
2014-05-09 21:17                     ` Steven Rostedt
2014-05-12 11:11               ` [PATCH 4/4] swap: change swap_list_head to plist, add swap_avail_head Mel Gorman
2014-05-12 11:11                 ` Mel Gorman
2014-05-12 13:00                 ` Dan Streetman
2014-05-12 13:00                   ` Dan Streetman
2014-05-12 16:38             ` [PATCHv3 0/4] swap: simplify/fix swap_list handling and iteration Dan Streetman
2014-05-12 16:38               ` Dan Streetman
2014-05-12 16:38               ` [PATCHv2 1/4] swap: change swap_info singly-linked list to list_head Dan Streetman
2014-05-12 16:38                 ` Dan Streetman
2014-05-12 16:38               ` [PATCH 2/4] plist: add helper functions Dan Streetman
2014-05-12 16:38                 ` Dan Streetman
2014-05-12 16:38               ` [PATCHv2 3/4] plist: add plist_requeue Dan Streetman
2014-05-12 16:38                 ` Dan Streetman
2014-05-13 10:33                 ` Mel Gorman
2014-05-13 10:33                   ` Mel Gorman
2014-05-12 16:38               ` [PATCHv2 4/4] swap: change swap_list_head to plist, add swap_avail_head Dan Streetman
2014-05-12 16:38                 ` Dan Streetman
2014-05-13 10:34                 ` Mel Gorman
2014-05-13 10:34                   ` Mel Gorman

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.