Ensure that the tests are bug-free and can
execute on different
hardware and software.
This first goal has been
partly fulfilled. In each run, at least 5 testcases are killed with
a segmentation fault. This may be due to bugs in the system or in the
tests themselves. Further analysis is needed here.
Nevertheless, no unexpected problem was found in the 15 functions
from our priority-1 list.
Check the NPTL bugs, in several situations:
- bleeding-edge context, with vanilla kernel and glibc; or
standard OS distributions
- with large machines (many CPUs, many I/O, lot of memory)
- with several CPU architectures (i686, Power-PC, Itanium 2)
The second goal was
by the fact that a lot of POSIX functionnalities have been recently
to the Linux kernel and to glibc (message queues for example), and most
of the tested distributions are older than these additions -- and
therefore a lot of header and execution problems appeared with those
It is also worth to notice that it was not possible to compile the
library for Power-PC linux (as the binutils package failed to install),
and that the process was far less straight-forward on Itanium-2 than on
i686 (needed to add some links, etc...).
On the other hand, the NPTL behaved very well on large
machines, showing no scalability weakness.
Build a status on NPTL on main distributions,
on the same machine
- Suse Linux Entreprise Server 9 (SLES9)
- RedHat Fedora Core 3 (test 2)
- RHEL3 (updated with NPTL support and recent kernel)
The conclusion for the third goal
is that the more recent the distribution components (kernel, glibc),
the better the results.
Indeed, this is due to the NPTL being still under heavy development,
with changes almost everyday; so a two-months delay between two Linux
distributions leads to a large difference in results.
It is worth noting anyway that all the tested distributions have
problem that prevented most of the scalability tests to be run; even if
their NPTL binary file contains the functionnality. This is due to
NPTL-only routines being unusable in default environment -- one
need special linker flags to be able to use it (actually tests are
linked to linuxthreads library at compilation time).