Home | Back
[Note: newer entries are at the bottom]

Early prehistory:

- Fix some warnings
- Add const to global variables and prototypes
- Document numa_warn
- Add numa_distance() support to read topology
- remove internal alias from numa_{warn,error} to allow overwriting
  again
- Various bug fixes
- add -f option to memhog to map file
- more bugfixes
- replace forward backward with STREAM test in numademo

0.6.1

- make headers C++ clean

0.6.2

- use more accurate buffer length for cpumask
- add --cpubind to test suite

0.6.3

- fix cpumask parser for large number of cpus.
Note that you need a kernel patch (as of 2.6.7-pre) for that too
if the cpumask is longer than 99 characters.

0.6.4

- Add Coppyright headers

0.6.5

- Reduce unneeded DSO relocations (Arjan van de Ven)
- Add -r option to memhog (repeat walk)
- some manpage fixes
- Use syscall numbers from asm/unistd.h if possible
- Add numa_node_size64 to handle large nodes on 32bit architectures
- Fix numactl to use it (report from Rajan Ravindran)
- Use ln -sf in make install (Rajan Ravindran)
- Add syscall numbers for ppc/ppc64
- Add private syscall6 for i386 since the glibc version is broken
- Remove STUB
- Change numactl --show to use cpubind instead of nodebind for CPU affinity.
- Fix make install into examples directory
- Work around broken sched_set_affinity API. This adds a 32768 CPUs limit.
- Fix segfault with /sys not mounted.
- Clean up Makefile
- Make numactl --show more clever

0.7-pre1

- add test/regress2 and some fixes to test programs
- Fix DSO relocation patch for global variables
- Change nodeset sizes back to be binary compatible with SLES9
- Cosmetic changes to manpages (pointed out by Eric S. Raymond)
- Make numa_run_on_node etc. act on current thread only even on NPTL systems
  (Dinakar Guniguntala)
- Make numa_no_nodes / numa_all_nodes const (Werner Almesberger)
- Fix up the warnings caused by above change
- Add numa_distance() on systems with ACPI
- remove some obsolete code
- add rdtsc for ppc64
- fix unsigned/unsigned long confusion in cpumasks (Matt Dobson)
- fix CPU_BYTES and rename CPU_WORDS to CPU_LONGS (Matt Dobson)
- Print node distances in numactl

[0.7 skipped]

0.8
- hardend numactl command line parsing against bad arguments in some cases
- remove cpumask/nodemask confusion which has become a FAQ:
  --cpubind deprecated, added --cpunodebind and --physcpubind= options
  print both in --show, old cpumask kept for compatibility
- Fix --show problems
- various fixes for bugs noted by Mike Stroyan (thanks!)
- install set_mempolicy manpage
- various smaller fixes

