Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-18 Thread Rafael J. Wysocki
On Thursday, June 18, 2015 01:24:01 PM Dan Williams wrote:
> Rafael, does patch1 look ok to you?

Mostly.  acpi_map_pxm_to_online_node() needs a proper kerneldoc comment
describing what it does.

Thanks,
Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-18 Thread Dan Williams
Rafael, does patch1 look ok to you?

On Tue, Jun 9, 2015 at 4:10 PM, Toshi Kani  wrote:
> Since NVDIMMs are installed on memory slots, they expose the NUMA
> topology of a platform.  This patchset adds support of sysfs
> 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
> This enables numactl(8) to accept 'block:' and 'file:' paths of
> pmem and btt devices as shown in the examples below.
>   numactl --preferred block:pmem0 --show
>   numactl --preferred file:/dev/pmem0s --show
>
> numactl can be used to bind an application to the locality of
> a target NVDIMM for better performance.  Here is a result of fio
> benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
> remote settings.
>
>   Local [1] :  4098.3MB/s
>   Remote [2]:  3718.4MB/s
>
> [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
> 
> [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
> 
>
> Patch 1/3 applies on top of the acpica branch of the pm tree.
> Patch 2/3-3/3 apply on top of Dan Williams's v5 patch series of
> "libnvdimm: non-volatile memory devices".
>
> ---
> v2:
>  - Add acpi_map_pxm_to_online_node(), which returns an online node.
>  - Manage visibility of sysfs numa_node with is_visible. (Dan Williams)
>  - Check ACPI_NFIT_PROXIMITY_VALID in spa->flags.
>
> ---
> Toshi Kani (3):
>   1/3 acpi: Add acpi_map_pxm_to_online_node()
>   2/3 libnvdimm: Set numa_node to NVDIMM devices
>   3/3 libnvdimm: Add sysfs numa_node to NVDIMM devices
>
> ---
>  drivers/acpi/nfit.c |  7 +++
>  drivers/acpi/numa.c | 40 +---
>  drivers/nvdimm/btt.c|  2 ++
>  drivers/nvdimm/btt_devs.c   |  1 +
>  drivers/nvdimm/bus.c| 30 ++
>  drivers/nvdimm/namespace_devs.c |  1 +
>  drivers/nvdimm/nd.h |  1 +
>  drivers/nvdimm/region.c |  1 +
>  drivers/nvdimm/region_devs.c|  1 +
>  include/linux/acpi.h|  5 +
>  include/linux/libnvdimm.h   |  2 ++
>  11 files changed, 88 insertions(+), 3 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-18 Thread Rafael J. Wysocki
On Thursday, June 18, 2015 01:24:01 PM Dan Williams wrote:
 Rafael, does patch1 look ok to you?

Mostly.  acpi_map_pxm_to_online_node() needs a proper kerneldoc comment
describing what it does.

Thanks,
Rafael

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-18 Thread Dan Williams
Rafael, does patch1 look ok to you?

On Tue, Jun 9, 2015 at 4:10 PM, Toshi Kani toshi.k...@hp.com wrote:
 Since NVDIMMs are installed on memory slots, they expose the NUMA
 topology of a platform.  This patchset adds support of sysfs
 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
 This enables numactl(8) to accept 'block:' and 'file:' paths of
 pmem and btt devices as shown in the examples below.
   numactl --preferred block:pmem0 --show
   numactl --preferred file:/dev/pmem0s --show

 numactl can be used to bind an application to the locality of
 a target NVDIMM for better performance.  Here is a result of fio
 benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
 remote settings.

   Local [1] :  4098.3MB/s
   Remote [2]:  3718.4MB/s

 [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
 fs-on-pmem0
 [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
 fs-on-pmem0

 Patch 1/3 applies on top of the acpica branch of the pm tree.
 Patch 2/3-3/3 apply on top of Dan Williams's v5 patch series of
 libnvdimm: non-volatile memory devices.

 ---
 v2:
  - Add acpi_map_pxm_to_online_node(), which returns an online node.
  - Manage visibility of sysfs numa_node with is_visible. (Dan Williams)
  - Check ACPI_NFIT_PROXIMITY_VALID in spa-flags.

 ---
 Toshi Kani (3):
   1/3 acpi: Add acpi_map_pxm_to_online_node()
   2/3 libnvdimm: Set numa_node to NVDIMM devices
   3/3 libnvdimm: Add sysfs numa_node to NVDIMM devices

 ---
  drivers/acpi/nfit.c |  7 +++
  drivers/acpi/numa.c | 40 +---
  drivers/nvdimm/btt.c|  2 ++
  drivers/nvdimm/btt_devs.c   |  1 +
  drivers/nvdimm/bus.c| 30 ++
  drivers/nvdimm/namespace_devs.c |  1 +
  drivers/nvdimm/nd.h |  1 +
  drivers/nvdimm/region.c |  1 +
  drivers/nvdimm/region_devs.c|  1 +
  include/linux/acpi.h|  5 +
  include/linux/libnvdimm.h   |  2 ++
  11 files changed, 88 insertions(+), 3 deletions(-)
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-11 Thread Toshi Kani
On Thu, 2015-06-11 at 08:38 -0700, Dan Williams wrote:
> On Tue, Jun 9, 2015 at 4:10 PM, Toshi Kani  wrote:
> > Since NVDIMMs are installed on memory slots, they expose the NUMA
> > topology of a platform.  This patchset adds support of sysfs
> > 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
> > This enables numactl(8) to accept 'block:' and 'file:' paths of
> > pmem and btt devices as shown in the examples below.
> >   numactl --preferred block:pmem0 --show
> >   numactl --preferred file:/dev/pmem0s --show
> >
> > numactl can be used to bind an application to the locality of
> > a target NVDIMM for better performance.  Here is a result of fio
> > benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
> > remote settings.
> >
> >   Local [1] :  4098.3MB/s
> >   Remote [2]:  3718.4MB/s
> >
> > [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
> > 
> > [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
> > 
> >
> > Patch 1/3 applies on top of the acpica branch of the pm tree.
> > Patch 2/3-3/3 apply on top of Dan Williams's v5 patch series of
> > "libnvdimm: non-volatile memory devices".
> >
> > ---
> > v2:
> >  - Add acpi_map_pxm_to_online_node(), which returns an online node.
> >  - Manage visibility of sysfs numa_node with is_visible. (Dan Williams)
> >  - Check ACPI_NFIT_PROXIMITY_VALID in spa->flags.
> >
> > ---
> > Toshi Kani (3):
> >   1/3 acpi: Add acpi_map_pxm_to_online_node()
> >   2/3 libnvdimm: Set numa_node to NVDIMM devices
> >   3/3 libnvdimm: Add sysfs numa_node to NVDIMM devices
> 
> Looks good to me.  Once Rafael acks the ACPI core changes I'll pull it
> in to libnvdimm-for-next.

Great!  Thanks Dan,
-Toshi

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-11 Thread Dan Williams
On Tue, Jun 9, 2015 at 4:10 PM, Toshi Kani  wrote:
> Since NVDIMMs are installed on memory slots, they expose the NUMA
> topology of a platform.  This patchset adds support of sysfs
> 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
> This enables numactl(8) to accept 'block:' and 'file:' paths of
> pmem and btt devices as shown in the examples below.
>   numactl --preferred block:pmem0 --show
>   numactl --preferred file:/dev/pmem0s --show
>
> numactl can be used to bind an application to the locality of
> a target NVDIMM for better performance.  Here is a result of fio
> benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
> remote settings.
>
>   Local [1] :  4098.3MB/s
>   Remote [2]:  3718.4MB/s
>
> [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
> 
> [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
> 
>
> Patch 1/3 applies on top of the acpica branch of the pm tree.
> Patch 2/3-3/3 apply on top of Dan Williams's v5 patch series of
> "libnvdimm: non-volatile memory devices".
>
> ---
> v2:
>  - Add acpi_map_pxm_to_online_node(), which returns an online node.
>  - Manage visibility of sysfs numa_node with is_visible. (Dan Williams)
>  - Check ACPI_NFIT_PROXIMITY_VALID in spa->flags.
>
> ---
> Toshi Kani (3):
>   1/3 acpi: Add acpi_map_pxm_to_online_node()
>   2/3 libnvdimm: Set numa_node to NVDIMM devices
>   3/3 libnvdimm: Add sysfs numa_node to NVDIMM devices

Looks good to me.  Once Rafael acks the ACPI core changes I'll pull it
in to libnvdimm-for-next.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-11 Thread Dan Williams
On Tue, Jun 9, 2015 at 4:10 PM, Toshi Kani toshi.k...@hp.com wrote:
 Since NVDIMMs are installed on memory slots, they expose the NUMA
 topology of a platform.  This patchset adds support of sysfs
 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
 This enables numactl(8) to accept 'block:' and 'file:' paths of
 pmem and btt devices as shown in the examples below.
   numactl --preferred block:pmem0 --show
   numactl --preferred file:/dev/pmem0s --show

 numactl can be used to bind an application to the locality of
 a target NVDIMM for better performance.  Here is a result of fio
 benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
 remote settings.

   Local [1] :  4098.3MB/s
   Remote [2]:  3718.4MB/s

 [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
 fs-on-pmem0
 [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
 fs-on-pmem0

 Patch 1/3 applies on top of the acpica branch of the pm tree.
 Patch 2/3-3/3 apply on top of Dan Williams's v5 patch series of
 libnvdimm: non-volatile memory devices.

 ---
 v2:
  - Add acpi_map_pxm_to_online_node(), which returns an online node.
  - Manage visibility of sysfs numa_node with is_visible. (Dan Williams)
  - Check ACPI_NFIT_PROXIMITY_VALID in spa-flags.

 ---
 Toshi Kani (3):
   1/3 acpi: Add acpi_map_pxm_to_online_node()
   2/3 libnvdimm: Set numa_node to NVDIMM devices
   3/3 libnvdimm: Add sysfs numa_node to NVDIMM devices

Looks good to me.  Once Rafael acks the ACPI core changes I'll pull it
in to libnvdimm-for-next.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-11 Thread Toshi Kani
On Thu, 2015-06-11 at 08:38 -0700, Dan Williams wrote:
 On Tue, Jun 9, 2015 at 4:10 PM, Toshi Kani toshi.k...@hp.com wrote:
  Since NVDIMMs are installed on memory slots, they expose the NUMA
  topology of a platform.  This patchset adds support of sysfs
  'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
  This enables numactl(8) to accept 'block:' and 'file:' paths of
  pmem and btt devices as shown in the examples below.
numactl --preferred block:pmem0 --show
numactl --preferred file:/dev/pmem0s --show
 
  numactl can be used to bind an application to the locality of
  a target NVDIMM for better performance.  Here is a result of fio
  benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
  remote settings.
 
Local [1] :  4098.3MB/s
Remote [2]:  3718.4MB/s
 
  [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
  fs-on-pmem0
  [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
  fs-on-pmem0
 
  Patch 1/3 applies on top of the acpica branch of the pm tree.
  Patch 2/3-3/3 apply on top of Dan Williams's v5 patch series of
  libnvdimm: non-volatile memory devices.
 
  ---
  v2:
   - Add acpi_map_pxm_to_online_node(), which returns an online node.
   - Manage visibility of sysfs numa_node with is_visible. (Dan Williams)
   - Check ACPI_NFIT_PROXIMITY_VALID in spa-flags.
 
  ---
  Toshi Kani (3):
1/3 acpi: Add acpi_map_pxm_to_online_node()
2/3 libnvdimm: Set numa_node to NVDIMM devices
3/3 libnvdimm: Add sysfs numa_node to NVDIMM devices
 
 Looks good to me.  Once Rafael acks the ACPI core changes I'll pull it
 in to libnvdimm-for-next.

Great!  Thanks Dan,
-Toshi

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Jeff Moyer
Dan Williams  writes:

> On Wed, Jun 10, 2015 at 8:54 AM, Jeff Moyer  wrote:
>> Toshi Kani  writes:
>>
>>> Since NVDIMMs are installed on memory slots, they expose the NUMA
>>> topology of a platform.  This patchset adds support of sysfs
>>> 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
>>> This enables numactl(8) to accept 'block:' and 'file:' paths of
>>> pmem and btt devices as shown in the examples below.
>>>   numactl --preferred block:pmem0 --show
>>>   numactl --preferred file:/dev/pmem0s --show
>>>
>>> numactl can be used to bind an application to the locality of
>>> a target NVDIMM for better performance.  Here is a result of fio
>>> benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
>>> remote settings.
>>>
>>>   Local [1] :  4098.3MB/s
>>>   Remote [2]:  3718.4MB/s
>>>
>>> [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
>>> 
>>> [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
>>> 
>>
>> Did you post the patches to numactl somewhere?
>>
>
> numactl already supports this today.

Ah, I did not know that.  I guess I should have RTFM.  :)

Cheers,
Jeff
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Dan Williams
On Wed, Jun 10, 2015 at 9:20 AM, Elliott, Robert (Server Storage)
 wrote:
>> -Original Message-
>> From: Linux-nvdimm [mailto:linux-nvdimm-boun...@lists.01.org] On Behalf Of
>> Dan Williams
>> Sent: Wednesday, June 10, 2015 9:58 AM
>> To: Jeff Moyer
>> Cc: linux-nvdimm; Rafael J. Wysocki; linux-kernel@vger.kernel.org; Linux
>> ACPI
>> Subject: Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices
>>
>> On Wed, Jun 10, 2015 at 8:54 AM, Jeff Moyer  wrote:
>> > Toshi Kani  writes:
>> >
>> >> Since NVDIMMs are installed on memory slots, they expose the NUMA
>> >> topology of a platform.  This patchset adds support of sysfs
>> >> 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
>> >> This enables numactl(8) to accept 'block:' and 'file:' paths of
>> >> pmem and btt devices as shown in the examples below.
>> >>   numactl --preferred block:pmem0 --show
>> >>   numactl --preferred file:/dev/pmem0s --show
>> >>
>> >> numactl can be used to bind an application to the locality of
>> >> a target NVDIMM for better performance.  Here is a result of fio
>> >> benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
>> >> remote settings.
>> >>
>> >>   Local [1] :  4098.3MB/s
>> >>   Remote [2]:  3718.4MB/s
>> >>
>> >> [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio > on-pmem0>
>> >> [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio > on-pmem0>
>> >
>> > Did you post the patches to numactl somewhere?
>> >
>>
>> numactl already supports this today.
>
> numactl does have a bug handling partitions under these devices,
> because it assumes all storage devices have "/devices/pci"
> in their path as it tries to find the parent device for the
> partition.  I think we'll propose a numactl patch for that;
> I don't think the drivers can fool it.
>
> Details (from an earlier version of the patch series
> in which btt devices were named /dev/nd1, etc.):
>
> strace shows that numactl is trying to find numa_node in very
> different locations for /dev/nd1p1 vs. /dev/sda1.
>
> strace for /dev/nd1p1
> =
> open("/sys/class/block/nd1p1/dev", O_RDONLY) = 4
> read(4, "259:1\n", 4095)= 6
> close(4)= 0
> close(3)= 0
> readlink("/sys/class/block/nd1p1", "../../devices/LNXSYSTM:00/LNXSYB"..., 
> 1024) = 77
> open("/sys/class/block/nd1p1/device/numa_node", O_RDONLY) = -1 ENOENT (No 
> such file or directory)
>
> strace for /dev/sda1
> 
> open("/sys/class/block/sda1/dev", O_RDONLY) = 4
> read(4, "8:1\n", 4095)  = 4
> close(4)= 0
> close(3)= 0
> readlink("/sys/class/block/sda1", "../../devices/pci:00/:00"..., 
> 1024) = 91
> open("/sys//devices/pci:00/:00:01.0//numa_node", O_RDONLY) = 3
> read(3, "0\n", 4095)= 2
> close(3)= 0
>
> The "sys/class/block/xxx" paths link to:
> lrwxrwxrwx. 1 root root 0 May 20 20:42 /sys/class/block/nd1p1 -> 
> ../../devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/btt1/block/nd1/nd1p1
> lrwxrwxrwx. 1 root root 0 May 20 20:41 /sys/class/block/sda1 -> 
> ../../devices/pci:00/:00:01.0/:03:00.0/host6/target6:0:0/6:0:0:0/block/sda/sda1
>
>
> For /dev/sda1, numactl recognizes "/devices/pci" as
> a special path, and strips off everything after the
> numbers.  Faced with:
> ../../devices/pci:00/:00:01.0/:03:00.0/host6/target6:0:0/6:0:0:0/block/sda/sda1
>
> it ends up with this (leaving a sloppy "//" in the path):
> /sys/devices/pci:00/:00:01.0//numa_node
>
> It would also succeed if it ended up with this:
> /sys/devices/pci:00/:00:01.0/:03:00.0/numa_node
>
> For /dev/nd1p1 it does not see that string, so just
> tries to open "/sys/class/block/nd1p1/device/numa_node"
>
> There are no "device/" subdirectories in the tree for
> partition devices (for either sda1 or nd1p1), so this
> fails.
>
>
> From http://oss.sgi.com/projects/libnuma/
> numactl affinity.c:
> /* Somewhat hackish: extract device from symlink path.
>Better would be a direct backlink. This knows slightly too
>much about

RE: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Elliott, Robert (Server Storage)
> -Original Message-
> From: Linux-nvdimm [mailto:linux-nvdimm-boun...@lists.01.org] On Behalf Of
> Dan Williams
> Sent: Wednesday, June 10, 2015 9:58 AM
> To: Jeff Moyer
> Cc: linux-nvdimm; Rafael J. Wysocki; linux-kernel@vger.kernel.org; Linux
> ACPI
> Subject: Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices
> 
> On Wed, Jun 10, 2015 at 8:54 AM, Jeff Moyer  wrote:
> > Toshi Kani  writes:
> >
> >> Since NVDIMMs are installed on memory slots, they expose the NUMA
> >> topology of a platform.  This patchset adds support of sysfs
> >> 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
> >> This enables numactl(8) to accept 'block:' and 'file:' paths of
> >> pmem and btt devices as shown in the examples below.
> >>   numactl --preferred block:pmem0 --show
> >>   numactl --preferred file:/dev/pmem0s --show
> >>
> >> numactl can be used to bind an application to the locality of
> >> a target NVDIMM for better performance.  Here is a result of fio
> >> benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
> >> remote settings.
> >>
> >>   Local [1] :  4098.3MB/s
> >>   Remote [2]:  3718.4MB/s
> >>
> >> [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio  on-pmem0>
> >> [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio  on-pmem0>
> >
> > Did you post the patches to numactl somewhere?
> >
> 
> numactl already supports this today.

numactl does have a bug handling partitions under these devices,
because it assumes all storage devices have "/devices/pci"
in their path as it tries to find the parent device for the
partition.  I think we'll propose a numactl patch for that;
I don't think the drivers can fool it.

Details (from an earlier version of the patch series
in which btt devices were named /dev/nd1, etc.):

strace shows that numactl is trying to find numa_node in very
different locations for /dev/nd1p1 vs. /dev/sda1.

strace for /dev/nd1p1
=
open("/sys/class/block/nd1p1/dev", O_RDONLY) = 4
read(4, "259:1\n", 4095)= 6
close(4)= 0
close(3)= 0
readlink("/sys/class/block/nd1p1", "../../devices/LNXSYSTM:00/LNXSYB"..., 1024) 
= 77
open("/sys/class/block/nd1p1/device/numa_node", O_RDONLY) = -1 ENOENT (No such 
file or directory)

strace for /dev/sda1

open("/sys/class/block/sda1/dev", O_RDONLY) = 4
read(4, "8:1\n", 4095)  = 4
close(4)= 0
close(3)= 0
readlink("/sys/class/block/sda1", "../../devices/pci:00/:00"..., 1024) 
= 91
open("/sys//devices/pci:00/:00:01.0//numa_node", O_RDONLY) = 3
read(3, "0\n", 4095)= 2
close(3)= 0

The "sys/class/block/xxx" paths link to:
lrwxrwxrwx. 1 root root 0 May 20 20:42 /sys/class/block/nd1p1 -> 
../../devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/btt1/block/nd1/nd1p1
lrwxrwxrwx. 1 root root 0 May 20 20:41 /sys/class/block/sda1 -> 
../../devices/pci:00/:00:01.0/:03:00.0/host6/target6:0:0/6:0:0:0/block/sda/sda1


For /dev/sda1, numactl recognizes "/devices/pci" as
a special path, and strips off everything after the
numbers.  Faced with:
../../devices/pci:00/:00:01.0/:03:00.0/host6/target6:0:0/6:0:0:0/block/sda/sda1

it ends up with this (leaving a sloppy "//" in the path):
/sys/devices/pci:00/:00:01.0//numa_node

It would also succeed if it ended up with this:
/sys/devices/pci:00/:00:01.0/:03:00.0/numa_node

For /dev/nd1p1 it does not see that string, so just
tries to open "/sys/class/block/nd1p1/device/numa_node"

There are no "device/" subdirectories in the tree for
partition devices (for either sda1 or nd1p1), so this 
fails.


>From http://oss.sgi.com/projects/libnuma/
numactl affinity.c:
/* Somewhat hackish: extract device from symlink path.
   Better would be a direct backlink. This knows slightly too
   much about the actual sysfs layout. */
char path[1024];
char *fn = NULL;
if (asprintf(, "/sys/class/%s/%s", cls, dev) > 0 &&
readlink(fn, path, sizeof path) > 0) {
regex_t re;
regmatch_t match[2];
char *p;

regcomp(, "(/devices/pci[0-9a-fA-F:/]+\\.[0-9]+)/",
REG_EXTENDED);
ret = regexec(, path, 2, match, 0);
regfree();
if (ret == 0) {
 

Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Toshi Kani
On Wed, 2015-06-10 at 08:57 -0700, Dan Williams wrote:
> On Wed, Jun 10, 2015 at 8:54 AM, Jeff Moyer  wrote:
> > Toshi Kani  writes:
> >
> >> Since NVDIMMs are installed on memory slots, they expose the NUMA
> >> topology of a platform.  This patchset adds support of sysfs
> >> 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
> >> This enables numactl(8) to accept 'block:' and 'file:' paths of
> >> pmem and btt devices as shown in the examples below.
> >>   numactl --preferred block:pmem0 --show
> >>   numactl --preferred file:/dev/pmem0s --show
> >>
> >> numactl can be used to bind an application to the locality of
> >> a target NVDIMM for better performance.  Here is a result of fio
> >> benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
> >> remote settings.
> >>
> >>   Local [1] :  4098.3MB/s
> >>   Remote [2]:  3718.4MB/s
> >>
> >> [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
> >> 
> >> [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
> >> 
> >
> > Did you post the patches to numactl somewhere?
> >
> 
> numactl already supports this today.

Yes, numactl supports the following sysfs class lookup for numa_node.
This patchset adds numa_node for NVDIMM devices in the same sysfs format
as described in patch 3/3.

   /* Generic sysfs class lookup */
   static int
   affinity_class(struct bitmask *mask, char *cls, const char *dev)
   {
:
ret = sysfs_node_read(mask, "/sys/class/%s/%s/device/numa_node",
  cls, dev);

Thanks,
-Toshi

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Dan Williams
On Wed, Jun 10, 2015 at 8:54 AM, Jeff Moyer  wrote:
> Toshi Kani  writes:
>
>> Since NVDIMMs are installed on memory slots, they expose the NUMA
>> topology of a platform.  This patchset adds support of sysfs
>> 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
>> This enables numactl(8) to accept 'block:' and 'file:' paths of
>> pmem and btt devices as shown in the examples below.
>>   numactl --preferred block:pmem0 --show
>>   numactl --preferred file:/dev/pmem0s --show
>>
>> numactl can be used to bind an application to the locality of
>> a target NVDIMM for better performance.  Here is a result of fio
>> benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
>> remote settings.
>>
>>   Local [1] :  4098.3MB/s
>>   Remote [2]:  3718.4MB/s
>>
>> [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
>> 
>> [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
>> 
>
> Did you post the patches to numactl somewhere?
>

numactl already supports this today.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Jeff Moyer
Toshi Kani  writes:

> Since NVDIMMs are installed on memory slots, they expose the NUMA
> topology of a platform.  This patchset adds support of sysfs
> 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
> This enables numactl(8) to accept 'block:' and 'file:' paths of
> pmem and btt devices as shown in the examples below.
>   numactl --preferred block:pmem0 --show
>   numactl --preferred file:/dev/pmem0s --show
>
> numactl can be used to bind an application to the locality of
> a target NVDIMM for better performance.  Here is a result of fio
> benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
> remote settings.
>
>   Local [1] :  4098.3MB/s
>   Remote [2]:  3718.4MB/s
>
> [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
>  
> [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
> 

Did you post the patches to numactl somewhere?

-Jeff
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Toshi Kani
On Wed, 2015-06-10 at 08:57 -0700, Dan Williams wrote:
 On Wed, Jun 10, 2015 at 8:54 AM, Jeff Moyer jmo...@redhat.com wrote:
  Toshi Kani toshi.k...@hp.com writes:
 
  Since NVDIMMs are installed on memory slots, they expose the NUMA
  topology of a platform.  This patchset adds support of sysfs
  'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
  This enables numactl(8) to accept 'block:' and 'file:' paths of
  pmem and btt devices as shown in the examples below.
numactl --preferred block:pmem0 --show
numactl --preferred file:/dev/pmem0s --show
 
  numactl can be used to bind an application to the locality of
  a target NVDIMM for better performance.  Here is a result of fio
  benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
  remote settings.
 
Local [1] :  4098.3MB/s
Remote [2]:  3718.4MB/s
 
  [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
  fs-on-pmem0
  [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
  fs-on-pmem0
 
  Did you post the patches to numactl somewhere?
 
 
 numactl already supports this today.

Yes, numactl supports the following sysfs class lookup for numa_node.
This patchset adds numa_node for NVDIMM devices in the same sysfs format
as described in patch 3/3.

   /* Generic sysfs class lookup */
   static int
   affinity_class(struct bitmask *mask, char *cls, const char *dev)
   {
:
ret = sysfs_node_read(mask, /sys/class/%s/%s/device/numa_node,
  cls, dev);

Thanks,
-Toshi

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Jeff Moyer
Dan Williams dan.j.willi...@intel.com writes:

 On Wed, Jun 10, 2015 at 8:54 AM, Jeff Moyer jmo...@redhat.com wrote:
 Toshi Kani toshi.k...@hp.com writes:

 Since NVDIMMs are installed on memory slots, they expose the NUMA
 topology of a platform.  This patchset adds support of sysfs
 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
 This enables numactl(8) to accept 'block:' and 'file:' paths of
 pmem and btt devices as shown in the examples below.
   numactl --preferred block:pmem0 --show
   numactl --preferred file:/dev/pmem0s --show

 numactl can be used to bind an application to the locality of
 a target NVDIMM for better performance.  Here is a result of fio
 benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
 remote settings.

   Local [1] :  4098.3MB/s
   Remote [2]:  3718.4MB/s

 [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
 fs-on-pmem0
 [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
 fs-on-pmem0

 Did you post the patches to numactl somewhere?


 numactl already supports this today.

Ah, I did not know that.  I guess I should have RTFM.  :)

Cheers,
Jeff
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Dan Williams
On Wed, Jun 10, 2015 at 8:54 AM, Jeff Moyer jmo...@redhat.com wrote:
 Toshi Kani toshi.k...@hp.com writes:

 Since NVDIMMs are installed on memory slots, they expose the NUMA
 topology of a platform.  This patchset adds support of sysfs
 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
 This enables numactl(8) to accept 'block:' and 'file:' paths of
 pmem and btt devices as shown in the examples below.
   numactl --preferred block:pmem0 --show
   numactl --preferred file:/dev/pmem0s --show

 numactl can be used to bind an application to the locality of
 a target NVDIMM for better performance.  Here is a result of fio
 benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
 remote settings.

   Local [1] :  4098.3MB/s
   Remote [2]:  3718.4MB/s

 [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
 fs-on-pmem0
 [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
 fs-on-pmem0

 Did you post the patches to numactl somewhere?


numactl already supports this today.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Elliott, Robert (Server Storage)
 -Original Message-
 From: Linux-nvdimm [mailto:linux-nvdimm-boun...@lists.01.org] On Behalf Of
 Dan Williams
 Sent: Wednesday, June 10, 2015 9:58 AM
 To: Jeff Moyer
 Cc: linux-nvdimm; Rafael J. Wysocki; linux-kernel@vger.kernel.org; Linux
 ACPI
 Subject: Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices
 
 On Wed, Jun 10, 2015 at 8:54 AM, Jeff Moyer jmo...@redhat.com wrote:
  Toshi Kani toshi.k...@hp.com writes:
 
  Since NVDIMMs are installed on memory slots, they expose the NUMA
  topology of a platform.  This patchset adds support of sysfs
  'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
  This enables numactl(8) to accept 'block:' and 'file:' paths of
  pmem and btt devices as shown in the examples below.
numactl --preferred block:pmem0 --show
numactl --preferred file:/dev/pmem0s --show
 
  numactl can be used to bind an application to the locality of
  a target NVDIMM for better performance.  Here is a result of fio
  benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
  remote settings.
 
Local [1] :  4098.3MB/s
Remote [2]:  3718.4MB/s
 
  [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio fs-
 on-pmem0
  [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio fs-
 on-pmem0
 
  Did you post the patches to numactl somewhere?
 
 
 numactl already supports this today.

numactl does have a bug handling partitions under these devices,
because it assumes all storage devices have /devices/pci
in their path as it tries to find the parent device for the
partition.  I think we'll propose a numactl patch for that;
I don't think the drivers can fool it.

Details (from an earlier version of the patch series
in which btt devices were named /dev/nd1, etc.):

strace shows that numactl is trying to find numa_node in very
different locations for /dev/nd1p1 vs. /dev/sda1.

strace for /dev/nd1p1
=
open(/sys/class/block/nd1p1/dev, O_RDONLY) = 4
read(4, 259:1\n, 4095)= 6
close(4)= 0
close(3)= 0
readlink(/sys/class/block/nd1p1, ../../devices/LNXSYSTM:00/LNXSYB..., 1024) 
= 77
open(/sys/class/block/nd1p1/device/numa_node, O_RDONLY) = -1 ENOENT (No such 
file or directory)

strace for /dev/sda1

open(/sys/class/block/sda1/dev, O_RDONLY) = 4
read(4, 8:1\n, 4095)  = 4
close(4)= 0
close(3)= 0
readlink(/sys/class/block/sda1, ../../devices/pci:00/:00..., 1024) 
= 91
open(/sys//devices/pci:00/:00:01.0//numa_node, O_RDONLY) = 3
read(3, 0\n, 4095)= 2
close(3)= 0

The sys/class/block/xxx paths link to:
lrwxrwxrwx. 1 root root 0 May 20 20:42 /sys/class/block/nd1p1 - 
../../devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/btt1/block/nd1/nd1p1
lrwxrwxrwx. 1 root root 0 May 20 20:41 /sys/class/block/sda1 - 
../../devices/pci:00/:00:01.0/:03:00.0/host6/target6:0:0/6:0:0:0/block/sda/sda1


For /dev/sda1, numactl recognizes /devices/pci as
a special path, and strips off everything after the
numbers.  Faced with:
../../devices/pci:00/:00:01.0/:03:00.0/host6/target6:0:0/6:0:0:0/block/sda/sda1

it ends up with this (leaving a sloppy // in the path):
/sys/devices/pci:00/:00:01.0//numa_node

It would also succeed if it ended up with this:
/sys/devices/pci:00/:00:01.0/:03:00.0/numa_node

For /dev/nd1p1 it does not see that string, so just
tries to open /sys/class/block/nd1p1/device/numa_node

There are no device/ subdirectories in the tree for
partition devices (for either sda1 or nd1p1), so this 
fails.


From http://oss.sgi.com/projects/libnuma/
numactl affinity.c:
/* Somewhat hackish: extract device from symlink path.
   Better would be a direct backlink. This knows slightly too
   much about the actual sysfs layout. */
char path[1024];
char *fn = NULL;
if (asprintf(fn, /sys/class/%s/%s, cls, dev)  0 
readlink(fn, path, sizeof path)  0) {
regex_t re;
regmatch_t match[2];
char *p;

regcomp(re, (/devices/pci[0-9a-fA-F:/]+\\.[0-9]+)/,
REG_EXTENDED);
ret = regexec(re, path, 2, match, 0);
regfree(re);
if (ret == 0) {
free(fn);
assert(match[0].rm_so  0);
assert(match[0].rm_eo  0);
path[match[1].rm_eo + 1] = 0;
p = path + match[0].rm_so;
ret = sysfs_node_read(mask, /sys/%s/numa_node, p);
if (ret  0)
return node_parse_failure(ret, NULL, p);
return ret;
}
}
free(fn);

ret = sysfs_node_read(mask, /sys

Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Dan Williams
On Wed, Jun 10, 2015 at 9:20 AM, Elliott, Robert (Server Storage)
elli...@hp.com wrote:
 -Original Message-
 From: Linux-nvdimm [mailto:linux-nvdimm-boun...@lists.01.org] On Behalf Of
 Dan Williams
 Sent: Wednesday, June 10, 2015 9:58 AM
 To: Jeff Moyer
 Cc: linux-nvdimm; Rafael J. Wysocki; linux-kernel@vger.kernel.org; Linux
 ACPI
 Subject: Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

 On Wed, Jun 10, 2015 at 8:54 AM, Jeff Moyer jmo...@redhat.com wrote:
  Toshi Kani toshi.k...@hp.com writes:
 
  Since NVDIMMs are installed on memory slots, they expose the NUMA
  topology of a platform.  This patchset adds support of sysfs
  'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
  This enables numactl(8) to accept 'block:' and 'file:' paths of
  pmem and btt devices as shown in the examples below.
numactl --preferred block:pmem0 --show
numactl --preferred file:/dev/pmem0s --show
 
  numactl can be used to bind an application to the locality of
  a target NVDIMM for better performance.  Here is a result of fio
  benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
  remote settings.
 
Local [1] :  4098.3MB/s
Remote [2]:  3718.4MB/s
 
  [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio fs-
 on-pmem0
  [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio fs-
 on-pmem0
 
  Did you post the patches to numactl somewhere?
 

 numactl already supports this today.

 numactl does have a bug handling partitions under these devices,
 because it assumes all storage devices have /devices/pci
 in their path as it tries to find the parent device for the
 partition.  I think we'll propose a numactl patch for that;
 I don't think the drivers can fool it.

 Details (from an earlier version of the patch series
 in which btt devices were named /dev/nd1, etc.):

 strace shows that numactl is trying to find numa_node in very
 different locations for /dev/nd1p1 vs. /dev/sda1.

 strace for /dev/nd1p1
 =
 open(/sys/class/block/nd1p1/dev, O_RDONLY) = 4
 read(4, 259:1\n, 4095)= 6
 close(4)= 0
 close(3)= 0
 readlink(/sys/class/block/nd1p1, ../../devices/LNXSYSTM:00/LNXSYB..., 
 1024) = 77
 open(/sys/class/block/nd1p1/device/numa_node, O_RDONLY) = -1 ENOENT (No 
 such file or directory)

 strace for /dev/sda1
 
 open(/sys/class/block/sda1/dev, O_RDONLY) = 4
 read(4, 8:1\n, 4095)  = 4
 close(4)= 0
 close(3)= 0
 readlink(/sys/class/block/sda1, ../../devices/pci:00/:00..., 
 1024) = 91
 open(/sys//devices/pci:00/:00:01.0//numa_node, O_RDONLY) = 3
 read(3, 0\n, 4095)= 2
 close(3)= 0

 The sys/class/block/xxx paths link to:
 lrwxrwxrwx. 1 root root 0 May 20 20:42 /sys/class/block/nd1p1 - 
 ../../devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0012:00/ndbus0/btt1/block/nd1/nd1p1
 lrwxrwxrwx. 1 root root 0 May 20 20:41 /sys/class/block/sda1 - 
 ../../devices/pci:00/:00:01.0/:03:00.0/host6/target6:0:0/6:0:0:0/block/sda/sda1


 For /dev/sda1, numactl recognizes /devices/pci as
 a special path, and strips off everything after the
 numbers.  Faced with:
 ../../devices/pci:00/:00:01.0/:03:00.0/host6/target6:0:0/6:0:0:0/block/sda/sda1

 it ends up with this (leaving a sloppy // in the path):
 /sys/devices/pci:00/:00:01.0//numa_node

 It would also succeed if it ended up with this:
 /sys/devices/pci:00/:00:01.0/:03:00.0/numa_node

 For /dev/nd1p1 it does not see that string, so just
 tries to open /sys/class/block/nd1p1/device/numa_node

 There are no device/ subdirectories in the tree for
 partition devices (for either sda1 or nd1p1), so this
 fails.


 From http://oss.sgi.com/projects/libnuma/
 numactl affinity.c:
 /* Somewhat hackish: extract device from symlink path.
Better would be a direct backlink. This knows slightly too
much about the actual sysfs layout. */
 char path[1024];
 char *fn = NULL;
 if (asprintf(fn, /sys/class/%s/%s, cls, dev)  0 
 readlink(fn, path, sizeof path)  0) {
 regex_t re;
 regmatch_t match[2];
 char *p;

 regcomp(re, (/devices/pci[0-9a-fA-F:/]+\\.[0-9]+)/,
 REG_EXTENDED);
 ret = regexec(re, path, 2, match, 0);
 regfree(re);
 if (ret == 0) {
 free(fn);
 assert(match[0].rm_so  0);
 assert(match[0].rm_eo  0);
 path[match[1].rm_eo + 1] = 0;
 p = path + match[0].rm_so;
 ret = sysfs_node_read(mask, /sys/%s/numa_node, p);
 if (ret  0)
 return

Re: [PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-10 Thread Jeff Moyer
Toshi Kani toshi.k...@hp.com writes:

 Since NVDIMMs are installed on memory slots, they expose the NUMA
 topology of a platform.  This patchset adds support of sysfs
 'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
 This enables numactl(8) to accept 'block:' and 'file:' paths of
 pmem and btt devices as shown in the examples below.
   numactl --preferred block:pmem0 --show
   numactl --preferred file:/dev/pmem0s --show

 numactl can be used to bind an application to the locality of
 a target NVDIMM for better performance.  Here is a result of fio
 benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
 remote settings.

   Local [1] :  4098.3MB/s
   Remote [2]:  3718.4MB/s

 [1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio 
 fs-on-pmem0 
 [2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 
 fs-on-pmem0

Did you post the patches to numactl somewhere?

-Jeff
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-09 Thread Toshi Kani
Since NVDIMMs are installed on memory slots, they expose the NUMA
topology of a platform.  This patchset adds support of sysfs
'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
This enables numactl(8) to accept 'block:' and 'file:' paths of
pmem and btt devices as shown in the examples below.
  numactl --preferred block:pmem0 --show
  numactl --preferred file:/dev/pmem0s --show

numactl can be used to bind an application to the locality of
a target NVDIMM for better performance.  Here is a result of fio
benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
remote settings.

  Local [1] :  4098.3MB/s
  Remote [2]:  3718.4MB/s

[1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio  
[2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio 

Patch 1/3 applies on top of the acpica branch of the pm tree.
Patch 2/3-3/3 apply on top of Dan Williams's v5 patch series of 
"libnvdimm: non-volatile memory devices".

---
v2:
 - Add acpi_map_pxm_to_online_node(), which returns an online node.
 - Manage visibility of sysfs numa_node with is_visible. (Dan Williams)
 - Check ACPI_NFIT_PROXIMITY_VALID in spa->flags.

---
Toshi Kani (3):
  1/3 acpi: Add acpi_map_pxm_to_online_node()
  2/3 libnvdimm: Set numa_node to NVDIMM devices
  3/3 libnvdimm: Add sysfs numa_node to NVDIMM devices

---
 drivers/acpi/nfit.c |  7 +++
 drivers/acpi/numa.c | 40 +---
 drivers/nvdimm/btt.c|  2 ++
 drivers/nvdimm/btt_devs.c   |  1 +
 drivers/nvdimm/bus.c| 30 ++
 drivers/nvdimm/namespace_devs.c |  1 +
 drivers/nvdimm/nd.h |  1 +
 drivers/nvdimm/region.c |  1 +
 drivers/nvdimm/region_devs.c|  1 +
 include/linux/acpi.h|  5 +
 include/linux/libnvdimm.h   |  2 ++
 11 files changed, 88 insertions(+), 3 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v2 0/3] Add NUMA support for NVDIMM devices

2015-06-09 Thread Toshi Kani
Since NVDIMMs are installed on memory slots, they expose the NUMA
topology of a platform.  This patchset adds support of sysfs
'numa_node' to I/O-related NVDIMM devices under /sys/bus/nd/devices.
This enables numactl(8) to accept 'block:' and 'file:' paths of
pmem and btt devices as shown in the examples below.
  numactl --preferred block:pmem0 --show
  numactl --preferred file:/dev/pmem0s --show

numactl can be used to bind an application to the locality of
a target NVDIMM for better performance.  Here is a result of fio
benchmark to ext4/dax on an HP DL380 with 2 sockets for local and
remote settings.

  Local [1] :  4098.3MB/s
  Remote [2]:  3718.4MB/s

[1] numactl --preferred block:pmem0 --cpunodebind block:pmem0 fio fs-on-pmem0 
[2] numactl --preferred block:pmem1 --cpunodebind block:pmem1 fio fs-on-pmem0

Patch 1/3 applies on top of the acpica branch of the pm tree.
Patch 2/3-3/3 apply on top of Dan Williams's v5 patch series of 
libnvdimm: non-volatile memory devices.

---
v2:
 - Add acpi_map_pxm_to_online_node(), which returns an online node.
 - Manage visibility of sysfs numa_node with is_visible. (Dan Williams)
 - Check ACPI_NFIT_PROXIMITY_VALID in spa-flags.

---
Toshi Kani (3):
  1/3 acpi: Add acpi_map_pxm_to_online_node()
  2/3 libnvdimm: Set numa_node to NVDIMM devices
  3/3 libnvdimm: Add sysfs numa_node to NVDIMM devices

---
 drivers/acpi/nfit.c |  7 +++
 drivers/acpi/numa.c | 40 +---
 drivers/nvdimm/btt.c|  2 ++
 drivers/nvdimm/btt_devs.c   |  1 +
 drivers/nvdimm/bus.c| 30 ++
 drivers/nvdimm/namespace_devs.c |  1 +
 drivers/nvdimm/nd.h |  1 +
 drivers/nvdimm/region.c |  1 +
 drivers/nvdimm/region_devs.c|  1 +
 include/linux/acpi.h|  5 +
 include/linux/libnvdimm.h   |  2 ++
 11 files changed, 88 insertions(+), 3 deletions(-)
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/