import UBI numactl-2.0.16-1.el8

This commit is contained in:
eabdullin 2023-11-14 19:09:15 +00:00
parent 45742b1d1d
commit 8e6abf5768
16 changed files with 4 additions and 721 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/numactl-2.0.12.tar.gz
SOURCES/numactl-2.0.16.tar.gz

View File

@ -1 +1 @@
8576ef894d2c4d25adddd792593bcd92e711d86f SOURCES/numactl-2.0.12.tar.gz
37ea1a333827f279e940bf0ae55d6897b331f19f SOURCES/numactl-2.0.16.tar.gz

View File

@ -1,32 +0,0 @@
From cd7c78e77dc43fff5dbe2763f1ac83a8b4a6b1c7 Mon Sep 17 00:00:00 2001
From: Harish <harish@linux.vnet.ibm.com>
Date: Thu, 21 Jun 2018 07:53:10 +0530
Subject: [PATCH 1/7] Fix: node_list with memory-less nodes
Patch adds check to avoid memory-less nodes while traversing till
max node, and this also prevents nodes_to_use sysmalloc failure as
nodes_to_use is malloc'ed with numa_num_configured_nodes which
returns the number of nodes configured with memory.
Signed-off-by: Harish <harish@linux.vnet.ibm.com>
Signed-off-by: Pingfan Liu <piliu@redhat.com>
---
numademo.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/numademo.c b/numademo.c
index b01e995..90d8e84 100644
--- a/numademo.c
+++ b/numademo.c
@@ -307,7 +307,7 @@ void get_node_list()
node_to_use = (int *)malloc(numnodes * sizeof(int));
max_node = numa_max_node();
for (a = 0; a <= max_node; a++) {
- if(numa_node_size(a, &free_node_sizes) != -1)
+ if (numa_node_size(a, &free_node_sizes) > 0)
node_to_use[got_nodes++] = a;
}
}
--
2.7.4

View File

@ -1,63 +0,0 @@
From 2b190afdbbff875e519e4ae45390bdde11e8e190 Mon Sep 17 00:00:00 2001
From: Harish <harish@linux.vnet.ibm.com>
Date: Wed, 20 Jun 2018 18:46:55 +0530
Subject: [PATCH 2/7] numademo: fix wrong node input
In few sparse node systems, test fails with invalid argument at
set_mempolicy through numa_preferred_node. Patch fixes it by
providing a valid wrong node.
Signed-off-by: Harish <harish@linux.vnet.ibm.com>
Signed-off-by: Pingfan Liu <piliu@redhat.com>
---
numademo.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/numademo.c b/numademo.c
index 90d8e84..4d3c058 100644
--- a/numademo.c
+++ b/numademo.c
@@ -298,7 +298,7 @@ int popcnt(unsigned long val)
int max_node, numnodes;
-void get_node_list()
+int get_node_list()
{
int a, got_nodes = 0;
long free_node_sizes;
@@ -310,6 +310,9 @@ void get_node_list()
if (numa_node_size(a, &free_node_sizes) > 0)
node_to_use[got_nodes++] = a;
}
+ if(got_nodes != numnodes)
+ return -1;
+ return 0;
}
void test(enum test type)
@@ -436,7 +439,7 @@ void test(enum test type)
numa_set_localalloc();
memtest("local allocation", numa_alloc(msize));
- numa_set_preferred((node_to_use[i]+1) % numnodes );
+ numa_set_preferred(node_to_use[(i + 1) % numnodes]);
memtest("setting wrong preferred node", numa_alloc(msize));
numa_set_preferred(node_to_use[i]);
memtest("setting correct preferred node", numa_alloc(msize));
@@ -512,7 +515,11 @@ int main(int ac, char **av)
if (!force)
exit(1);
}
- get_node_list();
+ if(get_node_list()){
+ fprintf(stderr, "Configured Nodes does not match available memory nodes\n");
+ exit(1);
+ }
+
printf("%d nodes available\n", numnodes);
fract_nodes = (((numnodes-1)/8)*2) + FRACT_NODES;
--
2.7.4

