This is an old revision of the document!


FreeBSD 9 Brainstorming / Wishlist

This is a rough list of ideas / goals / tasks to work on for FreeBSD 9.0 release. Nothing here is guaranteed. Many of these items have been long-term goals for many prior releases as well.

Networking Stack

  • Ability to compile INET6 Only kernel
  • VIMAGE: More virtualization
  • Remove if(4) send queue
  • Dispatch sets of packets (Packet batching)
  • PCPU packet dispatch / Net taskq
    • Arguably this should be a generic interrupt thread task to convert interrupt threads to use more of a taskqueue-like model where interrupt handlers are scheduled events to reduce context switch overhead for processing concurrent interrupts.
  • Revised mbufs + tags
    • Align mbuf data and use extra space in resulting mbuf header area to store tags
  • Pass input queue info up from device
    • Allow bpf to tap a specific input queue on a multiqueue NIC for example
  • Fixing carp(4)
  • Multiq transmit support (if_transmit)
  • Connection groups locking paradigm
  • CPU cache analysis, should we prefetch parts of mbufs (headers), etc.
  • IEEE 802.1p (this may be already implemented?)

Wireless networking

  • 802.11n - High Throughput

Device Driver Issues

  • Parallel device attach
    • The idea here is running device probe and attach routines concurrently to reduce boot time.
    • Some tricky questions here are that non-deterministic device names across boots would be a substantial POLA violation and that many bus drivers may not be ready for this complexity.
  • USB video device support
  • Express Card
  • External hardware integration
    • Not entirely sure what this is about – jhb@
  • Flattened device tree support
  • Further ATA/CAM work
    • Resolving different disk geometry under adaX vs adX?
    • Device naming
  • Device I/O resource management (PnP OS support) (JohnBaldwin)
  • Starting the scheduler sooner for most of device attach (JohnBaldwin)
  • Power management
    • Option to power down NICs (D1/D2/D3) when they are down (may multiple policies here)
    • Handle C2+/C1E where local APIC timer is turned off (need backup timer (HPET?))

Other Kernel

  • Virtualize more subsystems (VIMAGE)
  • More embedded platform support
    • avr32
    • mips64
  • Further work on improving scaling to large numbers of cores (e.g. 128)
    • Queued spin locks
  • Dynamic CPU configuration (allowing CPUs to go offline/online)
  • ccNUMA support
  • Remove Giant if possible
    • SYSINIT()'s
    • module event handlers
    • !MPSAFE filesystems
  • Unmapped disk I/O buffers (sglist in bio)
    • bus_dmamap_load_bio()
    • bio_adjust() / bio_start
  • Fix the lemming syncer
  • Per-mount syncer threads
  • Modularity Hygiene (ask phk@ for more details)
    • Are optional things still optional or are things so intertwined that things are de facto required.
  • MAC for ZFS
  • Flash FS support / NAND filesystem?
  • TRIM support
    • Depends on BIO_DELETE support in filesystems, would be implemented by BIO_DELETE requests
  • tickless kernel / deadline scheduling
  • BIODELETE support for filesystems
  • per-thread credentials (ZachLoafman)
  • Kernel capabilities (RobertWatson)
    • Process file descriptors and capability rights used to sandbox processes.
  • Performance monitoring counters (hwpmc(4)) support for embedded platforms
  • 64-bit quotas for UFS (KirkMcKusick and DagErlingSmorgrav)
  • Hibernate support (S4)
  • VOP_OPLOCK support for allowing shared locking state between SMB / NFS, etc. (ZachLoafman)
  • Shared page data to allow pure userland implementations of certain system calls
    • Virtual system call proposal was probably related with this one
  • Non-executable stack
  • Disallow mmap() to offset 0 from userspace (AlanCox and RobertWatson)
  • Clock / power domain management
  • Address space randomization
  • Start using disk labels to mount filesystems more aggressively / by default
  • Enable some sort of kernel debugging by default in release kernels
    • At minimum we want to get a DDB stack trace by default.
    • Possibly textdumps and/or kernel dumps with crashinfo enabled by default.
  • Better config(8)
    • Able to build modules with a custom set of kernel options
  • Xen DOM0
  • Infiniband
  • ZFS as default
    • sysinstall support
    • Licensing?
  • Linux 64-bit binary support in FreeBSD/amd64
  • Transactional NFS export updating
  • Move to disklabels
  • Faster reboot (kernel part):
    • Don't go to the BIOS at 'reboot', but start the kernel from the beginning
  • Get llvm into the tree alongside gcc
  • Userland DTrace
  • Startup dependencies (MartinBlapp)
    • Change /etc/rc.d/foo scripts to autostart dependencies in single user mode (as an example)
  • A library to provide multi-platform support for backtraces in userland applications
  • Witness for pthreads (Warner)
  • Better support for debugging tools: pstack/ltrace/strace
  • Compiling 32-bit i386 binaries on amd64
  • Improved support for running i386 binaries on amd64
  • Better VirtualBOX support
  • Always put 64-bit kernel on amd64-capable hardware
  • Common install DVD for i386/amd64
  • Better support for binary only systems
    • Make GENERIC more generic so common tasks don't require custom kernels (network stack modularization may help with this) so that freebsd-update can update the kernel.
  • Faster reboot
    • Several possible ideas here including parallelized rc.d scripts
  • Manual IPv6 support in sysinstall
  • “Ports STABLE”
  • Better Binary Support
    • Not sure exactly what this is referring to – jhb@
  • Parallel pkg_add (fetching and adding packages concurrently)
  • Switch pkg_add to using http instead of ftp by default due to firewalls, etc.
  • Provide more package variants (e.g. -nox11 package builds)
    • Possibly add a ports variants concept ala MacPorts to avoid a profileration of metaports that exist solely to force variant packages to be built
  • Cross building ports infrastructure
  • Signed packages
  • Building packages for a subset of ports/ tree (useful for embedded)
  • Better jail management
  • Connection manager-like facilities (more info needed about this one)

leftwhiteboard.jpg

middlewhiteboard.jpg

rightwhiteboard.jpg

  • freebsd9.1256042159.txt.gz
  • Last modified: 2009/10/20 12:35
  • by RafalJaworowski