Hello community,

here is the log from the commit of package numactl for openSUSE:Factory checked 
in at 2013-10-20 10:53:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/numactl (Old)
 and      /work/SRC/openSUSE:Factory/.numactl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "numactl"

Changes:
--------
--- /work/SRC/openSUSE:Factory/numactl/numactl.changes  2013-04-17 
23:12:23.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.numactl.new/numactl.changes     2013-10-20 
10:53:04.000000000 +0200
@@ -1,0 +2,13 @@
+Wed Oct  9 14:39:00 UTC 2013 - [email protected]
+
+- Update to version 2.0.9:
+- 130207 Add a prototype for numa_bitmask_weight (Cliff W.)
+- 130725 Fix hubstats huge pages bug, version number, man page (Bill Gray)
+- 130726 Disable the regress-io test (Cliff W.)
+- 130730 Fix typos in numactl man page; add short opts to --help
+  (Petr Holasek)
+- 130906 numactl: option --all/-a added for policy settings (Petr Holasek)
+- 130906 libnuma: new function numa_run_on_node_mask_all (Petr Holasek)
+ 
+
+-------------------------------------------------------------------

Old:
----
  numactl-2.0.8.tar.gz

New:
----
  numactl-2.0.9.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ numactl.spec ++++++
--- /var/tmp/diff_new_pack.yd0rE5/_old  2013-10-20 10:53:05.000000000 +0200
+++ /var/tmp/diff_new_pack.yd0rE5/_new  2013-10-20 10:53:05.000000000 +0200
@@ -22,7 +22,7 @@
 Summary:        NUMA Policy Control
 License:        GPL-2.0+
 Group:          System/Management
-Version:        2.0.8
+Version:        2.0.9
 Release:        0
 # bug437293
 %ifarch ppc64

++++++ numactl-2.0.8.tar.gz -> numactl-2.0.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/CHANGES new/numactl-2.0.9/CHANGES
--- old/numactl-2.0.8/CHANGES   2012-10-11 22:52:24.000000000 +0200
+++ new/numactl-2.0.9/CHANGES   2013-10-08 23:34:57.000000000 +0200
@@ -307,7 +307,7 @@
 - Fix makefile to remove move_pages on make clean (Andi)
 - Fix numa_node_to_cpus() (Sharyathi Nagesh)
 - Rename 'thread' to 'task' (L.S.)
-- Remove other trailing spaces (Cliff)
+- Remove other trailing spaces (Cliff W.)
 - Man page correction/clarification for numa_node_to_cpus() (Ian Wienand)
 - Man page clarification for numactl (Mike MacCana)
 - Fix numactl --hardware for cpu-less nodes (Thomas Renninger)
@@ -383,3 +383,15 @@
 - 121011 Allow an install location PREFIX in the Makefile (Frank Tampe)
 
 2.0.8 released Oct, 2012
+
+2.0.9-rc1
+- 130207 Add a prototype for numa_bitmask_weight (Cliff W.)
+2.0.9-rc2
+- 130725 Fix hubstats huge pages bug, version number, man page (Bill Gray)
+- 130726 Disable the regress-io test (Cliff W.)
+- 130730 Fix typos in numactl man page; add short opts to --help (Petr Holasek)
+2.0.9-rc3
+- 130906 numactl: option --all/-a added for policy settings (Petr Holasek)
+- 130906 libnuma: new function numa_run_on_node_mask_all (Petr Holasek)
+
+2.0.9 released Oct, 2013
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/Makefile new/numactl-2.0.9/Makefile
--- old/numactl-2.0.8/Makefile  2012-10-11 22:52:24.000000000 +0200
+++ new/numactl-2.0.9/Makefile  2013-10-08 23:34:57.000000000 +0200
@@ -35,7 +35,7 @@
              test/node-parse rtnetlink.o test/A numastat
 SOURCES := bitops.c libnuma.c distance.c memhog.c numactl.c numademo.c \
        numamon.c shm.c stream_lib.c stream_main.c syscall.c util.c mt.c \
