From 56251050f8e34518fb24a2b6c7a8aba29e168629 Mon Sep 17 00:00:00 2001 From: dillon Date: Tue, 4 Dec 2018 21:12:09 +0000 Subject: [PATCH] --- release54/index.mdwn | 70 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 12 deletions(-) diff --git a/release54/index.mdwn b/release54/index.mdwn index d40567bb..7152d9e6 100644 --- a/release54/index.mdwn +++ b/release54/index.mdwn @@ -8,12 +8,14 @@ The details of all commits between the 5.2 and 5.4 branches are available in the ## Big-ticket items -* Better support for asymmetric NUMA (Non-Uniform Memory Access) configurations. In particular, both the memory subsystem and the scheduler now understand the Threadripper 2990WX's architecture. The scheduler will prioritize CPU nodes with direct-attached memory and the memory subsystem will normalize memory queues for CPU nodes without direct-attached memory (which improves cache locality on those CPUs). +* Much better support for asymmetric NUMA (Non-Uniform Memory Access) configurations. In particular, both the memory subsystem and the scheduler now understand the Threadripper 2990WX's architecture. The scheduler will prioritize CPU nodes with direct-attached memory and the memory subsystem will normalize memory queues for CPU nodes without direct-attached memory (which improves cache locality on those CPUs). * Incremental performance work. DragonFly as a whole is very SMP friendly. The type of performance work we are doing now mostly revolves around improving fairness for shared-vs-exclusive lock clashes, reducing cache ping-ponging due to non-contending SMP locks (i.e. massive use of shared locks on shared resources), and so forth. * Major updates to dports brings us to within a week or two of FreeBSD's ports as of this writing, in particular major updates to chromium, and making the whole mess work with gcc-8. +* Major rewriting of the tty clist code and the tty locking code, significantly improving concurrency across multiple ttys and ptys. + ### GCC 8 * DragonFly now ships with GCC 8.0, and runs as the default compiler. It is also now used for building dports. @@ -29,13 +31,7 @@ The details of all commits between the 5.2 and 5.4 branches are available in the * Increased bulkfree cache to reduce the number of iterations required. * Fixed numerous bugs. * Improved support on low-memory machines. - -### Network updates - -* dhcpcd has been added to the base system, and will replace dhclient and rtsold - though not in this release. -* A number of network device drivers have been added. -* A couple of edge-case panics have been fixed. -* wpa_supplicant is installed via dports, by default, to override the default version in base. The base version remains so that a mass pkg deletion doesn't accidentally remove the ability to get online. +* Significant pre-work on the XOP API to help support future networked operations. ## Details @@ -105,7 +101,7 @@ Don't forget to upgrade your existing packages. 5.4 packages have already been * Increase the size of the vm_object hash table by 4x to reduce collisions. * Fix duplicate da* reporting at boot time and fix the related lockup. * Implement a per-thread (fd,fp) cache to reduce cache ping-ponging in heavily-threaded processes. -* Refactor the lwkt_token pool hash algorithm to improve SMP. +* Refactor the lwkt_token pool hash algorithm to improve concurrency. * Refactor uidinfo * Refactor lockf operation to remove SMP bottlenecks. * Increase copyin item batching from 8 to 32 for select() and poll(). @@ -135,17 +131,42 @@ Don't forget to upgrade your existing packages. 5.4 packages have already been * Fix a umtx race in the kernel. * Fix a NULL pointer indirection on lost socket bug. * Enable NX for PROT_READ-only mappings by default. NX cannot be enabled for PROT_WRITE (without PROT_EXEC) due to assumptions made by applications. Suggested by OpenBSD. -* +* Refactor low-memory handling in the objcache subsystem. +* Bring in some jail work from FreeBSD. +* Rewrite the TSC probe code several times to improve boot times and reduce SMP issues on many-cores cpus and under emulation. +* Refactor the if_clone code and improve stability when used with TAP. +* Increase MAXCPUFIFO from 32 to 256 to fix deadlocks which can occur on ncpus > 32 systems. +* AMD topology detection rewritten. +* Add a heuristic to the scheduler to prioritize the 'better' cores in assymetric NUMA configurations (aka threadripper 2990WX). +* Add memory-on-node weighting to the schedule which detects assymetric NUMA configurations and assigns memory to nodes with too little actual memory. This gives us better memory isolation on nodes without direct-attached memory, significantly improving their performance. +* Fix missing wakeup()s in kern_lock.c that could (rarely) lead to unkillable blocked processes. +* Fix a startup race in usched_dfly which sometimes caused early boot panics. +* Fix a missing brelse() in nvtruncbuf()'s error path which could deadlock the system on certain filesystem errors. +* Fix an early-boot interrupt race that sometimes caused a null-pointer deref panic. +* Optimize bcopy, bzero, memset, part 1. part 2 didn't quite make it into this release. +* Improve kernel performance by macroing trivial mem*() and bcopy/bzero*() operations with known, small, static sizes. +* Improve kernel performance +* Add wait6(), waitid(), and si_pid/si_uid siginfo support. This fixes the 'lightdm' X display manager. +* Move nearly all global tty_token uses to per-tty or per-pty tokens, significantly improving concurrency when writing to multiple ttys or ptys. Remove unnecessary critical sections. +* Remove use of tty_token in the session management code, removing an annoying bottleneck from the fork/exec/wait/exit path. +* The keyboard subsystem now uses its own kbd_token instead of using tty_token. +* Rewrite the tty clist code. Get rid of clists. Instead, use a single linear buffer and a FIFO mechanism. The original clist code was obsolete 20 years ago. +* Fix a kernel exit race in killalllwps() that could sometimes prevent a heavily threaded process from completing its exit(). +* ### Filesystems * autofs - Various updates to autofs * ufs - Fix an old UFS bug that would panic on certain filesystem full conditions. * ufs - Rename UFS constants throughout to improve separation. +* ufs - Remove duplicate TRIMs and significantly improve 'rm -rf' performance. * tmpfs - Fix NFS exports of tmpfs filesystems. * tmpfs - Significantly improve tmpfs concurrency. +* tmpfs - Fix a rare deadlock. * Fix minor bugs in HAMMER1 that could result in an assertion under heavy loads. * HAMMER2 is now the recommended default filesystem for root. +* Fix ENOTDIR/EISDIR logic in certain situations. +* uid, gid, and (fake) inum added to the fstat() information for pipe()s and socket()s. ### Networking @@ -161,10 +182,22 @@ Don't forget to upgrade your existing packages. 5.4 packages have already been * Add BPF_MOD and BPF_XOR support to bpf, and update libpcap. * Fix a user-after-free mbuf issue - obtained from NetBSD via FreeBSD. * IPSEC has been removed from the system, for many reasons. Basically, VPNs are far superior and more deterministic in terms of maintainability. +* ifconfig(8) - synchronized from FreeBSD. +* Reduce confusion by giving SEQPACKET sockets their own sysctls for limit setting. +* Increase all default limits for unix domain sockets to 65536 (fixes issues with wpa_supplicant and provides better defaults against application expectations). +* Add ip6addrctl(8) from FreeBSD. +* Fix a SACK related NULL pointer dereference. +* dhcpcd has been added to the base system (for IPV6), and will replace dhclient and rtsold - though not in this release. +* A number of network device drivers have been added. +* A couple of edge-case panics have been fixed. +* wpa_supplicant is installed via dports, by default, to override the default version in base. The base version remains so that a mass pkg deletion doesn't accidentally remove the ability to get online. +* Fix getsockname() on unnamed AF_LOCAL sockets to properly initialize the sockaddr. +* Set net.inet6.icmp6.nd6_onlink_ns_rfc4861 to 1 by default, contemporary implementations pretty much require it. +* Fix a misunderstanding in how igb(4) and ix(4) calculate the packet hash for encapsulated packets. ### Driver updates -* A number of drivers of use when running DragonFly as a guest VM have been added or updated, including ena, if_vtnet, virtio_balloon, and virtio_pci. +* A number of drivers of use when running DragonFly as a guest VM have been added or updated, including ena (for AWS support), if_vtnet, virtio_balloon, and virtio_pci. * Improvements for DRM and radeon. * Serial-output-only installs are now possible. * The virtio_balloon memory driver has been added. @@ -175,6 +208,11 @@ Don't forget to upgrade your existing packages. 5.4 packages have already been * igb(4) bring in WOL (wake-on-lan) support from FreeBSD. * Add support for PCIe serial com, and console support. * Remove numerous old PCI and ISA serial drivers. +* nvme(4) fixes for AWS. Handle interfaces without attached volumes. +* corepower(4) - Add support for platform energy counter. +* ig4(4) Numerous changes to improve low-power support and stability. Handle situations where ig4(4) is listed but is non-operational (probably because the BIOS has stolen it). +* dsp(4) fixes for mmap() handling. +* sound(4) now allows /dev/sndstat to be open multiple times from one process. ### Userland @@ -193,12 +231,20 @@ Don't forget to upgrade your existing packages. 5.4 packages have already been * Add tcsetsid() to libc. * Adjust symlink() prototype to match standards. * Improve buildworld concurrency when building the compilers. +* Significant crunchgen updates. Add 70 more tools to the crunch. +* Add -N option to install(1). +* The resolver now allows underscores in the name, fixing numerous domains and domain forwarding issues. +* mtree - Replace with NetBSD's version. +* dumpon(8) - Improve error message clarity. +* Cache 4K, 8K, and other larger allocations in posix_memalign(), significantly improving its performance. ### Boot * The initrd has had significant improvement and now forms a much more complete rescue system, with over 70 tools added via [crunchgen(1)](https://leaf.dragonflybsd.org/cgi/web-man?command=crunchgen§ion=1). See the [initrd(7)](https://leaf.dragonflybsd.org/cgi/web-man?command=initrd§ion=7) man page for details. * Crypto bootstrap, fix vfs.root.real_root to be vfs.root.realroot. -* Rescue boot mode does not try to mount the real root +* Rescue boot mode does not try to mount the real root. +* Handle tftp block overflows properly, allowing the kernel image to exceed 65536 blocks when tftp pxe-booting is used instead of NFS pxe-booting. +* Slow down the NFS twiddle a bit. ### Various tools have been upgraded in the base system: -- 2.41.0