Thread (39 messages) 39 messages, 8 authors, 2016-09-22

Re: [PATCH v2 0/9] re-enable DAX PMD support

From: Kani, Toshimitsu <hidden>
Date: 2016-08-31 20:20:48
Also in: linux-fsdevel, linux-mm, lkml, nvdimm

On Tue, 2016-08-30 at 17:01 -0600, Ross Zwisler wrote:
On Tue, Aug 23, 2016 at 04:04:10PM -0600, Ross Zwisler wrote:
quoted
DAX PMDs have been disabled since Jan Kara introduced DAX radix
tree based locking.  This series allows DAX PMDs to participate in
the DAX radix tree based locking scheme so that they can be re-
enabled.

Changes since v1:
 - PMD entry locking is now done based on the starting offset of
the PMD entry, rather than on the radix tree slot which was
unreliable. (Jan)
 - Fixed the one issue I could find with hole punch.  As far as I
can tell hole punch now works correctly for both PMD and PTE DAX
entries, 4k zero pages and huge zero pages.
 - Fixed the way that ext2 returns the size of holes in
ext2_get_block(). (Jan)
 - Made the 'wait_table' global variable static in respnse to a
sparse warning.
 - Fixed some more inconsitent usage between the names 'ret' and
'entry' for radix tree entry variables.

Ross Zwisler (9):
  ext4: allow DAX writeback for hole punch
  ext2: tell DAX the size of allocation holes
  ext4: tell DAX the size of allocation holes
  dax: remove buffer_size_valid()
  dax: make 'wait_table' global variable static
  dax: consistent variable naming for DAX entries
  dax: coordinate locking for offsets in PMD range
  dax: re-enable DAX PMD support
  dax: remove "depends on BROKEN" from FS_DAX_PMD

 fs/Kconfig          |   1 -
 fs/dax.c            | 297 +++++++++++++++++++++++++++++-----------
------------
 fs/ext2/inode.c     |   3 +
 fs/ext4/inode.c     |   7 +-
 include/linux/dax.h |  29 ++++-
 mm/filemap.c        |   6 +-
 6 files changed, 201 insertions(+), 142 deletions(-)

-- 
2.9.0
Ping on this series?  Any objections or comments?
Hi Ross,

I am seeing a major performance loss in fio mmap test with this patch-
set applied.  This happens with or without my patches [1] applied on
top of yours.  Without my patches, dax_pmd_fault() falls back to the
pte handler since an mmap'ed address is not 2MB-aligned.

I have attached three test results.
 o rc4.log - 4.8.0-rc4 (base)
 o non-pmd.log - 4.8.0-rc4 + your patchset (fall back to pte)
 o pmd.log - 4.8.0-rc4 + your patchset + my patchset (use pmd maps)

My test steps are as follows.

mkfs.ext4 -O bigalloc -C 2M /dev/pmem0
mount -o dax /dev/pmem0 /mnt/pmem0
numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio test.fio

"test.fio"
---
[global]
bs=4k
size=2G
directory=/mnt/pmem0
ioengine=mmap
[randrw]
rw=randrw
---

Can you please take a look?
Thanks,
-Toshi

[1] https://lkml.org/lkml/2016/8/29/560



Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help