From: "Huang\, Ying" <ying.huang@intel.com>
To: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>, <linux-mm@kvack.org>,
<linux-kernel@vger.kernel.org>, Michal Hocko <mhocko@suse.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Shaohua Li <shli@kernel.org>, Hugh Dickins <hughd@google.com>,
Minchan Kim <minchan@kernel.org>, Rik van Riel <riel@redhat.com>,
Daniel Jordan <daniel.m.jordan@oracle.com>,
Dan Williams <dan.j.williams@intel.com>
Subject: Re: [PATCH v2 7/7] swap, put_swap_page: Share more between huge/normal code path
Date: Wed, 18 Jul 2018 10:56:32 +0800 [thread overview]
Message-ID: <87k1ptgskf.fsf@yhuang-dev.intel.com> (raw)
In-Reply-To: <98288fec-1199-1b25-8c8c-18d60c33e596@linux.intel.com> (Dave Hansen's message of "Tue, 17 Jul 2018 11:36:54 -0700")
Dave Hansen <dave.hansen@linux.intel.com> writes:
> On 07/16/2018 05:55 PM, Huang, Ying wrote:
>> text data bss dec hex filename
>> base: 24215 2028 340 26583 67d7 mm/swapfile.o
>> unified: 24577 2028 340 26945 6941 mm/swapfile.o
>
> That's a bit more than I'd expect looking at the rest of the diff. Make
> me wonder if we missed an #ifdef somewhere or the compiler is getting
> otherwise confused.
>
> Might be worth a 10-minute look at the disassembly.
Dig one step deeper via 'size -A mm/swapfile.o' and diff between base
and unified,
--- b.s 2018-07-18 09:42:07.872501680 +0800
+++ h.s 2018-07-18 09:50:37.984499168 +0800
@@ -1,6 +1,6 @@
mm/swapfile.o :
section size addr
-.text 17815 0
+.text 17927 0
.data 1288 0
.bss 340 0
___ksymtab_gpl+nr_swap_pages 8 0
@@ -26,8 +26,8 @@
.data.once 1 0
.comment 35 0
.note.GNU-stack 0 0
-.orc_unwind_ip 1380 0
-.orc_unwind 2070 0
-Total 26810
+.orc_unwind_ip 1480 0
+.orc_unwind 2220 0
+Total 27172
The total difference is same: 27172 - 26810 = 362 = 24577 - 24215.
The text section difference is small: 17927 - 17815 = 112. The
additional size change comes from unwinder information: (1480 + 2220) -
(1380 + 2070) = 250. If the frame pointer unwinder is chosen, this cost
nothing, but if the ORC unwinder is chosen, this is the real difference.
For 112 text section difference, use 'objdump -t' to get symbol size and
compare,
--- b.od 2018-07-18 10:45:05.768483075 +0800
+++ h.od 2018-07-18 10:44:39.556483204 +0800
@@ -30,9 +30,9 @@
00000000000000a3 cluster_list_add_tail
000000000000001e __kunmap_atomic.isra.34
000000000000018c swap_count_continued
-00000000000000ac __swap_entry_free
000000000000000f put_swap_device.isra.35
00000000000000b4 inc_cluster_info_page
+000000000000006f __swap_entry_free_locked
000000000000004a _enable_swap_info
0000000000000046 wait_on_page_writeback
000000000000002e inode_to_bdi
@@ -53,8 +53,8 @@
0000000000000012 __x64_sys_swapon
0000000000000011 __ia32_sys_swapon
000000000000007a get_swap_device
-0000000000000032 swap_free
-0000000000000035 put_swap_page
+000000000000006e swap_free
+0000000000000078 put_swap_page
0000000000000267 swapcache_free_entries
0000000000000058 page_swapcount
000000000000003a __swap_count
@@ -64,7 +64,7 @@
000000000000011a try_to_free_swap
00000000000001fb get_swap_pages
0000000000000098 get_swap_page_of_type
-00000000000001b8 free_swap_and_cache
+00000000000001e6 free_swap_and_cache
0000000000000543 try_to_unuse
000000000000000e __x64_sys_swapoff
000000000000000d __ia32_sys_swapoff
The size of put_swap_page() change is small: 0x78 - 0x35 = 67. But
__swap_entry_free() is inlined by compiler, which cause some code
dilating.
Best Regards,
Huang, Ying
WARNING: multiple messages have this Message-ID (diff)
From: "Huang\, Ying" <ying.huang@intel.com>
To: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Michal Hocko <mhocko@suse.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Shaohua Li <shli@kernel.org>, Hugh Dickins <hughd@google.com>,
Minchan Kim <minchan@kernel.org>, Rik van Riel <riel@redhat.com>,
Daniel Jordan <daniel.m.jordan@oracle.com>,
Dan Williams <dan.j.williams@intel.com>
Subject: Re: [PATCH v2 7/7] swap, put_swap_page: Share more between huge/normal code path
Date: Wed, 18 Jul 2018 10:56:32 +0800 [thread overview]
Message-ID: <87k1ptgskf.fsf@yhuang-dev.intel.com> (raw)
In-Reply-To: <98288fec-1199-1b25-8c8c-18d60c33e596@linux.intel.com> (Dave Hansen's message of "Tue, 17 Jul 2018 11:36:54 -0700")
Dave Hansen <dave.hansen@linux.intel.com> writes:
> On 07/16/2018 05:55 PM, Huang, Ying wrote:
>> text data bss dec hex filename
>> base: 24215 2028 340 26583 67d7 mm/swapfile.o
>> unified: 24577 2028 340 26945 6941 mm/swapfile.o
>
> That's a bit more than I'd expect looking at the rest of the diff. Make
> me wonder if we missed an #ifdef somewhere or the compiler is getting
> otherwise confused.
>
> Might be worth a 10-minute look at the disassembly.
Dig one step deeper via 'size -A mm/swapfile.o' and diff between base
and unified,
--- b.s 2018-07-18 09:42:07.872501680 +0800
+++ h.s 2018-07-18 09:50:37.984499168 +0800
@@ -1,6 +1,6 @@
mm/swapfile.o :
section size addr
-.text 17815 0
+.text 17927 0
.data 1288 0
.bss 340 0
___ksymtab_gpl+nr_swap_pages 8 0
@@ -26,8 +26,8 @@
.data.once 1 0
.comment 35 0
.note.GNU-stack 0 0
-.orc_unwind_ip 1380 0
-.orc_unwind 2070 0
-Total 26810
+.orc_unwind_ip 1480 0
+.orc_unwind 2220 0
+Total 27172
The total difference is same: 27172 - 26810 = 362 = 24577 - 24215.
The text section difference is small: 17927 - 17815 = 112. The
additional size change comes from unwinder information: (1480 + 2220) -
(1380 + 2070) = 250. If the frame pointer unwinder is chosen, this cost
nothing, but if the ORC unwinder is chosen, this is the real difference.
For 112 text section difference, use 'objdump -t' to get symbol size and
compare,
--- b.od 2018-07-18 10:45:05.768483075 +0800
+++ h.od 2018-07-18 10:44:39.556483204 +0800
@@ -30,9 +30,9 @@
00000000000000a3 cluster_list_add_tail
000000000000001e __kunmap_atomic.isra.34
000000000000018c swap_count_continued
-00000000000000ac __swap_entry_free
000000000000000f put_swap_device.isra.35
00000000000000b4 inc_cluster_info_page
+000000000000006f __swap_entry_free_locked
000000000000004a _enable_swap_info
0000000000000046 wait_on_page_writeback
000000000000002e inode_to_bdi
@@ -53,8 +53,8 @@
0000000000000012 __x64_sys_swapon
0000000000000011 __ia32_sys_swapon
000000000000007a get_swap_device
-0000000000000032 swap_free
-0000000000000035 put_swap_page
+000000000000006e swap_free
+0000000000000078 put_swap_page
0000000000000267 swapcache_free_entries
0000000000000058 page_swapcount
000000000000003a __swap_count
@@ -64,7 +64,7 @@
000000000000011a try_to_free_swap
00000000000001fb get_swap_pages
0000000000000098 get_swap_page_of_type
-00000000000001b8 free_swap_and_cache
+00000000000001e6 free_swap_and_cache
0000000000000543 try_to_unuse
000000000000000e __x64_sys_swapoff
000000000000000d __ia32_sys_swapoff
The size of put_swap_page() change is small: 0x78 - 0x35 = 67. But
__swap_entry_free() is inlined by compiler, which cause some code
dilating.
Best Regards,
Huang, Ying
next prev parent reply other threads:[~2018-07-18 2:56 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-17 0:55 [PATCH v2 0/7] swap: THP optimizing refactoring Huang, Ying
2018-07-17 0:55 ` [PATCH v2 1/7] swap: Add comments to lock_cluster_or_swap_info() Huang, Ying
2018-07-17 18:27 ` Dave Hansen
2018-07-18 3:09 ` Huang, Ying
2018-07-18 3:09 ` Huang, Ying
2018-07-17 0:55 ` [PATCH v2 2/7] mm/swapfile.c: Replace some #ifdef with IS_ENABLED() Huang, Ying
2018-07-17 18:32 ` Dave Hansen
2018-07-18 3:25 ` Huang, Ying
2018-07-18 3:25 ` Huang, Ying
2018-07-18 15:15 ` Dave Hansen
2018-07-19 4:42 ` Huang, Ying
2018-07-19 4:42 ` Huang, Ying
2018-07-17 0:55 ` [PATCH v2 3/7] swap: Use swap_count() in swap_page_trans_huge_swapped() Huang, Ying
2018-07-17 0:55 ` [PATCH v2 4/7] swap: Unify normal/huge code path " Huang, Ying
2018-07-17 0:55 ` [PATCH v2 5/7] swap: Unify normal/huge code path in put_swap_page() Huang, Ying
2018-07-17 0:55 ` [PATCH v2 6/7] swap: Add __swap_entry_free_locked() Huang, Ying
2018-07-17 0:55 ` [PATCH v2 7/7] swap, put_swap_page: Share more between huge/normal code path Huang, Ying
2018-07-17 18:36 ` Dave Hansen
2018-07-18 2:56 ` Huang, Ying [this message]
2018-07-18 2:56 ` Huang, Ying
2018-07-18 15:13 ` Dave Hansen
2018-07-17 15:17 ` [PATCH v2 0/7] swap: THP optimizing refactoring Daniel Jordan
2018-07-18 2:56 ` Huang, Ying
2018-07-18 2:56 ` Huang, Ying
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87k1ptgskf.fsf@yhuang-dev.intel.com \
--to=ying.huang@intel.com \
--cc=akpm@linux-foundation.org \
--cc=dan.j.williams@intel.com \
--cc=daniel.m.jordan@oracle.com \
--cc=dave.hansen@linux.intel.com \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=minchan@kernel.org \
--cc=riel@redhat.com \
--cc=shli@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.