(no commit message)
authordillon <dillon@web>
Sat, 10 Jul 2010 23:35:01 +0000 (16:35 -0700)
committerCharlie <root@leaf.dragonflybsd.org>
Sat, 10 Jul 2010 23:35:01 +0000 (16:35 -0700)
features/index.mdwn

index d949ebc..198bb79 100644 (file)
@@ -1,6 +1,6 @@
 # DragonFly's Major Features List
 
-## Kernel
+## KERNEL
 
 Please keep in mind that major modifications have been made to nearly the entire DragonFly kernel relative to the original FreeBSD-4.x fork.  There is very little similarity between the two today.  This is an attempt to iterate the largest, most user-visible changes.
 
@@ -8,7 +8,7 @@ Please keep in mind that major modifications have been made to nearly the entire
 
 * The User Thread Scheduler further abstracts out user threads from the user process entity.  A user process contains one or more LWP (Light Weight Process) entities.  Each entity represents a user thread under that process.  The old rfork() mechanic still exists but is no longer used.  The threading library uses LWP-specific calls.
 
-* The kernel memory allocator has two abstracted pieces.  Basic kernel kmalloc is called kmalloc() and is based on an enhanced per-cpu slab allocator.  This allocator is essentially lockless.
+* The kernel memory allocator has two abstracted pieces.  Basic kernel kmalloc is called kmalloc() and is based on an enhanced per-cpu slab allocator.  This allocator is essentially lockless.  There is also an object-oriented memory allocator in the kernel called objcache which is also essentially lockless.
 
 * DEVFS is the DragonFly device filesystem.  It works similarly to device filesystems found on other modern unix-like operating systems.  The biggest single feature is DEVFS's integration with block device serial numbers which allows a DragonFly system to reference disk drives by serial number instead of by their base device name.  Thus drives can be trivially migrated between physical ports and driver changes (base device name changes) become transparent to the system.
 
@@ -16,7 +16,7 @@ Please keep in mind that major modifications have been made to nearly the entire
 
 ## HAMMER - DragonFly Filesystem
 
-HAMMER is the DragonFly filesystem, replacing UFS.  HAMMER supports up to an Exabyte of storage, implements a fast UNDO/REDO FIFO for fsync(), recovers instantly on boot after a crash (no fsck), and implements a very sophisticated fine-grained historical access and snapshot mechanic.  HAMMER also sports an extremely robust streaming, queueless master->multiple-slave mirroring.
+HAMMER is the DragonFly filesystem, replacing UFS.  HAMMER supports up to an Exabyte of storage, implements a fast UNDO/REDO FIFO for fsync(), recovers instantly on boot after a crash (no fsck), and implements a very sophisticated fine-grained historical access and snapshot mechanic.  HAMMER also sports an extremely robust streaming, queueless master->multiple-slave mirroring capability which is also able to mirror snapshots and other historical data.
 
 All non-temporary HAMMER filesystems in DragonFly automatically maintain 60 days worth of 1-day snapshots and 1-day worth of fine-grained (30-second) snapshots.
 
@@ -30,3 +30,12 @@ DragonFly has its own from-scratch time daemon.  After pulling our hair out over
 
 The DragonFly Mail Agent is a bare-bones (though not so bare-bones any more) mail transfer and mail terminus SMTP server which provides all the functionality needed for local mail delivery and simply remote mail transfers.  A more sophisticated MTA can then be thrown onto an installed system via pkgsrc.
 
+## TMPFS - Temporary FileSystem VFS
+
+Originally a NetBSD port the guts have been radically adjusted and carefully tuned to provide a low-contention read path and to directly tie the backing store to the VM/paging system in a way that treats it almost like normal memory.  Only memory pressure will force tmpfs data pages into swap.
+
+TMPFS replaces MFS and MD (for post-boot use).
+
+## NFS V3 RPC Asynchronization
+
+DragonFly sports a revamped NFSv3 implementation which gets rid of the nfsiod threads and implements a fully asynchronous RPC mechanic using only two kernel threads. The new abstraction fixes numerous stalls in the I/O path related to misordered read-ahead requests.