**%%FreeBSD%% 9 Brainstorming / Wishlist** :!: This page is of historical interest only. 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. In the lists below, (E) means the suggestion came from the %%EuroBSDCon%% [[DevSummit/200909]], and (C) means it came from the BSDCan [[DevSummit/201005]]. A new page based on brainstorming for %%FreeBSD%% 10 is at [[FreeBSD10]]. ==== Timescale ==== The following timescale was suggested at [[DevSummit/201005]]: 7.4-RELEASE, then 8.2-RELEASE, then 9.0-RELEASE (aiming roughly for May 2011) ==== Kernel ==== === Networking Stack === * (E) Ability to compile INET6 Only kernel * (EC) VIMAGE: More virtualization (BjoernZeeb) * (E) Remove if(4) send queue * (EC) Dispatch sets of packets (Packet batching) (JeffRoberson has some patches) * (EC) 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. * (EC) Revised mbufs + tags (JeffRoberson / LuigiRizzo) * Align mbuf data and use extra space in resulting mbuf header area to store tags * (E) Pass input queue info up from device * Allow bpf to tap a specific input queue on a multiqueue NIC for example * (E) Fixing carp(4) * (EC) Multiq transmit support (if_transmit) * (EC) TCP Connection groups locking paradigm (RobertWatson) - Expected ~June/July 2010 * (EC) CPU cache analysis, should we prefetch parts of mbufs (headers), etc. * (E) IEEE 802.1p (this may be already implemented?) * (C) mbuf performance optimisations (JeffRoberson) (~December 2010) * (C) Software TSO * (C) SIFTR (**complete**) * (C) TCP reassembly * (C) Modular Congestion Control (LawrenceStewart) (**complete**) === Wireless networking === * (EC) 802.11n - High Throughput (RuiPaulo) === Device Driver Issues === * (E) 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. * (EC) USB video device support (including webcamd) * (E) Express Card * (E) External hardware integration * Not entirely sure what this is about -- jhb@ * (E) FlattenedDeviceTree support * (EC) Further ATA/CAM work * (E) Resolving different disk geometry under adaX vs adX? * (EC) Device naming * (C) NCQ, port multipliers etc (AlexanderMotin) * (EC) Device I/O resource management (%%PnP%% OS support) (JohnBaldwin) * (C) resource_list_reserve() * (E) Starting the scheduler sooner for most of device attach (JohnBaldwin) * (E) Power management * (E) Option to power down NICs (D1/D2/D3) when they are down (may multiple policies here) * (E) Handle C2+/C1E where local APIC timer is turned off (need backup timer (HPET?%%))%% * (EC) Infiniband - %%OpenFabric%% (JeffRoberson) (~March 2011) * (C) %%ATAoE%%? * (C) FPU save/restore for kernel use (kib@) (**complete**) * (C) %%HotPlug%% PCI (JohnBaldwin?) === Other Kernel === * (EC) Virtualize more subsystems (VIMAGE) (BjoernZeeb) * (EC) More embedded platform support * (EC) avr32 * (EC) mips SMP, mips n64 * (C) PPC64 + SMP * (EC) Further work on improving scaling to large numbers of cores (e.g. 128) * Cores and caches and threads! Oh my! * (E) Queued spin locks * (C) cpumask_t -> cpuset_t (PeterWemm) * (EC) Dynamic CPU configuration (allowing CPUs to go offline/online) (AttilioRao) * (EC) ccNUMA support (AlanCox / JohnBaldwin) (Basics may be in by 9.0) * (EC) Remove Giant if possible (JohnBaldwin) * (E) SYSINIT()'s * (E) module event handlers * (E) !MPSAFE filesystems * (C) if_watchdog / if_timer now gone (**complete**) * (E) Unmapped disk I/O buffers (sglist in bio) * (E) bus_dmamap_load_bio() * (E) bio_adjust() / bio_start * (C) Memory descripter for unmapped IO (good if it was in by 9) * (EC) Fix the lemming syncer (AttilioRao) * (E) Per-mount syncer threads * (E) Modularity Hygiene (ask phk@ for more details) * Are optional things still optional or are things so intertwined that things are de facto required. * (E) MAC for ZFS * (E) Flash FS support / NAND filesystem? * (E) TRIM support * Depends on BIO_DELETE support in filesystems, would be implemented by BIO_DELETE requests * (EC) tickless kernel / deadline scheduling * (E) BIO_DELETE support for filesystems (KirkMcKusick and KonstantinBelousov) (**complete**) * (E) per-thread credentials (ZachLoafman) * (E) Kernel capabilities (RobertWatson) * Process file descriptors and capability rights used to sandbox processes. * (E) Performance monitoring counters (hwpmc(4%%))%% support for embedded platforms * (E) 64-bit quotas for UFS (KirkMcKusick and %%DagErlingSm%%ørgrav) * (E) Hibernate support (S4) * (E) VOP_OPLOCK support for allowing shared locking state between SMB / NFS, etc. (ZachLoafman) * (E) Shared page data to allow pure userland implementations of certain system calls * (E) Virtual system call proposal was probably related with this one * (E) Non-executable stack (KonstantinBelousov) (**complete for amd64 and powerpc**) * (E) Disallow mmap() to offset 0 from userspace (AlanCox and RobertWatson) (**complete**) * (E) Clock / power domain management * (E) Address space randomization * (E) Start using disk labels to mount filesystems more aggressively / by default * (E) Enable some sort of kernel debugging by default in release kernels * (E) At minimum we want to get a DDB stack trace by default. (**complete**) * (E) Possibly textdumps and/or kernel dumps with crashinfo enabled by default. * (E) Better config(8) * (E) Able to build modules with a custom set of kernel options * (E) Xen DOM0 * (E) ZFS as default? * (E) sysinstall support * (E) Licensing? * (E) Linux 64-bit binary support in %%FreeBSD%%/amd64 * (CE) Transactional NFS export updating (ZachLoafman) * (E) Move to disklabels * (E) Faster reboot (kernel part): * Don't go to the BIOS at 'reboot', but start the kernel from the beginning * (C) VM page queue lock pushdown (JeffRoberson) / KipMacy / AlanCox / KonstantinBelousov) (**complete**) * (C) SU+J (JeffRoberson) (**complete**) * (C) EFI booting * (C) Capsicum primitives into kernel (RobertWatson) (by 9.0) * (C) Range locking (JeffRoberson) (not by 9) * (C) Network kernel dump (Sandvine via AttilioRao) * (C) BSD ELF tools (JosephKoshy, KaiWang) * (C) pthread work queues (StaceySon) * (C) Clock stuff * (C) Enhanced redzones * (C) SYSVSHM tracking (AlfredPerlstein) ==== User-space and Ports ==== * (EC) Get llvm into the tree alongside gcc (EdSchouten / RomanDivacky) (**complete**) * (EC) Userland DTrace (**complete**) * (E) Startup dependencies (MartinBlapp) * Change /etc/rc.d/foo scripts to autostart dependencies in single user mode (as an example) * (E) A library to provide multi-platform support for backtraces in userland applications * (E) Witness for pthreads (Warner) * (E) Better support for debugging tools: pstack/ltrace/strace * (E) Compiling 32-bit i386 binaries on amd64 * (E) Improved support for running i386 binaries on amd64 * (E) Better %%VirtualBOX%% support * (E) Always put 64-bit kernel on amd64-capable hardware * (E) Common install DVD for i386/amd64 * (E) Better support for binary only systems * (E) 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. * (E) Faster reboot * (E) Several possible ideas here including parallelized rc.d scripts * (E) Manual IPv6 support in sysinstall * (C) binutils update (2.17.50) (dim@) (By 9.0, barring disaster) * (C) External toolchain support (WarnerLosh) * (C) Ship %%FreeBSD%% VM images * (C) Remove texinfo (not possible for 9.0 due to GNU code, but hopefully for 10.0?) ==== Ports and Packages ==== * (E) "Ports STABLE" * (E) Better Binary Support * Not sure exactly what this is referring to -- jhb@ * (E) Parallel pkg_add (fetching and adding packages concurrently) * (E) Switch pkg_add to using http instead of ftp by default due to firewalls, etc. * (E) 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 * (E) Cross building ports infrastructure * (E) Signed packages * (E) Building packages for a subset of ports/ tree (useful for embedded) * (E) Better jail management * (E) Connection manager-like facilities (more info needed about this one) * (C) chromium in ports? (decision ~July 2010) * Support for switching between different self-consistent package sets ===== Decisions needed before 9.0-RELEASE ===== * (C) SU+J as default? * (C) Which NFS implementation? (~December 2010) (RickMacklem?) * (C) Clang? ===== Testing Foci ===== * (C) clang * (C) 64 bit quotas * (C) SU+J * (C) Documentation updates (handbook etc) * (C) KrisKennaway-style performance testing ==== EuroBSDCon Whiteboard Photos ==== {{freebsd9/leftwhiteboard.jpg}} {{freebsd9/middlewhiteboard.jpg}} {{freebsd9/rightwhiteboard.jpg}} ---- [[CategoryHistorical]]