-       clearcache.c test/*.c affinity.c sysfs.c rtnetlink.c
+       clearcache.c test/*.c affinity.c sysfs.c rtnetlink.c numastat.c
 
 ifeq ($(strip $(PREFIX)),)
 prefix := /usr
@@ -209,7 +209,9 @@
 regress2:
        cd test ; ./regress2
 
-regress3:
-       cd test ; ./regress-io
+# regress-io is known not to work
+# regress3:
+#      cd test ; ./regress-io
 
-test: all regress1 regress2 test_numademo regress3
+# test: all regress1 regress2 test_numademo regress3
+test: all regress1 regress2 test_numademo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/README new/numactl-2.0.9/README
--- old/numactl-2.0.8/README    2012-10-11 22:52:24.000000000 +0200
+++ new/numactl-2.0.9/README    2013-10-08 23:34:57.000000000 +0200
@@ -31,7 +31,7 @@
 It also uses a public domain Mersenne Twister implementation from
 Michael Brundage.
 
-Version 2.0.8: (C)2012 SGI
+Version 2.0.9: (C)2013 SGI
 
 Author:
 Andi Kleen, SUSE Labs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/diff.Makefile 
new/numactl-2.0.9/diff.Makefile
--- old/numactl-2.0.8/diff.Makefile     2012-10-11 22:52:24.000000000 +0200
+++ new/numactl-2.0.9/diff.Makefile     1970-01-01 01:00:00.000000000 +0100
@@ -1,26 +0,0 @@
-diff -ruN numactl-2.0.8-rc5.orig/Makefile numactl-2.0.8-rc5.new/Makefile
---- numactl-2.0.8-rc5.orig/Makefile    2012-08-23 15:50:37.000000000 -0400
-+++ numactl-2.0.8-rc5.new/Makefile     2012-09-06 13:58:40.056795146 -0400
-@@ -32,7 +32,7 @@
-             test/mbind_mig_pages test/migrate_pages \
-             migratepages migspeed migspeed.o libnuma.a \
-             test/move_pages test/realloc_test sysfs.o affinity.o \
--            test/node-parse rtnetlink.o test/A
-+            test/node-parse rtnetlink.o test/A numastat
-  SOURCES := bitops.c libnuma.c distance.c memhog.c numactl.c numademo.c \
-       numamon.c shm.c stream_lib.c stream_main.c syscall.c util.c mt.c \
-       clearcache.c test/*.c affinity.c sysfs.c rtnetlink.c
-@@ -45,10 +45,12 @@
-       test/tshared stream test/mynode test/pagesize test/ftok test/prefered \
-       test/randmap test/nodemap test/distance test/tbitmap test/move_pages \
-       test/mbind_mig_pages test/migrate_pages test/realloc_test libnuma.a \
--     test/node-parse
-+     test/node-parse numastat
-
-  numactl: numactl.o util.o shm.o bitops.o libnuma.so
-
-+numastat: CFLAGS += -std=gnu99
-+
-  migratepages: migratepages.c util.o bitops.o libnuma.so
-
-  migspeed: LDLIBS += -lrt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/diff.numastat 
new/numactl-2.0.9/diff.numastat
--- old/numactl-2.0.8/diff.numastat     2012-10-11 22:52:24.000000000 +0200
+++ new/numactl-2.0.9/diff.numastat     1970-01-01 01:00:00.000000000 +0100
@@ -1,95 +0,0 @@
-diff -ruN numactl-2.0.8-rc5.orig/numastat numactl-2.0.8-rc5.new/numastat
---- numactl-2.0.8-rc5.orig/numastat    2012-08-23 15:50:37.000000000 -0400
-+++ numactl-2.0.8-rc5.new/numastat     1969-12-31 19:00:00.000000000 -0500
-@@ -1,91 +0,0 @@
--#!/usr/bin/perl
--# Print numa statistics for all nodes
--# Copyright (C) 2003,2004 Andi Kleen, SuSE Labs.
--#
--# numastat is free software; you can redistribute it and/or
--# modify it under the terms of the GNU General Public
--# License as published by the Free Software Foundation; version
--# 2.
--#
--# numastat is distributed in the hope that it will be useful,
--# but WITHOUT ANY WARRANTY; without even the implied warranty of
--# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
--# General Public License for more details.
--
--# You should find a copy of v2 of the GNU General Public License somewhere
--# on your Linux system; if not, write to the Free Software Foundation,
--# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
--#
--# Example: NUMASTAT_WIDTH=80 watch -n1 numastat
--#
--
--# output width
--$WIDTH=80;
--if (defined($ENV{'NUMASTAT_WIDTH'})) {
--      $WIDTH=$ENV{'NUMASTAT_WIDTH'};
--} else {
--      use POSIX;
--      if (POSIX::isatty(fileno(STDOUT))) {
--              if (open(R, "resize |")) {
--                      while (<R>) {
--                              $WIDTH=$1 if /COLUMNS=(\d+)/;
--                      }       
--                      close R;
--              }
--      } else {
--              # don't split it up for easier parsing
--              $WIDTH=10000000;
--      }
--}
--$WIDTH = 32 if $WIDTH < 32;
--
--if (! -d "/sys/devices/system/node" ) {
--      print STDERR "sysfs not mounted or system not NUMA aware\n";
--      exit 1;
--}
--
--%stat = ();
--$title = "";
--$mode = 0;
--opendir(NODES, "/sys/devices/system/node") || exit 1;
--foreach $nd (readdir(NODES)) {
--      next unless $nd =~ /node(\d+)/;
--      # On newer kernels, readdir may enumerate the 'node(\d+) subdirs
--      # in opposite order from older kernels--e.g., node{0,1,2,...}
--      # as opposed to node{N,N-1,N-2,...}.  Accomodate this by
--      # switching to new mode so that the stats get emitted in
--      # the same order.
--        #print "readdir(NODES) returns $nd\n";
--      if (!$title && $nd =~ /node0/) {
--              $mode = 1;
--      }
--      open(STAT, "/sys/devices/system/node/$nd/numastat") ||
--                      die "cannot open $nd: $!\n";
--      if (! $mode) {
--              $title = sprintf("%16s",$nd) . $title;
--      } else {
--              $title = $title . sprintf("%16s",$nd);
--      }
--      @fields = ();
--      while (<STAT>) {
--              ($name, $val) = split;
--              if (! $mode) {
--                      $stat{$name} = sprintf("%16u", $val) . $stat{$name};
--              } else {
--                      $stat{$name} = $stat{$name} . sprintf("%16u", $val);
--              }
--              push(@fields, $name);
--      }
--      close STAT;
--}
--closedir NODES;
--
--$numfields = int(($WIDTH - 16) / 16);
--$l = 16 * $numfields;
--for ($i = 0; $i < length($title); $i += $l) {
--      print "\n" if $i > 0;
--      printf "%16s%s\n","",substr($title,$i,$l);
--      foreach (@fields) {
--              printf "%-16s%s\n",$_,substr($stat{$_},$i,$l);
--      }
--}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/diff.numastat.8b 
new/numactl-2.0.9/diff.numastat.8b
--- old/numactl-2.0.8/diff.numastat.8b  2012-10-11 22:52:24.000000000 +0200
+++ new/numactl-2.0.9/diff.numastat.8b  1970-01-01 01:00:00.000000000 +0100
@@ -1,229 +0,0 @@
-diff -ruN numactl-2.0.8-rc5.orig/numastat.8 numactl-2.0.8-rc5.new/numastat.8
---- numactl-2.0.8-rc5.orig/numastat.8  2012-08-23 15:50:37.000000000 -0400
-+++ numactl-2.0.8-rc5.new/numastat.8   2012-10-07 00:05:46.676484265 -0400
-@@ -1,82 +1,155 @@
--.\" t
--.\" Copyright 2004 Andi Kleen, SuSE Labs.
--.\"
--.\" Permission is granted to make and distribute verbatim copies of this
--.\" manual provided the copyright notice and this permission notice are
--.\" preserved on all copies.
--.\"
--.\" Permission is granted to copy and distribute modified versions of this
--.\" manual under the conditions for verbatim copying, provided that the
--.\" entire resulting derived work is distributed under the terms of a
--.\" permission notice identical to this one.
--.\"
--.\" Since the Linux kernel and libraries are constantly changing, this
--.\" manual page may be incorrect or out-of-date.  The author(s) assume no
--.\" responsibility for errors or omissions, or for damages resulting from
--.\" the use of the information contained herein.
--.\"
--.\" Formatted or processed versions of this manual, if unaccompanied by
--.\" the source, must acknowledge the copyright and authors of this work.
--.TH NUMACTL 8 "Nov 2004" "SuSE Labs" "Linux Administrator's Manual"
--.SH NAME
--numastat \- Print statistics about NUMA memory allocation
--.SH SYNOPSIS
--numastat
--.SH DESCRIPTION
-+.TH "numastat" "8" "1.0.0" "Bill Gray" "Administration"
-+.SH "numastat"
-+.LP
-+\fBnumastat\fP \- Show per-NUMA-node memory statistics for processes and the 
operating system
-+.SH "SYNTAX"
-+.LP
-+\fBnumastat\fP
-+.br
-+.LP
-+\fBnumastat\fP [\fI\-V\fP]
-+.br
-+.LP
-+\fBnumastat\fP [\fI\<PID>|<pattern>...\fP]
-+.br
-+.LP
-+\fBnumastat\fP [\fI\-c\fP] [\fI\-m\fP] [\fI\-n\fP] [\fI\-p 
<PID>|<pattern>\fP] [\fI\-s[<node>]\fP] [\fI\-v\fP] [\fI\-z\fP] 
[\fI\<PID>|<pattern>...\fP]
-+.br
-+.SH "DESCRIPTION"
-+.LP
- .B numastat
--displays NUMA allocations statistics from the kernel memory allocator.
--Each process has NUMA policies that specifies on which node pages
--are allocated. See
--.I set_mempolicy(2)
--or
--.I numactl(8)
--on details of the available policies.
--The numastat counters keep track on what nodes memory is finally allocated.
--
--The counters are separated for each node. Each count event is the allocation
--of a page of memory.
--
-+with no command options or arguments at all, displays per-node NUMA hit and
-+miss system statistics from the kernel memory allocator.  This default
-+\fBnumastat\fP behavior is strictly compatible with the previous long-standing
-+\fBnumastat\fP perl script, written by Andi Kleen.  The default \fBnumastat\fP
-+statistics shows per-node numbers (in units of pages of memory) in these 
categories:
-+.LP
- .B numa_hit
--is the number of allocations where an allocation was intended for
--that node and succeeded there.
--
-+is memory successfully allocated on this node as intended.
-+.LP
- .B numa_miss
--shows how often an allocation was intended for this node, but ended up
--on another node due to low memory.
--
-+is memory allocated on this node despite the process preferring some 
different node. Each
-+.I numa_miss
-+has a
-+.I numa_foreign
-+on another node.
-+.LP
- .B numa_foreign
--is the number of allocations that were intended for another node,
--but ended up on this node.  Each
-+is memory intended for this node, but actually allocated on some different 
node.  Each
- .I numa_foreign
--event has a
-+has a
- .I numa_miss
-  on another node.
--
-+.LP
-  .B interleave_hit
--is the number of interleave policy allocations that were intended for a
--specific node and succeeded there.
--
-+is interleaved memory successfully allocated on this node as intended.
-+.LP
- .B local_node
--is incremented when a process running on the node allocated
--memory on the same node.
--
-+is memory allocated on this node while a process was running on it.
-+.LP
- .B other_node
--is incremented when a process running on another node allocated memory on 
that node.
--.SH SEE ALSO
--.I numactl(8)
--.I set_mempolicy(2)
--.I numa(3)
-+is memory allocated on this node while a process was running on some other 
node.
-+.LP
-+Any supplied options or arguments with the \fBnumastat\fP command will
-+significantly change both the content and the format of the display.  
Specified
-+options will cause display units to change to megabytes of memory, and will
-+change other specific behaviors of \fBnumastat\fP as described below.
-+.SH "OPTIONS"
-+.LP
-+.TP
-+\fB\-c\fR
-+Minimize table display width by dynamically shrinking column widths based on
-+data contents.  With this option, amounts of memory will be rounded to the
-+nearest megabyte (rather than the usual display with two decimal places).
-+Column width and inter-column spacing will be somewhat unpredictable with this
-+option, but the more dense display will be very useful on systems with many
-+NUMA nodes.
-+.TP
-+\fB\-m\fR
-+Show the meminfo-like system-wide memory usage information.  This option
-+produces a per-node breakdown of memory usage information similar to that 
found
-+in /proc/meminfo.
-+.TP
-+\fB\-n\fR
-+Show the original \fBnumastat\fP statistics info.  This will show the same
-+information as the default \fBnumastat\fP behavior but the units will be 
megabytes of
-+memory, and there will be other formatting and layout changes versus the
-+original \fBnumastat\fP behavior.
-+.TP
-+\fB\-p\fR <\fBPID\fP> or <\fBpattern\fP>
-+Show per-node memory allocation information for the specified PID or pattern.
-+If the \-p argument is only digits, it is assumed to be a numerical PID.  If
-+the argument characters are not only digits, it is assumed to be a text
-+fragment pattern to search for in process command lines.  For example,
-+\fBnumastat -p qemu\fP will attempt to find and show information for processes
-+with "qemu" in the command line.  Any command line arguments remaining after
-+\fBnumastat\fP option flag processing is completed, are assumed to be
-+additional <\fBPID\fP> or <\fBpattern\fP> process specifiers.  In this sense,
-+the \fB\-p\fP option flag is optional: \fBnumastat qemu\fP is equivalent to
-+\fBnumastat -p qemu\fP
-+.TP
-+\fB\-s[<node>]\fR
-+Sort the table data in descending order before displaying it, so the biggest
-+memory consumers are listed first.  With no specified <node>, the table will 
be
-+sorted by the total column.  If the optional <node> argument is supplied, the
-+data will be sorted by the <node> column.  Note that <node> must follow the
-+\fB\-s\fP immediately with no intermediate white space (e.g., \fBnumastat
-+\-s2\fP).
-+.TP
-+\fB\-v\fR
-+Make some reports more verbose.  In particular, process information for
-+multiple processes will display detailed information for each process.
-+Normally when per-node information for multiple processes is displayed, only
-+the total lines are shown.
-+.TP
-+\fB\-V\fR
-+Display \fBnumastat\fP version information and exit.
-+.TP
-+\fB\-z\fR
-+Skip display of table rows and columns of only zero valuess.  This can be used
-+to greatly reduce the amount of uninteresting zero data on systems with many
-+NUMA nodes.  Note that when rows or columns of zeros are still displayed with
-+this option, that probably means there is at least one value in the row or
-+column that is actually non-zero, but rounded to zero for display.
- .SH NOTES
--numastat output is only available on NUMA systems.
--
--numastat assumes the output terminal has a width of 80 characters
--and tries to format the output accordingly.
--.SH EXAMPLES
--.I watch -n1 numastat
-+\fBnumastat\fP attempts to fold each table display so it will be conveniently
-+readable on the output terminal.  Normally a terminal width of 80 characters 
is
-+assumed.  When the \fBresize\fP command is available, \fBnumastat\fP attempts
-+to dynamically determine and fine tune the output tty width from \fBresize\fP
-+output.  If \fBnumastat\fP output is not to a tty, very long output lines can
-+be produced, depending on how many NUMA nodes are present.  In all cases,
-+output width can be explicitly specified via the \fBNUMASTAT_WIDTH\fP
-+environment variable.  For example, \fBNUMASTAT_WIDTH=100  numastat\fP.  On
-+systems with many NUMA nodes, \fBnumastat \-c \-z ....\fP can be very helpful
-+to selectively reduce the amount of displayed information.
-+.SH "ENVIRONMENT VARIABLES"
-+.LP
-+.TP
-+NUMASTAT_WIDTH
-+.SH "FILES"
-+.LP
-+\fI/proc/*/numa_maps\fP
-+.br
-+\fI/sys/devices/system/node/node*/meminfo\fP
-+.br
-+\fI/sys/devices/system/node/node*/numastat\fP
-+.SH "EXAMPLES"
-+.I numastat \-c \-z \-m \-n
-+.br
-+.I numastat \-czs libvirt kvm qemu
-+.br
-+.I watch \-n1 numastat
- .br
--.I watch -n1 --differences=accumulative numastat
--.SH FILES
--/sys/devices/system/node/node*/numastat
--.SH BUGS
--The output formatting on machines with a large number of nodes
--could be improved.
-+.I watch \-n1 \-\-differences=cumulative numastat
-+.SH "AUTHORS"
-+.LP
-+The original \fBnumastat\fP perl script was written circa 2003 by Andi Kleen
-+<[email protected]>.  The current \fBnumastat\fP program was written in 
2012
-+by Bill Gray <[email protected]> to be compatible by default with the original,
-+and to add options to display per-node system memory usage and per-node 
process
-+memory allocation.
-+.SH "SEE ALSO"
-+.LP
-+.BR numactl (8),
-+.BR set_mempolicy( 2),
-+.BR numa (3)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/diff_numastat.8 
new/numactl-2.0.9/diff_numastat.8
--- old/numactl-2.0.8/diff_numastat.8   2012-10-11 22:52:24.000000000 +0200
+++ new/numactl-2.0.9/diff_numastat.8   1970-01-01 01:00:00.000000000 +0100
@@ -1,218 +0,0 @@
-diff -ruN numactl-2.0.8-rc5.orig/numastat.8 numactl-2.0.8-rc5.new/numastat.8
---- numactl-2.0.8-rc5.orig/numastat.8  2012-08-23 15:50:37.000000000 -0400
-+++ numactl-2.0.8-rc5.new/numastat.8   2012-10-07 00:05:46.676484265 -0400
-@@ -1,82 +1,155 @@
--.\" t
--.\" Copyright 2004 Andi Kleen, SuSE Labs.
--.\"
--.\" Permission is granted to make and distribute verbatim copies of this
--.\" manual provided the copyright notice and this permission notice are
--.\" preserved on all copies.
--.\"
--.\" Permission is granted to copy and distribute modified versions of this
--.\" manual under the conditions for verbatim copying, provided that the
--.\" entire resulting derived work is distributed under the terms of a
--.\" permission notice identical to this one.
--.\"
--.\" Since the Linux kernel and libraries are constantly changing, this
--.\" manual page may be incorrect or out-of-date.  The author(s) assume no
--.\" responsibility for errors or omissions, or for damages resulting from
--.\" the use of the information contained herein.
--.\"
--.\" Formatted or processed versions of this manual, if unaccompanied by
--.\" the source, must acknowledge the copyright and authors of this work.
--.TH NUMACTL 8 "Nov 2004" "SuSE Labs" "Linux Administrator's Manual"
--.SH NAME
--numastat \- Print statistics about NUMA memory allocation
--.SH SYNOPSIS
--numastat
--.SH DESCRIPTION
-+.TH "numastat" "8" "1.0.0" "Bill Gray" "Administration"
-+.SH "numastat"
-+.LP
-+\fBnumastat\fP \- Show per-NUMA-node memory statistics for processes and the 
operating system
-+.SH "SYNTAX"
-+.LP
-+\fBnumastat\fP
-+.br
-+.LP
-+\fBnumastat\fP [\fI\-V\fP]
-+.br
-+.LP
-+\fBnumastat\fP [\fI\<PID>|<pattern>...\fP]
-+.br
-+.LP
-+\fBnumastat\fP [\fI\-c\fP] [\fI\-m\fP] [\fI\-n\fP] [\fI\-p 
<PID>|<pattern>\fP] [\fI\-s[<node>]\fP] [\fI\-v\fP] [\fI\-z\fP] 
[\fI\<PID>|<pattern>...\fP]
-+.br
-+.SH "DESCRIPTION"
-+.LP
-  .B numastat
--displays NUMA allocations statistics from the kernel memory allocator.
--Each process has NUMA policies that specifies on which node pages
--are allocated. See
--.I set_mempolicy(2)
--or
--.I numactl(8)
--on details of the available policies.
--The numastat counters keep track on what nodes memory is finally allocated.
--
--The counters are separated for each node. Each count event is the allocation
--of a page of memory.
--
-+with no command options or arguments at all, displays per-node NUMA hit and
-+miss system statistics from the kernel memory allocator.  This default
-+\fBnumastat\fP behavior is strictly compatible with the previous long-standing
-+\fBnumastat\fP perl script, written by Andi Kleen.  The default \fBnumastat\fP
-+statistics shows per-node numbers (in units of pages of memory) in these 
categories:
-+.LP .B numa_hit
--is the number of allocations where an allocation was intended for
--that node and succeeded there.
--
-+is memory successfully allocated on this node as intended.
-+.LP .B numa_miss
--shows how often an allocation was intended for this node, but ended up
--on another node due to low memory.
--
-+is memory allocated on this node despite the process preferring some 
different node. Each
-+.I numa_miss
-+has a
-+.I numa_foreign
-+on another node.
-+.LP .B numa_foreign
--is the number of allocations that were intended for another node,
--but ended up on this node.  Each
-+is memory intended for this node, but actually allocated on some different 
node.  Each .I numa_foreign
--event has a
-+has a .I numa_miss on another node.
--
-+.LP .B interleave_hit
--is the number of interleave policy allocations that were intended for a
--specific node and succeeded there.
--
-+is interleaved memory successfully allocated on this node as intended.
-+.LP .B local_node
--is incremented when a process running on the node allocated
--memory on the same node.
--
-+is memory allocated on this node while a process was running on it.
-+.LP .B other_node
--is incremented when a process running on another node allocated memory on 
that node.
--.SH SEE ALSO
--.I numactl(8)
--.I set_mempolicy(2)
--.I numa(3)
-+is memory allocated on this node while a process was running on some other 
node.
-+.LP
-+Any supplied options or arguments with the \fBnumastat\fP command will
-+significantly change both the content and the format of the display.  
Specified
-+options will cause display units to change to megabytes of memory, and will
-+change other specific behaviors of \fBnumastat\fP as described below.
-+.SH "OPTIONS"
-+.LP
-+.TP
-+\fB\-c\fR
-+Minimize table display width by dynamically shrinking column widths based on
-+data contents.  With this option, amounts of memory will be rounded to the
-+nearest megabyte (rather than the usual display with two decimal places).
-+Column width and inter-column spacing will be somewhat unpredictable with this
-+option, but the more dense display will be very useful on systems with many
-+NUMA nodes.
-+.TP
-+\fB\-m\fR
-+Show the meminfo-like system-wide memory usage information.  This option
-+produces a per-node breakdown of memory usage information similar to that 
found
-+in /proc/meminfo.
-+.TP
-+\fB\-n\fR
-+Show the original \fBnumastat\fP statistics info.  This will show the same
-+information as the default \fBnumastat\fP behavior but the units will be 
megabytes of
-+memory, and there will be other formatting and layout changes versus the
-+original \fBnumastat\fP behavior.
-+.TP
-+\fB\-p\fR <\fBPID\fP> or <\fBpattern\fP>
-+Show per-node memory allocation information for the specified PID or pattern.
-+If the \-p argument is only digits, it is assumed to be a numerical PID.  If
-+the argument characters are not only digits, it is assumed to be a text
-+fragment pattern to search for in process command lines.  For example,
-+\fBnumastat -p qemu\fP will attempt to find and show information for processes
-+with "qemu" in the command line.  Any command line arguments remaining after
-+\fBnumastat\fP option flag processing is completed, are assumed to be
-+additional <\fBPID\fP> or <\fBpattern\fP> process specifiers.  In this sense,
-+the \fB\-p\fP option flag is optional: \fBnumastat qemu\fP is equivalent to
-+\fBnumastat -p qemu\fP
-+.TP
-+\fB\-s[<node>]\fR
-+Sort the table data in descending order before displaying it, so the biggest
-+memory consumers are listed first.  With no specified <node>, the table will 
be
-+sorted by the total column.  If the optional <node> argument is supplied, the
-+data will be sorted by the <node> column.  Note that <node> must follow the
-+\fB\-s\fP immediately with no intermediate white space (e.g., \fBnumastat
-+\-s2\fP).
-+.TP
-+\fB\-v\fR
-+Make some reports more verbose.  In particular, process information for
-+multiple processes will display detailed information for each process.
-+Normally when per-node information for multiple processes is displayed, only
-+the total lines are shown.
-+.TP
-+\fB\-V\fR
-+Display \fBnumastat\fP version information and exit.
-+.TP
-+\fB\-z\fR
-+Skip display of table rows and columns of only zero valuess.  This can be used
-+to greatly reduce the amount of uninteresting zero data on systems with many
-+NUMA nodes.  Note that when rows or columns of zeros are still displayed with
-+this option, that probably means there is at least one value in the row or
-+column that is actually non-zero, but rounded to zero for display.  .SH NOTES
--numastat output is only available on NUMA systems.
--
--numastat assumes the output terminal has a width of 80 characters
--and tries to format the output accordingly.
--.SH EXAMPLES
--.I watch -n1 numastat
-+\fBnumastat\fP attempts to fold each table display so it will be conveniently
-+readable on the output terminal.  Normally a terminal width of 80 characters 
is
-+assumed.  When the \fBresize\fP command is available, \fBnumastat\fP attempts
-+to dynamically determine and fine tune the output tty width from \fBresize\fP
-+output.  If \fBnumastat\fP output is not to a tty, very long output lines can
-+be produced, depending on how many NUMA nodes are present.  In all cases,
-+output width can be explicitly specified via the \fBNUMASTAT_WIDTH\fP
-+environment variable.  For example, \fBNUMASTAT_WIDTH=100  numastat\fP.  On
-+systems with many NUMA nodes, \fBnumastat \-c \-z ....\fP can be very helpful
-+to selectively reduce the amount of displayed information.
-+.SH "ENVIRONMENT VARIABLES"
-+.LP
-+.TP
-+NUMASTAT_WIDTH
-+.SH "FILES"
-+.LP
-+\fI/proc/*/numa_maps\fP
-+.br
-+\fI/sys/devices/system/node/node*/meminfo\fP
-+.br
-+\fI/sys/devices/system/node/node*/numastat\fP
-+.SH "EXAMPLES"
-+.I numastat \-c \-z \-m \-n
-+.br
-+.I numastat \-czs libvirt kvm qemu
-+.br
-+.I watch \-n1 numastat .br
--.I watch -n1 --differences=accumulative numastat
--.SH FILES
--/sys/devices/system/node/node*/numastat
--.SH BUGS
--The output formatting on machines with a large number of nodes
--could be improved.
-+.I watch \-n1 \-\-differences=cumulative numastat
-+.SH "AUTHORS"
-+.LP
-+The original \fBnumastat\fP perl script was written circa 2003 by Andi Kleen
-+<[email protected]>.  The current \fBnumastat\fP program was written in 
2012
-+by Bill Gray <[email protected]> to be compatible by default with the original,
-+and to add options to display per-node system memory usage and per-node 
process
-+memory allocation.
-+.SH "SEE ALSO"
-+.LP
-+.BR numactl (8),
-+.BR set_mempolicy( 2),
-+.BR numa (3)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/int.h new/numactl-2.0.9/int.h
--- old/numactl-2.0.8/int.h     2012-10-11 22:52:24.000000000 +0200
+++ new/numactl-2.0.9/int.h     1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-extern int numa_sched_setaffinity_int(pid_t pid, unsigned len, unsigned long 
*mask);
-extern int numa_sched_getaffinity_int(pid_t pid, unsigned len, unsigned long 
*mask);
-extern long get_mempolicy_int(int *policy, unsigned long *nmask, unsigned long 
maxnode,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/libnuma.c new/numactl-2.0.9/libnuma.c
--- old/numactl-2.0.8/libnuma.c 2012-10-11 22:52:24.000000000 +0200
+++ new/numactl-2.0.9/libnuma.c 2013-10-08 23:34:57.000000000 +0200
@@ -1524,6 +1524,52 @@
 
 make_internal_alias(numa_run_on_node_mask_v2);
 
+/*
+ * Given a node mask (size of a kernel nodemask_t) (probably populated by
+ * a user argument list) set up a map of cpus (map "cpus") on those nodes
+ * without any cpuset awareness. Then set affinity to those cpus.
+ */
+int
+numa_run_on_node_mask_all(struct bitmask *bmp)
+{
+       int ncpus, i, k, err;
+       struct bitmask *cpus, *nodecpus;
+
+       cpus = numa_allocate_cpumask();
+       ncpus = cpus->size;
+       nodecpus = numa_allocate_cpumask();
+
+       for (i = 0; i < bmp->size; i++) {
+               if (bmp->maskp[i / BITS_PER_LONG] == 0)
+                       continue;
+               if (numa_bitmask_isbitset(bmp, i)) {
+                       if (!numa_bitmask_isbitset(numa_possible_nodes_ptr, i)) 
{
+                               numa_warn(W_noderunmask,
+                                       "node %d not allowed", i);
+                               continue;
+                       }
+                       if (numa_node_to_cpus_v2_int(i, nodecpus) < 0) {
+                               numa_warn(W_noderunmask,
+                                       "Cannot read node cpumask from sysfs");
+                               continue;
+                       }
+                       for (k = 0; k < CPU_LONGS(ncpus); k++)
+                               cpus->maskp[k] |= nodecpus->maskp[k];
+               }
+       }
+       err = numa_sched_setaffinity_v2_int(0, cpus);
+
+       numa_bitmask_free(cpus);
+       numa_bitmask_free(nodecpus);
+
+       /* With possible nodes freedom it can happen easily now */
+       if (err < 0) {
+               numa_error("numa_sched_setaffinity_v2_int() failed; abort\n");
+       }
+
+       return err;
+}
+
 nodemask_t
 numa_get_run_node_mask_v1(void)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/numa.3 new/numactl-2.0.9/numa.3
--- old/numactl-2.0.8/numa.3    2012-10-11 22:52:25.000000000 +0200
+++ new/numactl-2.0.9/numa.3    2013-10-08 23:34:57.000000000 +0200
@@ -99,6 +99,8 @@
 .br
 .BI "int numa_run_on_node_mask(struct bitmask *" nodemask );
 .br
