[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20210309130527.GK3479805@casper.infradead.org>
Date: Tue, 9 Mar 2021 13:05:27 +0000
From: Matthew Wilcox <willy@...radead.org>
To: kernel test robot <oliver.sang@...el.com>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>,
Kent Overstreet <kent.overstreet@...il.com>,
Christoph Hellwig <hch@....de>,
Miaohe Lin <linmiaohe@...wei.com>,
Andrew Morton <akpm@...ux-foundation.org>,
LKML <linux-kernel@...r.kernel.org>, lkp@...ts.01.org,
lkp@...el.com, ying.huang@...el.com, feng.tang@...el.com,
zhengjun.xing@...el.com
Subject: Re: [mm/filemap] cbd59c48ae:
fxmark.hdd_ext4_no_jnl_DRBM_9_bufferedio.works/sec -7.6% regression
On Tue, Mar 09, 2021 at 03:57:06PM +0800, kernel test robot wrote:
> FYI, we noticed a -7.6% regression of fxmark.hdd_ext4_no_jnl_DRBM_9_bufferedio.works/sec due to commit:
>
> commit: cbd59c48ae2bcadc4a7599c29cf32fd3f9b78251 ("mm/filemap: use head pages in generic_file_buffered_read")
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master
>
> in testcase: fxmark
> on test machine: 288 threads Intel(R) Xeon Phi(TM) CPU 7295 @ 1.50GHz with 80G memory
Can you send me one of those to test on? ;-)
> %stddev %change %stddev
> \ | \
> 0.05 ± 5% -10.1% 0.05 ± 3% fxmark.hdd_ext4_no_jnl_DRBM_18_bufferedio.softirq_util
> 4168491 -7.6% 3849925 fxmark.hdd_ext4_no_jnl_DRBM_9_bufferedio.works/sec
> 300.00 +2.1% 306.16 fxmark.time.system_time
> 87.53 -6.7% 81.69 fxmark.time.user_time
> 784.83 ± 5% +23.6% 970.33 ± 7% perf-sched.wait_and_delay.count.preempt_schedule_common.__cond_resched.copy_page_to_iter.generic_file_buffered_read.new_sync_read
23% more delay while preempted copying to user? That seems bad, but I
don't see anything in this commit that would cause that.
> 7.59 -7.6 0.00 perf-profile.calltrace.cycles-pp.find_get_pages_contig.filemap_get_pages.generic_file_buffered_read.new_sync_read.vfs_read
That makes sense; we don't call find_get_pages_contig() any more, instead
we call ...
> 0.00 +11.9 11.90 perf-profile.calltrace.cycles-pp.filemap_get_read_batch.filemap_get_pages.generic_file_buffered_read.new_sync_read.vfs_read
filemap_get_read_batch() ... which is more expensive ;-(
if (PageReadahead(head))
break;
+ if (!PageHead(head))
+ continue;
xas.xa_index = head->index + thp_nr_pages(head) - 1;
xas.xa_offset = (xas.xa_index >> xas.xa_shift) & XA_CHUNK_MASK;
might be worth a try, but I have a medical appointment to get to.
I'll test it out later.
Powered by blists - more mailing lists