Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package numactl for openSUSE:Factory checked in at 2024-10-11 17:01:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/numactl (Old) and /work/SRC/openSUSE:Factory/.numactl.new.19354 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "numactl" Fri Oct 11 17:01:24 2024 rev:75 rq:1206653 version:2.0.18.10.g6c14bd5 Changes: -------- --- /work/SRC/openSUSE:Factory/numactl/numactl.changes 2024-02-29 21:49:21.755804926 +0100 +++ /work/SRC/openSUSE:Factory/.numactl.new.19354/numactl.changes 2024-10-11 17:01:34.756824067 +0200 @@ -1,0 +2,25 @@ +Thu Oct 10 08:37:28 UTC 2024 - [email protected] + +- Update to version 2.0.18.10.g6c14bd5: + * Save and restore errno when probing for SET_PREFERRED_MANY + * libnuma: fix nodemask allocation size for get_mempolicy + * Update numactl.c + * numastat: eliminate hard-coded tables + * Don't fail build when set_mempolicy_home_node syscall is unknown + * numactl: Add documentation for weighted interleave + * numactl: Fix RESOURCE_LEAK in show() + * numademo: Fix the using of the uninitialized value + * Add `-w` and `--weighted-interleave` for weighted interleave mode + * Fix fallback for set_mempolicy_home_node syscall + +------------------------------------------------------------------- +Mon May 13 12:59:04 UTC 2024 - [email protected] + +- Update to version 2.0.18.5.g4bfdcc6: + * numactl: Add documentation for weighted interleave + * numactl: Fix RESOURCE_LEAK in show() + * numademo: Fix the using of the uninitialized value + * Add `-w` and `--weighted-interleave` for weighted interleave mode + * Fix fallback for set_mempolicy_home_node syscall + +------------------------------------------------------------------- Old: ---- numactl-2.0.18.0.g3871b1c.obscpio New: ---- numactl-2.0.18.10.g6c14bd5.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ numactl.spec ++++++ --- /var/tmp/diff_new_pack.FHBoAS/_old 2024-10-11 17:01:35.288846196 +0200 +++ /var/tmp/diff_new_pack.FHBoAS/_new 2024-10-11 17:01:35.288846196 +0200 @@ -17,7 +17,7 @@ Name: numactl -Version: 2.0.18.0.g3871b1c +Version: 2.0.18.10.g6c14bd5 Release: 0 Summary: NUMA Policy Control License: GPL-2.0-only ++++++ _service ++++++ --- /var/tmp/diff_new_pack.FHBoAS/_old 2024-10-11 17:01:35.320847527 +0200 +++ /var/tmp/diff_new_pack.FHBoAS/_new 2024-10-11 17:01:35.324847693 +0200 @@ -1,13 +1,12 @@ <services> - <service name="obs_scm" mode="localonly"> + <service name="obs_scm" mode="manual"> <param name="scm">git</param> - <param name="url">https://github.com/numactl/numactl</param> - <param name="revision">HEAD</param> + <param name="url">http://github.com/numactl/numactl</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="versionformat">@PARENT_TAG@.@[email protected]%h</param> <param name="changesgenerate">enable</param> </service> - <service name="set_version" mode="localonly"/> + <service name="set_version" mode="manual"/> <service name="tar" mode="buildtime"/> <service name="recompress" mode="buildtime"> <param name="file">*.tar</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.FHBoAS/_old 2024-10-11 17:01:35.344848526 +0200 +++ /var/tmp/diff_new_pack.FHBoAS/_new 2024-10-11 17:01:35.348848692 +0200 @@ -1,6 +1,8 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/numactl/numactl</param> - <param name="changesrevision">3871b1c42fc71bceadafd745d2eff5dddfc2d67e</param></service></servicedata> + <param name="changesrevision">4bfdcc6e6111c5bf5d4ccb46f227aea80cc57159</param></service><service name="tar_scm"> + <param name="url">http://github.com/numactl/numactl</param> + <param name="changesrevision">6c14bd59d438ebb5ef828e393e8563ba18f59cb2</param></service></servicedata> (No newline at EOF) ++++++ numactl-2.0.18.0.g3871b1c.obscpio -> numactl-2.0.18.10.g6c14bd5.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/VERSION new/numactl-2.0.18.10.g6c14bd5/VERSION --- old/numactl-2.0.18.0.g3871b1c/VERSION 2024-02-07 08:20:36.000000000 +0100 +++ new/numactl-2.0.18.10.g6c14bd5/VERSION 2024-09-17 15:45:02.000000000 +0200 @@ -1 +1 @@ -2.0.18 +2.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/libnuma.c new/numactl-2.0.18.10.g6c14bd5/libnuma.c --- old/numactl-2.0.18.0.g3871b1c/libnuma.c 2024-02-07 08:20:36.000000000 +0100 +++ new/numactl-2.0.18.10.g6c14bd5/libnuma.c 2024-09-17 15:45:02.000000000 +0200 @@ -427,7 +427,7 @@ nodemask_sz = 16; do { nodemask_sz <<= 1; - mask = realloc(mask, nodemask_sz / 8); + mask = realloc(mask, nodemask_sz / 8 + sizeof(unsigned long)); if (!mask) return; } while (get_mempolicy(&pol, mask, nodemask_sz + 1, 0, 0) < 0 && errno == EINVAL && @@ -627,10 +627,13 @@ { int oldp; struct bitmask *bmp, *tmp; + int old_errno; if (has_preferred_many >= 0) return; + old_errno = errno; + has_preferred_many = 0; bmp = numa_allocate_nodemask(); @@ -650,6 +653,7 @@ out: numa_bitmask_free(tmp); numa_bitmask_free(bmp); + errno = old_errno; } /* @@ -1033,6 +1037,15 @@ setpol(MPOL_INTERLEAVE, bmp); } +void +numa_set_weighted_interleave_mask(struct bitmask *bmp) +{ + if (numa_bitmask_equal(bmp, numa_no_nodes_ptr)) + setpol(MPOL_DEFAULT, bmp); + else + setpol(MPOL_WEIGHTED_INTERLEAVE, bmp); +} + SYMVER("numa_get_interleave_mask_v1", "numa_get_interleave_mask@libnuma_1.1") nodemask_t numa_get_interleave_mask_v1(void) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numa.h new/numactl-2.0.18.10.g6c14bd5/numa.h --- old/numactl-2.0.18.0.g3871b1c/numa.h 2024-02-07 08:20:36.000000000 +0100 +++ new/numactl-2.0.18.10.g6c14bd5/numa.h 2024-09-17 15:45:02.000000000 +0200 @@ -172,6 +172,9 @@ /* Set the NUMA node interleaving mask. 0 to turn off interleaving */ void numa_set_interleave_mask(struct bitmask *nodemask); +/* Set the NUMA node weighted interleaving mask. 0 to turn off */ +void numa_set_weighted_interleave_mask(struct bitmask *nodemask); + /* Return the current interleaving mask */ struct bitmask *numa_get_interleave_mask(void); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numactl.8 new/numactl-2.0.18.10.g6c14bd5/numactl.8 --- old/numactl-2.0.18.0.g3871b1c/numactl.8 2024-02-07 08:20:36.000000000 +0100 +++ new/numactl-2.0.18.10.g6c14bd5/numactl.8 2024-09-17 15:45:02.000000000 +0200 @@ -29,6 +29,8 @@ ] [ .B \-\-interleave nodes ] [ +.B \-\-weighted\-interleave nodes +] [ .B \-\-preferred node ] [ .B \-\-preferred-many nodes @@ -127,6 +129,13 @@ to other nodes. Multiple nodes may be specified on --interleave, --membind and --cpunodebind. .TP +.B \-\-weighted\-interleave=nodes, \-w nodes +Set a weighted memory interleave policy. Memory will be allocated using the +weighted ratio for each node, which can be read from +.I /sys/kernel/mm/mempolicy/weighted_interleave/node*. +When memory cannot be allocated on the current interleave target fall back +to other nodes. +.TP .B \-\-membind=nodes, \-m nodes Only allocate memory from nodes. Allocation will fail when there is not enough memory available on these nodes. @@ -298,6 +307,9 @@ numactl \-\-interleave=all bigdatabase arguments Run big database with its memory interleaved on all CPUs. +numactl \-\-weighted\-interleave=all bigdatabase arguments +Run big database with its memory interleaved with weighted ratio on all CPUs. + numactl \-\-cpunodebind=0 \-\-membind=0,1 process Run process on node 0 with memory allocated on node 0 and 1. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numactl.c new/numactl-2.0.18.10.g6c14bd5/numactl.c --- old/numactl-2.0.18.0.g3871b1c/numactl.c 2024-02-07 08:20:36.000000000 +0100 +++ new/numactl-2.0.18.10.g6c14bd5/numactl.c 2024-09-17 15:45:02.000000000 +0200 @@ -43,6 +43,7 @@ static struct option opts[] = { {"all", 0, 0, 'a'}, {"interleave", 1, 0, 'i' }, + {"weighted-interleave", 1, 0, 'w' }, {"preferred", 1, 0, 'p' }, {"preferred-many", 1, 0, 'P' }, {"cpubind", 1, 0, 'c' }, @@ -74,8 +75,9 @@ static void usage(void) { fprintf(stderr, - "usage: numactl [--all | -a] [--balancing | -b] [--interleave= | -i <nodes>]\n" - " [--preferred= | -p <node>] [--preferred-many= | -P <nodes>]\n" + "usage: numactl [--all | -a] [--balancing | -b]\n" + " [--interleave= | -i <nodes>] [--weighted-interleave= | -w <nodes>]\n" + " [--preferred= | -p <node>] [--preferred-many= | -P <nodes>]\n" " [--physcpubind= | -C <cpus>] [--cpunodebind= | -N <nodes>]\n" " [--membind= | -m <nodes>] [--localalloc | -l] command args ...\n" " [--localalloc | -l] command args ...\n" @@ -89,7 +91,8 @@ " [--huge | -u] [--touch | -T] \n" " memory policy [--dump | -d] [--dump-nodes | -D]\n" "\n" - "memory policy is --interleave | -i, --preferred | -p, --membind | -m, --localalloc | -l\n" + "memory policy is --preferred | -p, --membind | -m, --localalloc | -l,\n" + " --interleave | -i, --weighted-interleave | -w\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" @@ -195,6 +198,7 @@ printmask("nodebind", cpubind); printmask("membind", membind); printmask("preferred", preferred); + numa_bitmask_free(preferred); } static char *fmt_mem(unsigned long long mem, char *buf) @@ -221,19 +225,19 @@ return; } printf("node distances:\n"); - printf("node "); + printf("node "); for (i = 0; i <= maxnode; i++) if (numa_bitmask_isbitset(numa_nodes_ptr, i)) - printf("% 3d ", i); + printf("% 4d ", i); printf("\n"); for (i = 0; i <= maxnode; i++) { if (!numa_bitmask_isbitset(numa_nodes_ptr, i)) continue; - printf("% 3d: ", i); + printf("% 4d: ", i); for (k = 0; k <= maxnode; k++) if (numa_bitmask_isbitset(numa_nodes_ptr, i) && numa_bitmask_isbitset(numa_nodes_ptr, k)) - printf("% 3d ", numa_distance(i,k)); + printf("% 4d ", numa_distance(i,k)); printf("\n"); } } @@ -479,6 +483,7 @@ int parse_all = 0; int numa_balancing = 0; int do_hardware = 0; + int weighted_interleave = 0; get_short_opts(opts,shortopts); while ((c = getopt_long(ac, av, shortopts, opts, NULL)) != -1) { @@ -494,6 +499,9 @@ nopolicy(); numa_balancing = 1; break; + case 'w': /* --weighted-interleave */ + weighted_interleave = 1; + /* fall-through - logic is the same as interleave */ case 'i': /* --interleave */ checknuma(); if (parse_all) @@ -507,11 +515,18 @@ errno = 0; did_node_cpu_parse = 1; - setpolicy(MPOL_INTERLEAVE); + if (weighted_interleave) + setpolicy(MPOL_WEIGHTED_INTERLEAVE); + else + setpolicy(MPOL_INTERLEAVE); if (shmfd >= 0) numa_interleave_memory(shmptr, shmlen, mask); - else - numa_set_interleave_mask(mask); + else { + if (weighted_interleave) + numa_set_weighted_interleave_mask(mask); + else + numa_set_interleave_mask(mask); + } checkerror("setting interleave mask"); break; case 'N': /* --cpunodebind */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numademo.c new/numactl-2.0.18.10.g6c14bd5/numademo.c --- old/numactl-2.0.18.0.g3871b1c/numademo.c 2024-02-07 08:20:36.000000000 +0100 +++ new/numactl-2.0.18.10.g6c14bd5/numademo.c 2024-09-17 15:45:02.000000000 +0200 @@ -250,6 +250,8 @@ #endif default: + gettimeofday(&start,NULL); + gettimeofday(&end,NULL); break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numaif.h new/numactl-2.0.18.10.g6c14bd5/numaif.h --- old/numactl-2.0.18.0.g3871b1c/numaif.h 2024-02-07 08:20:36.000000000 +0100 +++ new/numactl-2.0.18.10.g6c14bd5/numaif.h 2024-09-17 15:45:02.000000000 +0200 @@ -31,7 +31,8 @@ #define MPOL_INTERLEAVE 3 #define MPOL_LOCAL 4 #define MPOL_PREFERRED_MANY 5 -#define MPOL_MAX 6 +#define MPOL_WEIGHTED_INTERLEAVE 6 +#define MPOL_MAX 7 /* Flags for set_mempolicy, specified in mode */ #define MPOL_F_NUMA_BALANCING (1 << 13) /* Optimize with NUMA balancing if possible */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/numastat.c new/numactl-2.0.18.10.g6c14bd5/numastat.c --- old/numactl-2.0.18.0.g3871b1c/numastat.c 2024-02-07 08:20:36.000000000 +0100 +++ new/numactl-2.0.18.10.g6c14bd5/numastat.c 2024-09-17 15:45:02.000000000 +0200 @@ -84,65 +84,8 @@ #define PROCESS_MEMINFO_ROWS (sizeof(process_meminfo) / sizeof(process_meminfo[0])) -static meminfo_t numastat_meminfo[] = { - { 0, "numa_hit", "Numa_Hit" }, - { 1, "numa_miss", "Numa_Miss" }, - { 2, "numa_foreign", "Numa_Foreign" }, - { 3, "interleave_hit", "Interleave_Hit" }, - { 4, "local_node", "Local_Node" }, - { 5, "other_node", "Other_Node" }, -}; - -#define NUMASTAT_MEMINFO_ROWS (sizeof(numastat_meminfo) / sizeof(numastat_meminfo[0])) - -static meminfo_t system_meminfo[] = { - { 0, "MemTotal", "MemTotal" }, - { 1, "MemFree", "MemFree" }, - { 2, "MemUsed", "MemUsed" }, - { 3, "SwapCached", "SwapCached" }, - { 4, "HighTotal", "HighTotal" }, - { 5, "HighFree", "HighFree" }, - { 6, "LowTotal", "LowTotal" }, - { 7, "LowFree", "LowFree" }, - { 8, "Active", "Active" }, - { 9, "Inactive", "Inactive" }, - { 10, "Active(anon)", "Active(anon)" }, - { 11, "Inactive(anon)", "Inactive(anon)" }, - { 12, "Active(file)", "Active(file)" }, - { 13, "Inactive(file)", "Inactive(file)" }, - { 14, "Unevictable", "Unevictable" }, - { 15, "Mlocked", "Mlocked" }, - { 16, "Dirty", "Dirty" }, - { 17, "Writeback", "Writeback" }, - { 18, "FilePages", "FilePages" }, - { 19, "Mapped", "Mapped" }, - { 20, "AnonPages", "AnonPages" }, - { 21, "Shmem", "Shmem" }, - { 22, "KernelStack", "KernelStack" }, - { 23, "ShadowCallStack", "ShadowCallStack" }, - { 24, "PageTables", "PageTables" }, - { 25, "SecPageTables", "SecPageTables" }, - { 26, "NFS_Unstable", "NFS_Unstable" }, - { 27, "Bounce", "Bounce" }, - { 28, "WritebackTmp", "WritebackTmp" }, - { 29, "Slab", "Slab" }, - { 30, "SReclaimable", "SReclaimable" }, - { 31, "SUnreclaim", "SUnreclaim" }, - { 32, "AnonHugePages", "AnonHugePages" }, - { 33, "ShmemHugePages", "ShmemHugePages" }, - { 34, "ShmemPmdMapped", "ShmemPmdMapped" }, - { 35, "FileHugePages", "FileHugePages" }, - { 36, "FilePmdMapped", "FilePmdMapped" }, - { 37, "HugePages_Total", "HugePages_Total" }, - { 38, "HugePages_Free", "HugePages_Free" }, - { 39, "HugePages_Surp", "HugePages_Surp" }, - { 40, "KReclaimable", "KReclaimable" } -}; - -#define SYSTEM_MEMINFO_ROWS (sizeof(system_meminfo) / sizeof(system_meminfo[0])) - -// To allow re-ordering the meminfo memory categories in system_meminfo and -// numastat_meminfo relative to order in /proc, etc., a simple hash index is +// To allow re-ordering the /sys/devices/system/node/node<N> meminfo and numastat +// memory categories relative to order in /sys, etc., a simple hash index is // used to look up the meminfo categories. The allocated hash table size must // be bigger than necessary to reduce collisions (and because these specific // hash algorithms depend on having some unused buckets. @@ -672,7 +615,7 @@ static void display_version_and_exit(void) { - printf("%s\n", VERSION); + printf("%s version: %s: %s\n", prog_name, VERSION, __DATE__); exit(EXIT_SUCCESS); } @@ -820,9 +763,9 @@ printf("cannot open %s: %s\n", fpath, strerror(errno)); continue; } - unsigned long nr_pages = 0; + unsigned long nr_pages = 0; if (fgets(buf, SMALL_BUF_SIZE, fs)) - nr_pages = strtoul(buf, NULL, 10); + nr_pages = strtoul(buf, NULL, 10); fclose(fs); total += nr_pages * hugepage_size; @@ -835,8 +778,24 @@ return total; } -static void show_info_from_system_file(char *file, meminfo_p meminfo, int meminfo_rows, int tok_offset) +static void show_info_from_system_file(char *file, int tok_offset) { + char fname[64]; + char buf[SMALL_BUF_SIZE]; + // Open /sys/.../node0/<file> + snprintf(fname, sizeof(fname), "/sys/devices/system/node/node0/%s", file); + FILE *fs = fopen(fname, "r"); + if (!fs) { + sprintf(buf, "cannot open %s", fname); + perror(buf); + exit(EXIT_FAILURE); + } + // and count the lines in the file + int meminfo_rows = 0; + while (fgets(buf, SMALL_BUF_SIZE, fs)) { + meminfo_rows += 1; + } + fclose(fs); // Setup and init table vtab_t table; int header_rows = 2 - compatibility_mode; @@ -844,24 +803,17 @@ // Add an extra data column for a total column init_table(&table, header_rows, header_cols, meminfo_rows, num_nodes + 1); int total_col_ix = header_cols + num_nodes; - // Insert token mapping in hash table and assign left header column label for each row in table init_hash_table(); - for (int row = 0; (row < meminfo_rows); row++) { - hash_insert(meminfo[row].token, meminfo[row].index); - if (compatibility_mode) { - string_assign(&table, (header_rows + row), 0, meminfo[row].token); - } else { - string_assign(&table, (header_rows + row), 0, meminfo[row].label); - } - } - // printf("There are %d table hash collisions.\n", hash_collisions); // Set left header column width and left justify it set_col_width(&table, 0, 16); set_col_justification(&table, 0, COL_JUSTIFY_LEFT); // Open /sys/devices/system/node/node?/<file> for each node and store data // in table. If not compatibility_mode, do approximately first third of // this loop also for (node_ix == num_nodes) to get "Total" column header. + // Also, during the first iteration, insert token mapping in hash table + // and assign left header column label for each row in table. for (int node_ix = 0; (node_ix < (num_nodes + (1 - compatibility_mode))); node_ix++) { + int row = 0; int col = header_cols + node_ix; // Assign header row label and horizontal line for this column... string_assign(&table, 0, col, node_header[node_ix]); @@ -879,9 +831,7 @@ if (node_ix == num_nodes) { break; } - // Open /sys/.../node<N>/numstast file for this node... - char buf[SMALL_BUF_SIZE]; - char fname[64]; + // Open /sys/.../node<N>/<file> for this node... snprintf(fname, sizeof(fname), "/sys/devices/system/node/node%d/%s", node_ix_map[node_ix], file); FILE *fs = fopen(fname, "r"); if (!fs) { @@ -904,6 +854,34 @@ } // example line from numastat file: "numa_miss 16463" // example line from meminfo file: "Node 3 Inactive: 210680 kB" + if (node_ix == 0) { + char *token = strdup(tok[0 + tok_offset]); + if (token == NULL) { + perror("malloc failed line: " STRINGIFY(__LINE__)); + exit(EXIT_FAILURE); + } + hash_insert(token, row); + // printf("There are %d table hash collisions.\n", hash_collisions); + if ((compatibility_mode) || (!strncmp("meminfo", file, 7))) { + string_assign(&table, (header_rows + row), 0, token); + } else { + char *label = strdup(tok[0 + tok_offset]); + if (label == NULL) { + perror("malloc failed line: " STRINGIFY(__LINE__)); + exit(EXIT_FAILURE); + } + // Capitalize first letter and letters after '_' + char *p = label; + while (p) { + p[0] = toupper(p[0]); + p = strchr(p, '_'); + if (p) { + p += 1; + } + } + string_assign(&table, (header_rows + row), 0, label); + } + } int index = hash_lookup(tok[0 + tok_offset]); if (index < 0) { printf("Token %s not in hash table.\n", tok[0 + tok_offset]); @@ -931,10 +909,11 @@ double_assign(&table, header_rows + index, col, value); double_addto(&table, header_rows + index, total_col_ix, value); } + row += 1; } fclose(fs); } - // Crompress display column widths, if requested + // Compress display column widths, if requested if (compress_display) { for (int col = 0; (col < header_cols + num_nodes + 1); col++) { auto_set_col_width(&table, col, 4, 16); @@ -960,13 +939,13 @@ if (!compatibility_mode) { printf("\nPer-node numastat info (in MBs):\n"); } - show_info_from_system_file("numastat", numastat_meminfo, NUMASTAT_MEMINFO_ROWS, 0); + show_info_from_system_file("numastat", 0); } static void show_system_info(void) { printf("\nPer-node system memory usage (in MBs):\n"); - show_info_from_system_file("meminfo", system_meminfo, SYSTEM_MEMINFO_ROWS, 2); + show_info_from_system_file("meminfo", 2); } static void show_process_info(void) @@ -1128,7 +1107,7 @@ // If showing individual tables, or we just added the last total line, // prepare the table for display and display it... if ((show_sub_categories) || (pid_ix + 1 == num_pids)) { - // Crompress display column widths, if requested + // Compress display column widths, if requested if (compress_display) { for (int col = 0; (col < header_cols + num_nodes + 1); col++) { auto_set_col_width(&table, col, 4, 16); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/syscall.c new/numactl-2.0.18.10.g6c14bd5/syscall.c --- old/numactl-2.0.18.0.g3871b1c/syscall.c 2024-02-07 08:20:36.000000000 +0100 +++ new/numactl-2.0.18.10.g6c14bd5/syscall.c 2024-09-17 15:45:02.000000000 +0200 @@ -141,10 +141,10 @@ #if !defined(__NR_set_mempolicy_home_node) -#if defined(__x86_64__) || defined(__aarch64__) +#if defined(__x86_64__) || defined(__aarch64__) || defined(__i386__) || defined(__powerpc__) || defined(__mips__) || defined(__s390x__) #define __NR_set_mempolicy_home_node 450 #else -#error "Add syscalls for your architecture or update kernel headers" +#warning "Add syscalls for your architecture or update kernel headers" #endif #endif @@ -261,7 +261,12 @@ int WEAK set_mempolicy_home_node(void *start, unsigned long len, int home_node, int flags) { +#ifndef __NR_set_mempolicy_home_node + errno = ENOSYS; + return -1; +#else return syscall(__NR_set_mempolicy_home_node, start, len, home_node, flags); +#endif } /* SLES8 glibc doesn't define those */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numactl-2.0.18.0.g3871b1c/versions.ldscript new/numactl-2.0.18.10.g6c14bd5/versions.ldscript --- old/numactl-2.0.18.0.g3871b1c/versions.ldscript 2024-02-07 08:20:36.000000000 +0100 +++ new/numactl-2.0.18.10.g6c14bd5/versions.ldscript 2024-09-17 15:45:02.000000000 +0200 @@ -172,3 +172,10 @@ local: *; } libnuma_1.6; + +libnuma_2.1{ + global: + numa_set_weighted_interleave_mask; + local: + *; +} libnuma_1.7; ++++++ numactl.obsinfo ++++++ --- /var/tmp/diff_new_pack.FHBoAS/_old 2024-10-11 17:01:35.560857510 +0200 +++ /var/tmp/diff_new_pack.FHBoAS/_new 2024-10-11 17:01:35.564857677 +0200 @@ -1,5 +1,5 @@ name: numactl -version: 2.0.18.0.g3871b1c -mtime: 1707290436 -commit: 3871b1c42fc71bceadafd745d2eff5dddfc2d67e +version: 2.0.18.10.g6c14bd5 +mtime: 1726580702 +commit: 6c14bd59d438ebb5ef828e393e8563ba18f59cb2