+.BI "int numa_run_on_node_mask_all(struct bitmask *" nodemask );
+.br
 .B struct bitmask *numa_get_run_node_mask(void);
 .sp
 .BI "void numa_tonode_memory(void *" start ", size_t " size ", int " node );
@@ -233,7 +235,8 @@
 .IR numa_node_of_cpu (),
 .IR numa_bind (),
 .IR numa_run_on_node (),
-.IR numa_run_on_node_mask ()
+.IR numa_run_on_node_mask (),
+.IR numa_run_on_node_mask_all (),
 and
 .IR numa_get_run_node_mask ().
 These functions deal with the CPUs associated with numa nodes.
@@ -686,6 +689,13 @@
 .I errno
 is set to indicate the error.
 
+.BR numa_run_on_node_mask_all ()
+runs the current task and its children only on nodes specified in
+.IR nodemask
+like
+.I numa_run_on_node_mask
+but without any cpuset awareness.
+
 .BR numa_get_run_node_mask ()
 returns a mask of CPUs on which the current task is allowed to run.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/numa.h new/numactl-2.0.9/numa.h
--- old/numactl-2.0.8/numa.h    2012-10-11 22:52:25.000000000 +0200
+++ new/numactl-2.0.9/numa.h    2013-10-08 23:34:57.000000000 +0200
@@ -53,6 +53,7 @@
 struct bitmask *numa_bitmask_setbit(struct bitmask *, unsigned int);
 struct bitmask *numa_bitmask_clearbit(struct bitmask *, unsigned int);
 unsigned int numa_bitmask_nbytes(struct bitmask *);
