Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1211062 > unrolled thread

is this a problem of numactl in RedHat7.0 ?

Started byXishi Qiu <qiuxishi@huawei.com>
First post2015-08-21 11:40 +0200
Last post2015-08-24 06:30 +0200
Articles 4 — 2 participants

Back to article view | Back to linux.kernel


Contents

  is this a problem of numactl in RedHat7.0 ? Xishi Qiu <qiuxishi@huawei.com> - 2015-08-21 11:40 +0200
    Re: is this a problem of numactl in RedHat7.0 ? Rik van Riel <riel@redhat.com> - 2015-08-21 23:00 +0200
      Re: is this a problem of numactl in RedHat7.0 ? Xishi Qiu <qiuxishi@huawei.com> - 2015-08-24 05:40 +0200
      Re: is this a problem of numactl in RedHat7.0 ? Xishi Qiu <qiuxishi@huawei.com> - 2015-08-24 06:30 +0200

#1211062 — is this a problem of numactl in RedHat7.0 ?

FromXishi Qiu <qiuxishi@huawei.com>
Date2015-08-21 11:40 +0200
Subjectis this a problem of numactl in RedHat7.0 ?
Message-ID<pZQXO-86r-53@gated-at.bofh.it>
I use numactl(--localalloc) tool run a test case, but it shows that
the numa policy is prefer, I don't know why.

[root@localhost test]# numactl --hard
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 12 13 14 15 16 17
node 0 size: 32739 MB
node 0 free: 29134 MB
node 1 cpus: 6 7 8 9 10 11 18 19 20 21 22 23
node 1 size: 32768 MB
node 1 free: 31682 MB
node distances:
node   0   1
  0:  10  20
  1:  20  10

[root@localhost test]# numactl --localalloc --physcpubind=22 ./test.exe

[root@localhost linux-3.10-redhat]# ps -ef| grep test
root      18532  13994  1 05:24 pts/0    00:00:00 ./test.exe
root      18534  14037  0 05:24 pts/1    00:00:00 grep --color=auto test
[root@localhost linux-3.10-redhat]# cat /proc/18532/numa_maps
00400000 prefer:0 file=/home/qiuxishi/test/test.exe mapped=1 N0=1
00600000 prefer:0 file=/home/qiuxishi/test/test.exe anon=1 dirty=1 N1=1
00601000 prefer:0 file=/home/qiuxishi/test/test.exe anon=1 dirty=1 N1=1
7f1a15b9b000 prefer:0 file=/usr/lib64/libc-2.17.so mapped=51 mapmax=44 N0=49 N1=2
7f1a15d51000 prefer:0 file=/usr/lib64/libc-2.17.so
7f1a15f51000 prefer:0 file=/usr/lib64/libc-2.17.so anon=4 dirty=4 N1=4
7f1a15f55000 prefer:0 file=/usr/lib64/libc-2.17.so anon=2 dirty=2 N1=2
7f1a15f57000 prefer:0 anon=3 dirty=3 N1=3
7f1a15f5c000 prefer:0 file=/usr/lib64/ld-2.17.so mapped=28 mapmax=15 N0=23 N1=5
7f1a16166000 prefer:0 anon=3 dirty=3 N1=3
7f1a1617c000 prefer:0 anon=1 dirty=1 N1=1
7f1a1617d000 prefer:0 file=/usr/lib64/ld-2.17.so anon=1 dirty=1 N1=1
7f1a1617e000 prefer:0 file=/usr/lib64/ld-2.17.so anon=1 dirty=1 N1=1
7f1a1617f000 prefer:0 anon=1 dirty=1 N1=1
7ffd0d2ed000 prefer:0 stack anon=3 dirty=3 N1=3
7ffd0d3fc000 prefer:0

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

[toc] | [next] | [standalone]


#1211327

FromRik van Riel <riel@redhat.com>
Date2015-08-21 23:00 +0200
Message-ID<q01zP-6sW-1@gated-at.bofh.it>
In reply to#1211062
On 08/21/2015 05:27 AM, Xishi Qiu wrote:
> I use numactl(--localalloc) tool run a test case, but it shows that
> the numa policy is prefer, I don't know why.

The kernel implements MPOL_PREFERRED and MPOL_LOCAL
in the same way. Look at this code in mpol_new(),
in mm/mempolicy.c:

         /*
          * MPOL_PREFERRED cannot be used with MPOL_F_STATIC_NODES or
          * MPOL_F_RELATIVE_NODES if the nodemask is empty (local 
allocation).
          * All other modes require a valid pointer to a non-empty nodemask.
          */
         if (mode == MPOL_PREFERRED) {
                 if (nodes_empty(*nodes)) {
                         if (((flags & MPOL_F_STATIC_NODES) ||
                              (flags & MPOL_F_RELATIVE_NODES)))
                                 return ERR_PTR(-EINVAL);
                 }
         } else if (mode == MPOL_LOCAL) {
                 if (!nodes_empty(*nodes))
                         return ERR_PTR(-EINVAL);
                 mode = MPOL_PREFERRED;
         } else if (nodes_empty(*nodes))
                 return ERR_PTR(-EINVAL);


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

[toc] | [prev] | [next] | [standalone]


#1211750

FromXishi Qiu <qiuxishi@huawei.com>
Date2015-08-24 05:40 +0200
Message-ID<q0QM1-49d-1@gated-at.bofh.it>
In reply to#1211327
On 2015/8/22 4:53, Rik van Riel wrote:

> On 08/21/2015 05:27 AM, Xishi Qiu wrote:
>> I use numactl(--localalloc) tool run a test case, but it shows that
>> the numa policy is prefer, I don't know why.
> 
> The kernel implements MPOL_PREFERRED and MPOL_LOCAL
> in the same way. Look at this code in mpol_new(),
> in mm/mempolicy.c:
> 
>         /*
>          * MPOL_PREFERRED cannot be used with MPOL_F_STATIC_NODES or
>          * MPOL_F_RELATIVE_NODES if the nodemask is empty (local allocation).
>          * All other modes require a valid pointer to a non-empty nodemask.
>          */
>         if (mode == MPOL_PREFERRED) {
>                 if (nodes_empty(*nodes)) {
>                         if (((flags & MPOL_F_STATIC_NODES) ||
>                              (flags & MPOL_F_RELATIVE_NODES)))
>                                 return ERR_PTR(-EINVAL);
>                 }
>         } else if (mode == MPOL_LOCAL) {
>                 if (!nodes_empty(*nodes))
>                         return ERR_PTR(-EINVAL);
>                 mode = MPOL_PREFERRED;
>         } else if (nodes_empty(*nodes))
>                 return ERR_PTR(-EINVAL);
> 

Hi Rik,

Thank you for your reply. I find the reason is this patch,
and it is not backport to RedHat 7.0

8790c71a18e5d2d93532ae250bcf5eddbba729cd

diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index 873de7e..ae3c8f3 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -2930,7 +2930,7 @@ void mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol)
        unsigned short mode = MPOL_DEFAULT;
        unsigned short flags = 0;

-       if (pol && pol != &default_policy) {
+       if (pol && pol != &default_policy && !(pol->flags & MPOL_F_MORON)) {
                mode = pol->mode;
                flags = pol->flags;
        }

Thanks,
Xishi Qiu

> 
> 
> 



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

[toc] | [prev] | [next] | [standalone]


#1211771

FromXishi Qiu <qiuxishi@huawei.com>
Date2015-08-24 06:30 +0200
Message-ID<q0Ryq-5kB-5@gated-at.bofh.it>
In reply to#1211327
On 2015/8/22 4:53, Rik van Riel wrote:

> On 08/21/2015 05:27 AM, Xishi Qiu wrote:
>> I use numactl(--localalloc) tool run a test case, but it shows that
>> the numa policy is prefer, I don't know why.
> 
> The kernel implements MPOL_PREFERRED and MPOL_LOCAL
> in the same way. Look at this code in mpol_new(),
> in mm/mempolicy.c:
> 

user:
"numactl --localalloc" wil call
	main()
	  numa_set_localalloc()
	    setpol(MPOL_DEFAULT, numa_no_nodes_ptr);
	      set_mempolicy()
	        syscall(__NR_set_mempolicy,mode,nmask,maxnode);

kernel:
	do_set_mempolicy()
	  mpol_new()
		if (mode == MPOL_DEFAULT) {
			if (nodes && !nodes_empty(*nodes))
				return ERR_PTR(-EINVAL);
			return NULL;  // return from here
		}

>         /*
>          * MPOL_PREFERRED cannot be used with MPOL_F_STATIC_NODES or
>          * MPOL_F_RELATIVE_NODES if the nodemask is empty (local allocation).
>          * All other modes require a valid pointer to a non-empty nodemask.
>          */
>         if (mode == MPOL_PREFERRED) {
>                 if (nodes_empty(*nodes)) {
>                         if (((flags & MPOL_F_STATIC_NODES) ||
>                              (flags & MPOL_F_RELATIVE_NODES)))
>                                 return ERR_PTR(-EINVAL);
>                 }
>         } else if (mode == MPOL_LOCAL) {
>                 if (!nodes_empty(*nodes))
>                         return ERR_PTR(-EINVAL);
>                 mode = MPOL_PREFERRED;
>         } else if (nodes_empty(*nodes))
>                 return ERR_PTR(-EINVAL);
> 
> 
> 
> 



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

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web