0.9
- Get rid of bogus distance.o that broke compilation on !x86-64 (sorry)
- Handle CFLAGS overriding without OPT_CFLAGS (Ian Wienand)
- Fix up section of get/set_mempolicy (Ian Wienand)
- When no NUMA available fall back to one global node instead of one node
per CPU (Samuel Thibault)
- Don't rely on architecture symbols for dependency generation
- Use __powerpc__ to detect PPC/PPC64
- numastat:
  * wrap display properly with many nodes
  * display nodes in forward order
  * install manpage in `make install'.
- remove bogus numamemcpy.c
- numademo:
  * allow standalone compile, make streamlib optional
  * clean up output
  * change output unit to standard MB/s
  * compile with more optimization
  * add random pass to fool any prefetching (slow)
- make numademo compileable outside source tree
- use gettimeofday instead of time stamp counters in benchmarks
- support valgrind in testsuite
- other minor changes

0.9.1
- Make automatic selection of lib64 vs lib more robust. Now should work
even on ppc32 with a lib64 directory. Architecture lists are hardcoded now
unfortunately.

0.9.2
- Fix compilation on architectures with gcc 3.3+ but without TLS
(MIPS, Alpha, Sparc)
- Add warning against using of MPOL_F_NODE
- numa.3 improvements from Michael Kerrisk
- Support page migration (migratepages, manpages) from Christoph
Lameter. Requires 2.6.16+ kernels

0.9.3
- Some more manpage fixes
- install migratepages manpage in make install
- Build fix for Debian make from Ian Wienand

0.9.4:
- Remove syscall manpages. They're in main man-pages now.
- More migrate fixes from C.Lameter

0.9.5:
- Fix parsing of cpumap in sysfs from Doug Chapman

0.9.6:
- Fix make install again

0.9.7
- Fix cpumap parsing fix to not corrupt memory (Doug Chapman)
- Small optimization to cpumap parsing
- Create target directories for Debian (Ian Wienand)

0.9.8
- Fix cpumap parsing again (Doug Chapman)

0.9.9 (aka "Will 1.0 ever happen?")
- Fix sizing of cpu buffers for affinity syscalls
- Don't corrupt errno in numa_run_on_node_mask. This fixes
numactl cpubind issues on some systems.
- Print cpus belonging to nodes in numactl --hardware
- Rewrite cpumap parser to be simpler and hopefully finally work
in all cases
- add testcases for cpu affinity and topology discovery
- Add make test target to run regression test easier and fix up
test/README

Lots of fixes thanks to thorough testing by Noriyuki Taniuchi:
- Better command line parsing in numactl and fix various documentation bugs
- Wrong arguments to --prefered don't crash numactl anymore
- Fix --cpunodebind=all
- Auto collect short option list in numactl - a couple were missing.
- Fix documentation of numa_set_localalloc. It doesn't have a flag.
- Fix numa_run_on_node(-1)
- numa_get_run_node_mask(): Fix documentation, don't warn

0.9.10:
- Fix cpumap parsing bug when NR_CPUS < 32 (dean gaudet)  

0.9.11
- Fix usage output for --shmid (Noriyuki Taniuchi)
- Use correct syscall number for migrate_pages() on PPC

1.0
- Add sleep to regression test to work with delayed statistic
updating in newer kernels (Mel Gorman)
- Default to -O2

1.0.1
- Fix build on powerpc

1.0.2
- Fix parallel Makefile build (Andreas Herrmann)
- Fix target command argument parsing for numactl (no -- needed again anymore)
- Clarify numa_node_to_cpus() manpage

1.0.3

- Add the migspeed test program to test the speed of migrating pages from
  one node to another
- Support for move_pages(2) to numactl, and numa_move_pages() to libnuma
- Add the move_pages test command to exercise the move_pages(2) system call
- Add the mbind_mig_pages test command to verify the moving of a task's
  pages with move_pages(2)
- Add the migrate_pages test command to test that a task's pages can be
  moved with move_pages(2)
- Support numactl +nn syntax for cpuset_relative cpu and node numbers
- Modify libnuma to use variable-length bit masks (the bitmask structure)
- Modify numactl, migspeed, memhog, migratepages, numademo and stream_main
  to use variable-length bit masks
- Modify the test/ programs to use the libnuma that uses variable size bit masks
- Version 2 (symbol versioning)
- Man page changes with the change to variable-length bit masks, move_pages
  migrate_pages and others

2.0.0
- Added API version 2 and symbol versioning.  This provides binary
  compatibility with old codes that use libnuma.
- Brought the man page in line with the version 2 changes.
- Provide numacompat1.h and additions to numa.h, which provide source code
  compatibility to libnuma version 1.  (The application progamming interface
  changes, but the ABI is preserved through the use of symbol versioning. So
  the library stays libnuma.so.1)
- Added variable-length bit masks to libnuma.  These are struct bitmask.
  This allows libnuma to be independent of ever increasing cpu counts.
  o Modified the test/ programs to use variable size bit masks.
  o Modified numactl, migspeed, memhog, migratepages, numademo and stream_main
    to use variable-length bit masks.
- Added support for move_pages(2) (sys_move_pages()) to numactl.  Adds
  numa_move_pages() to libnuma.
  o Added the mbind_mig_pages test command to verify the moving of a
    task's pages with move_pages(2).
  o Added the move_pages test command to exercise the move_pages(2) system call.
  o Added the migrate_pages test command to test that a task's pages can
    be moved with move_pages(2).
  o Added the migspeed test program.  It tests the speed of migrating pages
    from one node to another.
- Allow a numactl +nn syntax for cpuset_relative cpu and node numbers.
- General cleanup of man page.
- Return nodes allowed by the application's current cpuset context via new
  API numa_get_mems_allowed().
- Change numa_alloc_local() to use MPOL_PREFERRED with NULL nodemask to
  effect local allocation.
- Man page for numactl: numa_maps man page clarifications and cleanup
- Minor cleanups of numademo.c
- Fix numastat sysfs scanning in numactl
- Reorganize the regress test script.
- Fix mempolicy regression test for assymetric platforms and memoryless nodes.
- Fix checkaffinity and checktopology regression tests.
- Fix the __NR_migrate_pages system call number.
- Fix the way numactl handles the building of the mask when executing
  the --physbind option, and the way Cpus_allowed mask is created.

2.0.1
- Fix bug in dombind (when passed a null)
- Make 4 fixes from Debian: MIPS support, MIPS hppa fix for syscalls,
                            make sure -lm for numademo, build a static library
- Fix parsing of /proc/self/status for 2.6.25 additions to it

2.0.2
- Various numademo improvements:
  * Fix random benchmark to use all specified memory
  * Rename to random2 to signify it's different
  * Optimize random benchmark by inlining random number generator fast path.
  * Clear caches between runs for more stable results
  * Add new random pointer chaser benchmark
  * Compile benchmarks with gcc vectorization if available
  * run numademo in regression test
- Add numa_exit_on_warn
- Fix no cpuset fallback in libnuma.c
- Install symlinks for the manpages of all new functions
- Make internal libnuma functions static
- Add copy_bitmask_to_bitmask() to numa.h
- Some cleanups
- Fix line reading in proc
- Add versions.ldscript to libnuma.so dependencies
- Remove the non-"numa_" functions from numacompat1.h and numa.h
- Add ia64 clearcache() to numademo
- Add -t to numademo for regression testing
- Remove "numa_all_cpus" from numa.h
- Changed VERSION1_COMPATIBILITY to NUMA_VERSION1_COMPATIBILITY
- Defined LIBNUMA_API_VERSION 2 in numa.h
- Fix numaif.h and numaint.h (migrate_pages; from Masatake Yamato)
- Fixes to numademo (min/max, and array index; from Kent Liu)
- Fixes to Makefile and permissions; from Berhard Walle

2.0.3-rc1 - rc3
- Fixes to libnuma.c numa.h numacompat1.h by Daniel Gollub to fix v1 compatiblity
- Restore nodemask_zero() and nodemask_equal()
- Drops a warning message about this not being a NUMA system
- Remove the numa_maps.5 man page (it's in Linux now) (by Bernhard Walle)
- Fix makefiles in tests (Andi)
- Fix off-by-ones in test mbind_mig_pages (Andi)
- Fix test/prefered.c (Andi)
- Fix to print_node_cpus() (Arnd/Bill Buros)
- Fixes to read_mask()  (Arnd's on top of cpw's)
- Fix to makefile (LDFLAGS/LDLIBS/AR/RANLIB) (Mike Frysinger)
- Fix numactl for noncontiguous nodes (Amit Arora)
- Fix bitmask memory leaks, numa_alloc_onnode/numa_preferred (Kornilios Kourtis)
- Add numa_node_of_cpu() to retrieve local node of a cpu (Kornilios Kourtis)
- Fix parsing of /proc/self/status (Brice Goglin/Lee Shermerhorn)
- Small reorganization of numa_alloc_local() (L.S.)
- Fixes of bitmask memory leaks in about eight functions (L.S.)
- Make library always return allocated masks that user can free (L.S.)
- Fix to numademo memtest (allocation overhead) (L.S.)
- Fix to checkaffinity test (possible shell errors) (L.S.)
- Fix a printf in migspeed.c (Frederik Himpe)
- Fix test/regress grep of node nummber (Cliff W.)
- Change numademo to finish in a timely manner on large machines (Cliff W.)
- tested on 96p 48nodes

2.0.3-rc1 - rc4
- Add --dump-nodes option to numactl (Andi)