+unsigned int numa_bitmask_weight(const struct bitmask *);
 struct bitmask *numa_bitmask_alloc(unsigned int);
 void numa_bitmask_free(struct bitmask *);
 int numa_bitmask_equal(const struct bitmask *, const struct bitmask *);
@@ -237,6 +238,8 @@
 
 /* Run current task only on nodes in mask */
 int numa_run_on_node_mask(struct bitmask *mask);
+/* Run current task on nodes in mask without any cpuset awareness */
+int numa_run_on_node_mask_all(struct bitmask *mask);
 /* Run current task only on node */
 int numa_run_on_node(int node);
 /* Return current mask of nodes the task can run on */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/numactl.8 new/numactl-2.0.9/numactl.8
--- old/numactl-2.0.8/numactl.8 2012-10-11 22:52:25.000000000 +0200
+++ new/numactl-2.0.9/numactl.8 2013-10-08 23:34:57.000000000 +0200
@@ -23,6 +23,8 @@
 .SH SYNOPSIS
 .B numactl
 [
+.B \-\-all
+] [
 .B \-\-interleave nodes
 ] [
 .B \-\-preferred node 
@@ -107,6 +109,10 @@
 .TP
 Policy settings are:
 .TP
+.B \-\-all, \-a
+Unset default cpuset awareness, so user can use all possible CPUs/nodes
+for following policy settings.
+.TP
 .B \-\-interleave=nodes, \-i nodes
 Set a memory interleave policy. Memory will be allocated using round robin
 on
@@ -272,14 +278,14 @@
 Run process as above, but with an option (-l) that would be confused with
 a numactl option.
 
-numactl \-\-nodebind=netdev:eth0 \-\-membind=netdev:eth0 network-server
+numactl \-\-cpunodebind=netdev:eth0 \-\-membind=netdev:eth0 network-server
 Run network-server on the node of network device eth0 with its memory
 also in the same node.
 
 numactl \-\-preferred=1 numactl \-\-show
 Set preferred node 1 and show the resulting state.
 
-numactl --interleave=all --shmkeyfile /tmp/shmkey 
+numactl --interleave=all --shm /tmp/shmkey 
 Interleave all of the sysv shared memory region specified by
 /tmp/shmkey over all nodes.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/numactl.c new/numactl-2.0.9/numactl.c
--- old/numactl-2.0.8/numactl.c 2012-10-11 22:52:25.000000000 +0200
+++ new/numactl-2.0.9/numactl.c 2013-10-08 23:34:57.000000000 +0200
@@ -29,9 +29,13 @@
 #include "util.h"
 #include "shm.h"
 
+#define CPUSET 0
+#define ALL 1
+
 int exitcode;
 
 struct option opts[] = {
+       {"all", 0, 0, 'a'},
        {"interleave", 1, 0, 'i' },
        {"preferred", 1, 0, 'p' },
        {"cpubind", 1, 0, 'c' },
@@ -60,31 +64,32 @@
 void usage(void)
 {
        fprintf(stderr,
-               "usage: numactl [--interleave=nodes] [--preferred=node]\n"
-               "               [--physcpubind=cpus] [--cpunodebind=nodes]\n"
-               "               [--membind=nodes] [--localalloc] command args 
...\n"
-               "       numactl [--show]\n"
-               "       numactl [--hardware]\n"
-               "       numactl [--length length] [--offset offset] [--shmmode 
shmmode]\n"
-               "               [--strict]\n"
-               "               [--shmid id] --shm shmkeyfile | --file 
tmpfsfile\n"
-               "               [--huge] [--touch] \n"
-               "               memory policy | --dump | --dump-nodes\n"
+               "usage: numactl [--all | -a] [--interleave= | -i <nodes>] 
[--preferred= | -p <node>]\n"
+               "               [--physcpubind= | -C <cpus>] [--cpunodebind= | 
-N <nodes>]\n"
+               "               [--membind= | -m <nodes>] [--localalloc | -l] 
command args ...\n"
+               "       numactl [--show | -s]\n"
+               "       numactl [--hardware | -H]\n"
+               "       numactl [--length | -l <length>] [--offset | -o 
<offset>] [--shmmode | -M <shmmode>]\n"
+               "               [--strict | -t]\n"
+               "               [--shmid | -I <id>] --shm | -S <shmkeyfile>\n"
+               "               [--shmid | -I <id>] --file | -f <tmpfsfile>\n"
+               "               [--huge | -u] [--touch | -T] \n"
+               "               memory policy | --dump | -d | --dump-nodes | 
-D\n"
                "\n"
-               "memory policy is --interleave, --preferred, --membind, 
--localalloc\n"
-               "nodes is a comma delimited list of node numbers or A-B ranges 
or all.\n"
+               "memory policy is --interleave | -i, --preferred | -p, 
--membind | -m, --localalloc | -l\n"
+               "<nodes> is a comma delimited list of node numbers or A-B 
ranges or all.\n"
                "Instead of a number a node can also be:\n"
                "  netdev:DEV the node connected to network device DEV\n"
                "  file:PATH  the node the block device of path is connected 
to\n"
                "  ip:HOST    the node of the network device host routes 
through\n"
                "  block:PATH the node of block device path\n"
                "  pci:[seg:]bus:dev[:func] The node of a PCI device\n"
-               "cpus is a comma delimited list of cpu numbers or A-B ranges or 
all\n"
+               "<cpus> is a comma delimited list of cpu numbers or A-B ranges 
or all\n"
                "all ranges can be inverted with !\n"
                "all numbers and ranges can be made cpuset-relative with +\n"
                "the old --cpubind argument is deprecated.\n"
                "use --cpunodebind or --physcpubind instead\n"
-               "length can have g (GB), m (MB) or k (KB) suffixes\n");
+               "<length> can have g (GB), m (MB) or k (KB) suffixes\n");
        exit(1);
 }
 
