(no commit message)
authordillon <dillon@web>
Tue, 4 Dec 2018 21:12:09 +0000 (21:12 +0000)
committerIkiWiki <ikiwiki.info>
Tue, 4 Dec 2018 21:12:09 +0000 (21:12 +0000)
release54/index.mdwn

index d40567b..7152d9e 100644 (file)
@@ -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&section=1).  See the [initrd(7)](https://leaf.dragonflybsd.org/cgi/web-man?command=initrd&section=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: