DragonFly BSD 4.6.0 发布,更好的支持 NVMe

来源: OSCHINA
编辑: oschina
2016-08-03 00:00:00

DragonFly BSD 4.6.0 发布了,DragonFly是一份作为FreeBSD-4.x系列在逻辑上的延续而设计的操作系统及应用环境。这些操作系统与Linux可归为相同的类别,因为它 们都基于UNIX理念及应用程序接口。DragonFly是这条发展道路上的一个分支,可以说,是给了BSD一个向着不同于FreeBSD-5系列的崭新 方向而发展的机会。

该版本更好的支持NVMe,初步支持EFI ,增强提升SMP和网络方面的性能。i915 驱动和 Linux 4.4 内核里面的 i915 驱动版本保持一致,使得处理器更为稳定,尤其是对Broadwell 和 Skylake系列处理器支持更为友好。

内核方面改进:

  • Fix a namecache race (triggered by heavy tmpfs mount/umount rate)

  • Fix two unmount / access races when many mounts are present

  • Improve context switch hotpath

  • Cut pmap invalidations from buffer cache activity in half

  • Reduce certain potential interrupt stacking issues

  • Implement a new fixed memory pool for physio accesses, eliminating all SMP invalidations from the path

  • Refactor pmap invalidations to operate at a higher priority than critical sections, reduce response latency and greatly reducing multi-core stalls during heavy invalidation activity

  • Fix a 2-instruction SMP race during thread exit.

  • Add buffer cache repurposing to reduce TLB invalidations in high-I/O-thru-filesystem situations.  Defaults to off (sysctl vfs.repurpose_enable).

  • Revamp the IPIQ (IPI messaging) mechanics to avoid deadlocks during heavy activity.

  • Revamp the IPI interrupt signalling mechanics to reduce unnecessary duplicate IPIs.

  • We no longer use the vm_map subsystem to dynamically allocate and deallocate KVM for the buffer-cache.  Instead we pre-reserve the maximum amount of (unmapped) KVM for every buffer.  This makes certain congestion-control algorithms for the buffer cache unnecessary and they have been removed.

  • Add a SMP %rip sniffer IPI, very useful for debugging.

  • Fix an issue where the reported real-time becomes inconsistent between cpu threads under heavy loads.  This issue generally resulted in 'make' getting confused.

  • Refactor the VM prefaulting code to improve pipe-lining.  This improves burst page-in performance when starting large applications such as chrome.

  • A lot of work to reduce noticable (but short) stalls in various subsystems when they have to work on large data-sets.  For example such as when a process with 64GB of RSS exits.

  • Fix zfree()'s hysteresis, greatly reducing unnecessary IPIs.

  • Reduce stalls during major token contention.  It used to be that a large multi-threaded program contending on a single lock across all cpus could create noticable stalls even if the program was running niced or at a high (aka low) dynamic priority.  These situations have been fixed.

  • New threads should not inherit the sigalstack.  Fixes issues with 'go'.

  • Fix MSI support issues.

  • Improve buffer flush and cluster_write linearity.

  • Allow drivers to register interrupts which are specifically meant to be high-frequency (disable the rate limiter for such interrupts).

  • Bring in ipfw3

  • implement a lockless in-kernel NAT for ipfw3 (note that PF's NAT is also mostly lockless).

  • Add ipfwsync for ipfw3, for synchronizing state between multiple machines.

  • Various procfs workarounds added to fix truss issues.

  • Implement PIE (place independent executables).  Randomization be enabled with a sysctl kern.elf64.pie_base_mmap.

  • Implement ppoll() with precise microsecond timeout.

  • Fix VM issues with virtio.

  • Add EVFILT_FS support to kqueue.

  • Cut-down on the amount of BSS in the kernel binary.  We ran over the loader's 64MB limit (with the initrd image and a few kld's also loaded), AGAIN!

  • modules.local mechanism added for non-base kernel modules.

  • Implement I2cSerialBus ACPI module support (used by IG4).

  • Implement ACPI's GPIO.

  • Work around HW VM bugs by aligning the kernel load's end address to 2MB, so there is no transition from 4K pages to 2MB pages for kernel text+data+bss.

  • Many, many HAMMER improvements.

  • HAMMER mount is now forced to noatime by default.

  • Do not allow the kqueue sleep timer to wrap.

  • User process scheduler adjustments to improve interactive responsiveness in situations where (essentially) batch jobs are syscall-heavy or VM fault-heavy.

  • Fix cpu selection skew in the scheduler with high fork/exec rates.

  • Fixed vfork()/getpid() bug in heavily threaded programs.

  • Refactor vm_page_alloc() and the pre-zeroing code to maintain cpu-v-cache affinity.

更多改进信息,可查看完整发布说明

下载地址:http://www.dragonflybsd.org/download/

展开阅读全文
点击加入讨论🔥(7) 发布并加入讨论🔥
7 评论
2 收藏
分享
返回顶部
顶部