@@ -327,6 +332,8 @@
 int do_shm = 0;
 int do_dump = 0;
 int shmattached = 0;
+int did_node_cpu_parse = 0;
+int parse_all = 0;
 char *shmoption;
 
 void check_cpubind(int flag)
@@ -354,6 +361,12 @@
                usage_msg("%s must be after shared memory specification", opt);
 }
 
+void check_all_parse(int flag)
+{
+       if (did_node_cpu_parse)
+               usage_msg("--all/-a option must be before all cpu/node 
specifications");
+}
+
 void get_short_opts(struct option *o, char *s)
 {
        *s++ = '+';
@@ -378,7 +391,7 @@
        }
 }
 
-static struct bitmask *numactl_parse_nodestring(char *s)
+static struct bitmask *numactl_parse_nodestring(char *s, int flag)
 {
        static char *last;
 
@@ -389,7 +402,11 @@
        } else {
                last = s;
        }
-       return numa_parse_nodestring(s);
+
+       if (flag == ALL)
+               return numa_parse_nodestring_all(s);
+       else
+               return numa_parse_nodestring(s);
 }
 
 int main(int ac, char **av)
@@ -412,13 +429,17 @@
                        exit(0);
                case 'i': /* --interleave */
                        checknuma();
-                       mask = numactl_parse_nodestring(optarg);
+                       if (parse_all)
+                               mask = numactl_parse_nodestring(optarg, ALL);
+                       else
+                               mask = numactl_parse_nodestring(optarg, CPUSET);
                        if (!mask) {
                                printf ("<%s> is invalid\n", optarg);
                                usage();
                        }
 
                        errno = 0;