View File

@ -1,50 +0,0 @@
From c465ca7ca41aa03e755ed71fa0281c620b0d8dc0 Mon Sep 17 00:00:00 2001
From: Harish <harish@linux.vnet.ibm.com>
Date: Thu, 21 Jun 2018 17:22:36 +0530
Subject: [PATCH 3/7] Fix: distance test to include all existing nodes
The previous implementation did not consider memory-less nodes as
numa_num_configured_nodes() returns only nodes with memory and
numa_node_size() check is unnecessary for distance check. Hence
removed the check for memory.
Signed-off-by: Harish <harish@linux.vnet.ibm.com>
Signed-off-by: Pingfan Liu <piliu@redhat.com>
---
test/distance.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/test/distance.c b/test/distance.c
index fca109f..3471db6 100644
--- a/test/distance.c
+++ b/test/distance.c
@@ -5,21 +5,20 @@
int main(void)
{
- int numnodes, maxnode, a, b, got_nodes = 0;
+ int maxnode, a, b, got_nodes = 0;
int *node_to_use;
- long size, free_node_sizes;
if (numa_available() < 0) {
printf("no numa support in kernel\n");
exit(1);
}
- numnodes = numa_num_configured_nodes();
maxnode = numa_max_node();
- node_to_use = (int *)malloc(numnodes * sizeof(int));
+ node_to_use = (int *)malloc(maxnode * sizeof(int));
for (a = 0; a <= maxnode; a++) {
- size = numa_node_size(a, &free_node_sizes);
- if(size != -1)
+ if (numa_bitmask_isbitset(numa_nodes_ptr, a)){
node_to_use[got_nodes++] = a;
+ }
}
+
for (a = 0; a < got_nodes; a++){
printf("%03d: ", node_to_use[a]);
if (numa_distance(node_to_use[a], node_to_use[a]) != 10) {
--
2.7.4

View File

@ -1,122 +0,0 @@
From 09d294e8d83151fb76a7fc741bc6251c0b171e25 Mon Sep 17 00:00:00 2001
From: Harish <harish@linux.vnet.ibm.com>
Date: Wed, 27 Jun 2018 22:29:10 +0530
Subject: [PATCH 4/7] Fix: regress test numastat function and few test fixes
nstat function previously assumed node indexes to be contiguous
and get the numastat of the required statname. When run on a
machine with combinations of memory/memory-less nodes in a
non-contiguous way, the test fetches wrong stats and fails. This
patch finds the index of the given node and returns proper value.
Signed-off-by: Harish <harish@linux.vnet.ibm.com>
Signed-off-by: Pingfan Liu <piliu@redhat.com>
---
test/regress | 42 +++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/test/regress b/test/regress
index c0cf6d7..f06b22f 100755
--- a/test/regress
+++ b/test/regress
@@ -47,9 +47,11 @@ failed() {
# nstat statname node
nstat() {
sleep $STAT_INTERVAL
+ nid=node$2
+ id=`numastat | head -1 | awk -v node=$nid '{ for (i = 1; i <= NF; ++i) if($i==node) print i; exit }'`
declare -a fields
numastat | grep $1 | while read -a fields ; do
- echo ${fields[$[1 + $2]]}
+ echo ${fields[$id]}
done
}
@@ -89,14 +91,13 @@ _test_process_state() {
test_process_state()
{
declare -i n0=${node[0]} n1=${node[1]}
-
_test_process_state --interleave=$n1
- a0=`nstat interleave_hit 0`
- a1=`nstat interleave_hit 1`
+ a0=`nstat interleave_hit $n0`
+ a1=`nstat interleave_hit $n1`
_test_process_state --interleave=$n0,$n1
- b0=`nstat interleave_hit 0`
- b1=`nstat interleave_hit 1`
+ b0=`nstat interleave_hit $n0`
+ b1=`nstat interleave_hit $n1`
if [ $(expr $b1 - $a1) -lt $HALFPAGES ]; then
echo "interleaving test failed $n1 $b1 $a1"
failed
@@ -109,19 +110,18 @@ test_process_state()
_test_process_state --interleave=all
_test_process_state --membind=all
- a=$(expr $(nstat numa_hit 0) + $(nstat numa_hit 1))
+ a=$(expr $(nstat numa_hit $n0) + $(nstat numa_hit $n1))
_test_process_state --membind=$n0,$n1
- b=$(expr $(nstat numa_hit 0) + $(nstat numa_hit 1))
+ b=$(expr $(nstat numa_hit $n0) + $(nstat numa_hit $n1))
if [ $(expr $b - $a) -lt $PAGES ]; then
echo "membind test failed $n1 $b $a ($PAGES)"
failed
fi
- for i in $(seq 0 $maxnode) ; do
- declare -i ni=${node[$i]}
+ for i in "${node[@]}" ; do
a=`nstat numa_hit $i`
- _test_process_state --membind=$ni
- _test_process_state --preferred=$ni
+ _test_process_state --membind=$i
+ _test_process_state --preferred=$i
b=`nstat numa_hit $i`
if [ $(expr $b - $a) -lt $DOUBLEPAGES ]; then
echo "membind/preferred on node $ni failed $b $a"
@@ -143,11 +143,11 @@ test_mbind()
{
declare -i n0=${node[0]} n1=${node[1]}
- a0=`nstat interleave_hit 0`
- a1=`nstat interleave_hit 1`
+ a0=`nstat interleave_hit $n0`
+ a1=`nstat interleave_hit $n1`
_test_mbind interleave $n0,$n1
- b0=`nstat interleave_hit 0`
- b1=`nstat interleave_hit 1`
+ b0=`nstat interleave_hit $n0`
+ b1=`nstat interleave_hit $n1`
if [ $(expr $b1 - $a1) -lt $HALFPAGES ]; then
echo "interleaving test 2 failed $n1 $b1 $a1 expected $HALFPAGES"
failed
@@ -159,19 +159,19 @@ test_mbind()
_test_mbind interleave all
- a=$(expr $(nstat numa_hit 0) + $(nstat numa_hit 1))
+ a=$(expr $(nstat numa_hit $n0) + $(nstat numa_hit $n1))
_test_mbind membind $n0,$n1
- b=$(expr $(nstat numa_hit 0) + $(nstat numa_hit 1))
+ b=$(expr $(nstat numa_hit $n0) + $(nstat numa_hit $n1))
if [ $(expr $b - $a) -lt $PAGES ]; then
echo "membind test 2 failed $b $a ($PAGES)"
failed
fi
- for i in $(seq 0 $maxnode) ; do
+ for i in "${node[@]}" ; do
declare -i ni=${node[$i]}
a=`nstat numa_hit $i`
- _test_mbind membind $ni
- _test_mbind preferred $ni
+ _test_mbind membind $i
+ _test_mbind preferred $i
b=`nstat numa_hit $i`
if [ $(expr $b - $a) -lt $DOUBLEPAGES ]; then
echo "membind/preferred test 2 on node $ni failed $b $a"
--
2.7.4

View File

@ -1,48 +0,0 @@
From d1bc1653b3f86b8951b876946a94db681764fa2a Mon Sep 17 00:00:00 2001
From: Filipe Brandenburger <filbranden@google.com>
Date: Fri, 15 Jun 2018 14:16:23 -0700
Subject: [PATCH 5/7] Correct calculation of nr_nodes and re-enable move_pages
test
This was pointed out by @bjsprakash in #8.
After the bug is corrected, we can re-enable the test in `make check`,
since most machines these days will have at least two nodes by default.
Travis-CI still fails with this test (one node only available), so keep
skipping it there.
Signed-off-by: Pingfan Liu <piliu@redhat.com>
---
Makefile.am | 1 +
test/move_pages.c | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index 03b0ab6..1c4266d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -134,6 +134,7 @@ TESTS = \
test/checkaffinity \
test/checktopology \
test/distance \
+ test/move_pages \
test/nodemap \
test/numademo \
test/regress \
diff --git a/test/move_pages.c b/test/move_pages.c
index 87d9b3e..c5010e2 100644
--- a/test/move_pages.c
+++ b/test/move_pages.c
@@ -28,7 +28,7 @@ int main(int argc, char **argv)
pagesize = getpagesize();
- nr_nodes = numa_max_node();
+ nr_nodes = numa_max_node() + 1;
if (nr_nodes < 2) {
printf("A minimum of 2 nodes is required for this test.\n");
--
2.7.4

View File

@ -1,83 +0,0 @@
From bad479d2fe1075cfc83ffbd4ad39bcc6e800e7ca Mon Sep 17 00:00:00 2001
From: Harish <harish@linux.vnet.ibm.com>
Date: Thu, 5 Jul 2018 12:08:33 +0530
Subject: [PATCH 6/7] Fix: move_pages test for non-contiguous nodes
Patch fixes move_pages test for non-contiguous memory nodes and
distributed pages among existing memory nodes instead of assuming
continuous node IDs.
Signed-off-by: Harish <harish@linux.vnet.ibm.com>
Signed-off-by: Pingfan Liu <piliu@redhat.com>
---
test/move_pages.c | 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)
diff --git a/test/move_pages.c b/test/move_pages.c
index c5010e2..4b207e8 100644
--- a/test/move_pages.c
+++ b/test/move_pages.c
@@ -21,6 +21,24 @@ int *status;
int *nodes;
int errors;
int nr_nodes;
+int *node_to_use;
+
+int get_node_list()
+{
+ int a, got_nodes = 0, max_node, numnodes;
+ long free_node_sizes;
+
+ numnodes = numa_num_configured_nodes();
+ node_to_use = (int *)malloc(numnodes * sizeof(int));
+ max_node = numa_max_node();
+ for (a = 0; a <= max_node; a++) {
+ if (numa_node_size(a, &free_node_sizes) > 0)
+ node_to_use[got_nodes++] = a;
+ }
+ if(got_nodes != numnodes)
+ return -1;
+ return got_nodes;
+}
int main(int argc, char **argv)
{
@@ -28,12 +46,16 @@ int main(int argc, char **argv)
pagesize = getpagesize();
- nr_nodes = numa_max_node() + 1;
+ nr_nodes = get_node_list();
if (nr_nodes < 2) {
printf("A minimum of 2 nodes is required for this test.\n");
exit(1);
}
+ if (nr_nodes == -1) {
+ printf("Mismatch between congfigured nodes and memory-rich nodes.\n");
+ exit(1);
+ }
setbuf(stdout, NULL);
printf("move_pages() test ......\n");
@@ -58,7 +80,7 @@ int main(int argc, char **argv)
/* We leave page 2 unallocated */
pages[ i * pagesize ] = (char) i;
addr[i] = pages + i * pagesize;
- nodes[i] = (i % nr_nodes);
+ nodes[i] = node_to_use[(i % nr_nodes)];
status[i] = -123;
}
@@ -82,7 +104,7 @@ int main(int argc, char **argv)
if (i != 2) {
if (pages[ i* pagesize ] != (char) i)
errors++;
- else if (nodes[i] != (i % nr_nodes))
+ else if (nodes[i] != node_to_use[(i % nr_nodes)])
errors++;
}
}
--
2.7.4

View File

@ -1,39 +0,0 @@
From a8f5ed65b745f96f5e5af72bace8e7c63b96fd4e Mon Sep 17 00:00:00 2001
From: Sanskriti Sharma <sansharm@redhat.com>
Date: Thu, 13 Sep 2018 10:01:58 -0400
Subject: [PATCH 7/7] Fix: Add ShmemHugePages and ShmemPmdMapped to
system_meminfo[]
ShmemHugePages and ShmemPmdMapped were recently added to
/sys/devices/system/node/node*/meminfo. Adding entries for them in the
system_meminfo data structure got rid of the error "Token Node not in hash
table."
Signed-off-by: Sanskriti Sharma <sansharm@redhat.com>
Signed-off-by: Pingfan Liu <piliu@redhat.com>
---
numastat.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/numastat.c b/numastat.c
index 92d8496..25874db 100644
--- a/numastat.c
+++ b/numastat.c
@@ -122,9 +122,11 @@ meminfo_t system_meminfo[] = {
{ 27, "SReclaimable", "SReclaimable" },
{ 28, "SUnreclaim", "SUnreclaim" },
{ 29, "AnonHugePages", "AnonHugePages" },
- { 30, "HugePages_Total", "HugePages_Total" },
- { 31, "HugePages_Free", "HugePages_Free" },
- { 32, "HugePages_Surp", "HugePages_Surp" }
+ { 30, "ShmemHugePages", "ShmemHugePages" },
+ { 31, "ShmemPmdMapped", "ShmemPmdMapped" },
+ { 32, "HugePages_Total", "HugePages_Total" },
+ { 33, "HugePages_Free", "HugePages_Free" },
+ { 34, "HugePages_Surp", "HugePages_Surp" }
};
#define SYSTEM_MEMINFO_ROWS (sizeof(system_meminfo) / sizeof(system_meminfo[0]))
--
2.7.4

View File

@ -1,88 +0,0 @@
From ffbc7a05e1777f4a2b3096483519fe5096ecc716 Mon Sep 17 00:00:00 2001
From: Sanskriti Sharma <sansharm@redhat.com>
Date: Tue, 20 Nov 2018 10:22:06 -0500
Subject: [PATCH] memhog: add man page
Signed-off-by: Sanskriti Sharma <sansharm@redhat.com>
---
memhog.8 | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 68 insertions(+)
create mode 100644 memhog.8
diff --git a/memhog.8 b/memhog.8
new file mode 100644
index 0000000..e28e784
--- /dev/null
+++ b/memhog.8
@@ -0,0 +1,68 @@
+.TH MEMHOG 8 "2003,2004" "SuSE Labs" "Linux Administrator's Manual"
+.SH NAME
+memhog \- Allocates memory with policy for testing
+.SH SYNOPSIS
+.B memhog
+[
+.B \-r<NUM>
+] [
+.B size kmg
+] [
+.B policy nodeset
+] [
+.B \-f<filename>
+]
+.SH DESCRIPTION
+.B memhog
+mmaps a memory region for a given size and sets the numa policy (if specified).
+It then updates the memory region for the given number of iterations using memset.
+.TS
+tab(|);
+l l.
+-r<num>|Repeat memset NUM times
+-f<file>|Open file for mmap backing
+-H|Disable transparent hugepages
+-size|Allocation size in bytes, may have case-insensitive order
+|suffix (G=gigabyte, M=megabyte, K=kilobyte)
+.TE
+
+Supported numa-policies:
+.TP
+.B interleave
+Memory will be allocated using round robin on nodes. When
+memory cannot be allocated on the current interleave, target fall back
+to other nodes. Multiple nodes may be specified.
+.TP
+.B membind
+Only allocate memory from nodes. Allocation will fail
+when there is not enough memory available on these nodes. Multiple
+nodes may be specified.
+.TP
+.B preferred
+Preferably allocate memory on node, but if memory cannot be
+allocated there fall back to other nodes. This option takes only a
+single node number.
+.TP
+.B default
+Memory will be allocated on the local node (the node the
+thread is running on)
+
+.SH EXAMPLES
+.TP
+# Allocate a 1G region, mmap backed by memhog.mmap file, membind to node 0, repeat test 6 times
+memhog -r6 1G --membind 0 -fmemhog.mmap
+.TP
+# Allocate a 1G region, iterleave across nodes 0,1,2,3, repeat test 4 times
+memhog -r4 1G --interleave 0-3
+.TP
+# Allocate a 1G region, (implicit) default policy, repeat test 8 times
+memhog -r8 1G
+
+.SH AUTHORS
+Andi Kleen (ak@suse.de)
+
+.SH LICENSE
+GPL v2
+
+.SH SEE ALSO
+.I mmap(2), memset(3), numactl(8), numastat(8)
--
2.7.5

View File

@ -1,33 +0,0 @@
From c2b0a955a415c104be0fa1b3118f48f726fd23ea Mon Sep 17 00:00:00 2001
From: Stefan Hajnoczi <stefanha@redhat.com>
Date: Tue, 9 Jul 2019 16:10:46 +0200
Subject: [PATCH] numastat.8: clarify that information relates to resident
pages
The man page gives no hint about whether memory usage information
relates to resident pages or virtual memory. The answer may not be
obvious to the user, so explicitly mention that only resident pages are
counted.
Suggested-by: Daniele Palumbo <daniele@retaggio.net>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
numastat.8 | 2 ++
1 file changed, 2 insertions(+)
diff --git a/numastat.8 b/numastat.8
index 4dcddf3..7fbcab2 100644
--- a/numastat.8
+++ b/numastat.8
@@ -54,6 +54,8 @@ 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.
+.LP
+Memory usage information reflects the resident pages on the system.
.SH "OPTIONS"
.LP
.TP
--
2.7.5

View File

@ -1,46 +0,0 @@
From a47463a72864a76b0557468daf83741632ea4d72 Mon Sep 17 00:00:00 2001
From: Patrick Mansfield <patrick.mansfield@cpacketnetworks.com>
Date: Mon, 30 Sep 2019 15:59:53 -0700
Subject: [PATCH] Fix crashes when using the "--touch" option.
Fix memory to be mapped read/write, so that the "touch" option can write to it.
Signed-off-by: Patrick Mansfield <patrick.mansfield@cpacketnetworks.com>
---
shm.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/shm.c b/shm.c
index 260eeff..fb592ed 100644
--- a/shm.c
+++ b/shm.c
@@ -119,7 +119,7 @@ void attach_sysvshm(char *name, char *opt)
shmlen = s.shm_segsz;
}
- shmptr = shmat(shmfd, NULL, SHM_RDONLY);
+ shmptr = shmat(shmfd, NULL, 0);
if (shmptr == (void*)-1)
err("shmat");
shmptr += shmoffset;
@@ -134,7 +134,7 @@ void attach_shared(char *name, char *opt)
{
struct stat64 st;
- shmfd = open(name, O_RDONLY);
+ shmfd = open(name, O_RDWR);
if (shmfd < 0) {
errno = 0;
if (shmlen == 0)
@@ -160,7 +160,7 @@ void attach_shared(char *name, char *opt)
/* RED-PEN For shmlen > address space may need to map in pieces.
Left for some poor 32bit soul. */
- shmptr = mmap64(NULL, shmlen, PROT_READ, MAP_SHARED, shmfd, shmoffset);
+ shmptr = mmap64(NULL, shmlen, PROT_READ | PROT_WRITE, MAP_SHARED, shmfd, shmoffset);
if (shmptr == (char*)-1)
err("shm mmap");
--
2.7.5

View File

@ -1,26 +0,0 @@
From 6a41846f3191afe48144481bbfa2fd4edafdc8d5 Mon Sep 17 00:00:00 2001
From: Sanskriti Sharma <sansharm@redhat.com>
Date: Wed, 21 Nov 2018 10:28:44 -0500
Subject: [PATCH] Added memhog.8 to Makefile.am Signed-off-by: Sanskriti Sharma
<sansharm@redhat.com>
---
Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index 1c4266d..ab61d42 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,7 +12,7 @@ include_HEADERS = numa.h numacompat1.h numaif.h
noinst_HEADERS = numaint.h util.h
-dist_man_MANS = move_pages.2 numa.3 numactl.8 numastat.8 migratepages.8 migspeed.8
+dist_man_MANS = move_pages.2 numa.3 numactl.8 numastat.8 migratepages.8 migspeed.8 memhog.8
EXTRA_DIST = README.md INSTALL.md
--
2.7.5

View File

@ -1,26 +0,0 @@
From 26fba7199c365b55e72e054bb2adba097ce04924 Mon Sep 17 00:00:00 2001
From: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
Date: Wed, 8 Jan 2020 14:39:01 +0530
Subject: [PATCH] Update manpage description of --localalloc option
Signed-off-by: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
---
numactl.8 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/numactl.8 b/numactl.8
index 7a001c0..f3bb22b 100644
--- a/numactl.8
+++ b/numactl.8
@@ -159,7 +159,7 @@ A !N-N notation indicates the inverse of N-N, in other words all cpus
except N-N. If used with + notation, specify !+N-N.
.TP
.B \-\-localalloc, \-l
-Always allocate on the current node.
+Try to allocate on the current node of the process, but if memory cannot be allocated there fall back to other nodes.
.TP
.B \-\-preferred=node
Preferably allocate memory on
--
2.7.5

View File

@ -1,35 +0,0 @@
From 93867c59b0bb29470873a427dc7f06ebaf305221 Mon Sep 17 00:00:00 2001
From: Pingfan Liu <piliu@redhat.com>
Date: Mon, 29 Mar 2021 17:33:06 +0800
Subject: [PATCH] libnuma: make numa_police_memory() free of race
When numa_police_memory() read-write to memory, it can risk the race of
another thread write to the same area.
Using atomic function to protect the read-write operation
Signed-off-by: Pingfan Liu <piliu@redhat.com>
---
libnuma.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/libnuma.c b/libnuma.c
index f073c50..7b8290c 100644
--- a/libnuma.c
+++ b/libnuma.c
@@ -864,8 +864,10 @@ void numa_police_memory(void *mem, size_t size)
{
int pagesize = numa_pagesize_int();
unsigned long i;
- for (i = 0; i < size; i += pagesize)
- ((volatile char*)mem)[i] = ((volatile char*)mem)[i];
+ char *p = mem;
+ for (i = 0; i < size; i += pagesize, p += pagesize)
+ __atomic_and_fetch(p, 0xff, __ATOMIC_RELAXED);
+
}
make_internal_alias(numa_police_memory);
--
2.29.2

View File

@ -1,7 +1,7 @@
Name: numactl
Summary: Library for tuning for Non Uniform Memory Access machines
Version: 2.0.12
Release: 13%{?dist}
Version: 2.0.16
Release: 1%{?dist}
# libnuma is LGPLv2 and GPLv2
# numactl binaries are GPLv2 only
License: GPLv2
@ -37,19 +37,6 @@ ExcludeArch: s390 %{arm}
#
# Patches 601 onward are generic patches
#
Patch601 :0001-Fix-node_list-with-memory-less-nodes.patch
Patch602 :0002-numademo-fix-wrong-node-input.patch
Patch603 :0003-Fix-distance-test-to-include-all-existing-nodes.patch
Patch604 :0004-Fix-regress-test-numastat-function-and-few-test-fixe.patch
Patch605 :0005-Correct-calculation-of-nr_nodes-and-re-enable-move_p.patch
Patch606 :0006-Fix-move_pages-test-for-non-contiguous-nodes.patch
Patch607 :0007-Fix-Add-ShmemHugePages-and-ShmemPmdMapped-to-system_.patch
Patch608 :0008-memhog-add-man-page.patch
Patch609: 0009-numastat.8-clarify-that-information-relates-to-resid.patch
Patch610: 0010-Fix-crashes-when-using-the-touch-option.patch
Patch611: 0011-Added-memhog.8-to-Makefile.am.patch
Patch612: 0012-Update-manpage-description-of-localalloc-option.patch
Patch613: 0013-libnuma-make-numa_police_memory-free-of-race.patch
@ -80,19 +67,6 @@ Provides development headers for numa library calls
%setup -q -n %{name}-%{version}
#patch
%patch601 -p1
%patch602 -p1
%patch603 -p1
%patch604 -p1
%patch605 -p1
%patch606 -p1
%patch607 -p1
%patch608 -p1
%patch609 -p1
%patch610 -p1
%patch611 -p1
%patch612 -p1
%patch613 -p1
%build