+                       did_node_cpu_parse = 1;
                        setpolicy(MPOL_INTERLEAVE);
                        if (shmfd >= 0)
                                numa_interleave_memory(shmptr, shmlen, mask);
@@ -430,7 +451,10 @@
                case 'c': /* --cpubind */
                        dontshm("-c/--cpubind/--cpunodebind");
                        checknuma();
-                       mask = numactl_parse_nodestring(optarg);
+                       if (parse_all)
+                               mask = numactl_parse_nodestring(optarg, ALL);
+                       else
+                               mask = numactl_parse_nodestring(optarg, CPUSET);
                        if (!mask) {
                                printf ("<%s> is invalid\n", optarg);
                                usage();
@@ -438,14 +462,18 @@
                        errno = 0;
                        check_cpubind(do_shm);
                        did_cpubind = 1;
-                       numa_run_on_node_mask(mask);
+                       did_node_cpu_parse = 1;
+                       numa_run_on_node_mask_all(mask);
                        checkerror("sched_setaffinity");
                        break;
                case 'C': /* --physcpubind */
                {
                        struct bitmask *cpubuf;
                        dontshm("-C/--physcpubind");
-                       cpubuf = numa_parse_cpustring(optarg);
+                       if (parse_all)
+                               cpubuf = numa_parse_cpustring_all(optarg);
+                       else
+                               cpubuf = numa_parse_cpustring(optarg);
                        if (!cpubuf) {
                                printf ("<%s> is invalid\n", optarg);
                                usage();
@@ -453,6 +481,7 @@
                        errno = 0;
                        check_cpubind(do_shm);
                        did_cpubind = 1;
+                       did_node_cpu_parse = 1;
                        numa_sched_setaffinity(0, cpubuf);
                        checkerror("sched_setaffinity");
                        free(cpubuf);
@@ -461,12 +490,16 @@
                case 'm': /* --membind */
                        checknuma();
                        setpolicy(MPOL_BIND);
-                       mask = numactl_parse_nodestring(optarg);
+                       if (parse_all)
+                               mask = numactl_parse_nodestring(optarg, ALL);
+                       else
+                               mask = numactl_parse_nodestring(optarg, CPUSET);
                        if (!mask) {
                                printf ("<%s> is invalid\n", optarg);
                                usage();
                        }
                        errno = 0;
+                       did_node_cpu_parse = 1;
                        numa_set_bind_policy(1);
                        if (shmfd >= 0) {
                                numa_tonodemask_memory(shmptr, shmlen, mask);
@@ -479,7 +512,10 @@
                case 'p': /* --preferred */
                        checknuma();
                        setpolicy(MPOL_PREFERRED);
-                       mask = numactl_parse_nodestring(optarg);
+                       if (parse_all)
+                               mask = numactl_parse_nodestring(optarg, ALL);
+                       else
+                               mask = numactl_parse_nodestring(optarg, CPUSET);
                        if (!mask) {
                                printf ("<%s> is invalid\n", optarg);
                                usage();
@@ -494,6 +530,7 @@
                                usage();
                        numa_bitmask_free(mask);
                        errno = 0;
+                       did_node_cpu_parse = 1;
                        numa_set_bind_policy(0);
                        if (shmfd >= 0)
                                numa_tonode_memory(shmptr, shmlen, node);
@@ -585,6 +622,10 @@
                                verify_shm(set_policy, mask);
                        break;
 
+               case 'a': /* --all */
+                       check_all_parse(did_node_cpu_parse);
+                       parse_all = 1;
+                       break;
                default:
                        usage();
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/numastat.8 new/numactl-2.0.9/numastat.8
--- old/numactl-2.0.8/numastat.8        2012-10-11 22:52:25.000000000 +0200
+++ new/numactl-2.0.9/numastat.8        2013-10-08 23:34:57.000000000 +0200
@@ -36,26 +36,20 @@
 .LP
 .B numa_foreign
 is memory intended for this node, but actually allocated on some different 
node.  Each
- .I numa_foreign
+.I numa_foreign
 has a
- .I numa_miss
-  on another node.
+.I numa_miss
+on another node.
 .LP
 .B interleave_hit
 is interleaved memory successfully allocated on this node as intended.
 .LP
-.B interleave_hit
-is the number of interleave policy allocations that were intended for a 
-specific node and succeeded there. 
-
 .B local_node
 is memory allocated on this node while a process was running on it.
 .LP
-
 .B other_node
 is memory allocated on this node while a process was running on some other 
node.
 .LP
-
 Any supplied options or arguments with the \fBnumastat\fP command will
 significantly change both the content and the format of the display.  Specified
 options will cause display units to change to megabytes of memory, and will
@@ -100,7 +94,10 @@
 sorted by the total column.  If the optional <node> argument is supplied, the
 data will be sorted by the <node> column.  Note that <node> must follow the
 \fB\-s\fP immediately with no intermediate white space (e.g., \fBnumastat
-\-s2\fP).
+\-s2\fP). Because \fB\-s\fP can allow an optional argument, it must always be
+the last option character in a compound option character string. For example,
+instead of \fBnumastat \-msc\fP (which probably will not work as you expect),
+use \fBnumastat \-mcs\fP
 .TP
 \fB\-v\fR
 Make some reports more verbose.  In particular, process information for
@@ -139,7 +136,6 @@
 \fI/sys/devices/system/node/node*/meminfo\fP
 .br
 \fI/sys/devices/system/node/node*/numastat\fP
-
 .SH "EXAMPLES"
 .I numastat \-c \-z \-m \-n
 .br
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/numastat.c new/numactl-2.0.9/numastat.c
--- old/numactl-2.0.8/numastat.c        2012-10-11 22:52:25.000000000 +0200
+++ new/numactl-2.0.9/numastat.c        2013-10-08 23:34:57.000000000 +0200
@@ -724,7 +724,7 @@
 
 
 void display_version_and_exit() {
-       char *version_string = "20120821";
+       char *version_string = "20130723";
        printf("%s version: %s: %s\n", prog_name, version_string, __DATE__);
        exit(EXIT_SUCCESS);
 }
@@ -880,7 +880,7 @@
                                double value = (double)atol(tok[1 + 
tok_offset]);
                                if (!compatibility_mode) {
                                        double multiplier = 1.0;
-                                       if (tokens < 5) {
+                                       if (tokens < 4) {
                                                multiplier = page_size_in_bytes;
                                        } else if (!strncmp("HugePages", 
tok[2], 9)) {
                                                multiplier = 
huge_page_size_in_bytes;
Files old/numactl-2.0.8/patches.tar.gz and new/numactl-2.0.9/patches.tar.gz 
differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/test/bind_range 
new/numactl-2.0.9/test/bind_range
--- old/numactl-2.0.8/test/bind_range   1970-01-01 01:00:00.000000000 +0100
+++ new/numactl-2.0.9/test/bind_range   2013-10-08 23:34:59.000000000 +0200
@@ -0,0 +1,105 @@
+#!/bin/bash
+
+# This simple script checks --all/-a option which is used for
+# supressing of default cpuset awareness of options --cpunodebind,
+# --physcpubind, --interleave, --preferred and --membind.
+
+# NOTE: Test needs two nodes and two cpus at least
+
+
+export old_mask
+
+eval_test() {
+       # echo "Running $1.."
+       $1
+       if [ $? == 1 ] ;  then
+          echo -e "$1 FAILED!"
+         reset_mask
+          exit 1
+       fi
+       echo -e "$1 PASSED"
+}
+
+function check_arg_order
+{
+       ../numactl --all --physcpubind=$HIGHESTCPU ls > /dev/null 2>&1
+       if [ $? == 1 ] ; then
+               return 1;
+       fi
+       ../numactl --physcpubind=$HIGHESTCPU --all ls > /dev/null 2>&1
+       if [ $? == 0 ] ; then
+               return 1;
+       fi
+
+       return 0
+}
+
+function check_physcpubind
+{
+       reset_mask
+       set_cpu_affinity 0
+       ../numactl --physcpubind=$HIGHESTCPU ls > /dev/null 2>&1
+       if [ $? == 0 ] ; then # shouldn't pass so easy
+               return 1;
+       fi
+       ../numactl --all --physcpubind=$HIGHESTCPU ls > /dev/null 2>&1
+       if [ $? == 1 ] ; then # shouldn't fail
+               return 1;
+       fi
+
+       return 0
+}
+
+function check_cpunodebind
+{
+       local low_cpu_range
+       local high_cpu
+
+       reset_mask
+       low_cpu_range=$(cat /sys/devices/system/node/node$LOWESTNODE/cpulist)
+       set_cpu_affinity $low_cpu_range
+       ../numactl --cpunodebind=$HIGHESTNODE ls > /dev/null 2>&1
+       if [ $? == 1 ] ; then # should pass
+               return 1;
+       fi
+       ../numactl --all --cpunodebind=$HIGHESTNODE ls > /dev/null 2>&1
+       if [ $? == 1 ] ; then # should pass for sure
+               return 1;
+       fi
+
+       return 0
+}
+
+function set_cpu_affinity
+{
+       taskset -p -c $1 $$ > /dev/null
+       #echo -e "\taffinity of shell was set to" $1
+}
+
+function get_mask
+{
+       old_mask=$(taskset -p $$ | cut -f2 -d: | sed -e 's/^[ \t]*//')
+}
+
+function reset_mask
+{
+       taskset -p $old_mask $$ > /dev/null
+       #echo -e "\taffinity of shell was reset to" $old_mask
+}
+
+HIGHESTCPU=$(grep 'processor' /proc/cpuinfo | tail -n1 | cut -f2 -d':')
+HIGHESTCPU=$(echo $HIGHESTCPU | cut -f2 -d' ')
+HIGHESTNODE=$(numactl -H | grep -e 'node [0-9]* cpus' | tail -n1 | cut -f2 -d' 
')
+LOWESTNODE=$(numactl -H | grep -e 'node [0-9]* cpus' | head -n1 | cut -f2 -d' 
')
+
+get_mask
+
+eval_test check_arg_order
+eval_test check_physcpubind
+eval_test check_cpunodebind
+
+reset_mask
+
+exit 0
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/test/regress2 
new/numactl-2.0.9/test/regress2
--- old/numactl-2.0.8/test/regress2     2012-10-11 22:52:26.000000000 +0200
+++ new/numactl-2.0.9/test/regress2     2013-10-08 23:34:58.000000000 +0200
@@ -15,6 +15,7 @@
 }
 
 # various tests
+chmod 755 bind_range
 
 # still broken
 #T ./prefered
@@ -23,4 +24,5 @@
 T ./checkaffinity
 T ./checktopology
 T ./tbitmap
+T ./bind_range
 #T ./randmap
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/numactl-2.0.8/versions.ldscript 
new/numactl-2.0.9/versions.ldscript
--- old/numactl-2.0.8/versions.ldscript 2012-10-11 22:52:26.000000000 +0200
+++ new/numactl-2.0.9/versions.ldscript 2013-10-08 23:34:59.000000000 +0200
@@ -165,3 +165,11 @@
     *;
 } libnuma_1.2;
 
+# New interface with customizable cpuset awareness
+# was added into version 1.4
+libnuma_1.4 {
+  global:
+    numa_run_on_node_mask_all;
+  local:
+    *;
+} libnuma_1.3;

++++++ revert_date_in_numastat.patch ++++++
--- /var/tmp/diff_new_pack.yd0rE5/_old  2013-10-20 10:53:05.000000000 +0200
+++ /var/tmp/diff_new_pack.yd0rE5/_new  2013-10-20 10:53:05.000000000 +0200
@@ -9,14 +9,14 @@
  numastat.c |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-Index: numactl-2.0.8/numastat.c
+Index: numactl-2.0.9/numastat.c
 ===================================================================
---- numactl-2.0.8.orig/numastat.c
-+++ numactl-2.0.8/numastat.c
+--- numactl-2.0.9.orig/numastat.c
++++ numactl-2.0.9/numastat.c
 @@ -725,7 +725,7 @@ double huge_page_size_in_bytes = 0;
  
  void display_version_and_exit() {
-       char *version_string = "20120821";
+       char *version_string = "20130723";
 -      printf("%s version: %s: %s\n", prog_name, version_string, __DATE__);
 +      printf("%s version: %s\n", prog_name, version_string);
        exit(EXIT_SUCCESS);

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to