No commit message specified.
[ikiwiki.git] / features / index.mdwn
bc420a63 1[[!toc levels=2]]
556009e6 3# DragonFly's Major Features List
d5502c1b 5## KERNEL
556009e6 6
13ed5471 7Please keep in mind that major modifications have been made to nearly the entire DragonFly kernel relative to the original FreeBSD-4.x fork. Significant changes have been made to every kernel subsystem, as a consequence this list is constrained to the largest, most user-visible changes unique to DragonFly.
556009e6 8
fb117479 9* The scheduler abstraction has been split up into two layers. The LWKT (Light Weight Kernel Thread) scheduler is used by the kernel to schedule all executable entities. The User Thread Scheduler is a separate scheduler which selects one user thread at a time for each cpu and schedules it using the LWKT scheduler. Both scheduler abstractions are per-cpu but the user thread scheduler selects from a common list of runnable processes.
556009e6 10
d930ff1b 11* The User Thread Scheduler further abstracts out user threads. A user process contains one or more LWP (Light Weight Process) entities. Each entity represents a user thread under that process. The old rfork() mechanism still exists but is no longer used. The threading library uses LWP-specific calls.
74ffe821 12[Sewa mobil jakarta](, [Aksesoris mobil](, [Toko bunga online](, [Gps tracker mobil](, [Gps tracking kapal](, [Cotton bud](
556009e6 13
fb117479 14* The kernel memory allocator has two abstracted pieces. The basic kernel malloc 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 designed for high volume object allocations and deallocations and is also essentially lockless.
556009e6 15
0c40bf0d 16* 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.
556009e6 17
0b260f7c 18* VKERNEL - DragonFly implements a virtual kernel feature for running DragonFly kernels in userland inside DragonFly kernels. This works similarly to Usermode Linux and allows DragonFly kernels to be debugged as a userland process. The primary use is to make kernel development easier.
556009e6 19
d930ff1b 20* NFS V3 RPC Asynchronization - DragonFly sports a revamped NFSv3 implementation which gets rid of the nfsiod threads and implements a fully asynchronous RPC mechanism using only two kernel threads. The new abstraction fixes numerous stalls in the I/O path related to misordered read-ahead requests.
fb117479 21
87b422ba 22* Disk I/O scheduler framework (dsched) - DragonFly implements a disk scheduler framework controlled by a set of sysctls and a fair-queue disk scheduler module. The ioprio utility may then be used to control I/O priorities on a process-by-process basis.
fb117479 23
556009e6 24## HAMMER - DragonFly Filesystem
d930ff1b 26HAMMER 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 mechanism. HAMMER also sports an extremely robust streaming, queueless master->multiple-slave mirroring capability which is also able to mirror snapshots and other historical data.
556009e6 27
28All 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.
30HAMMER is designed to accommodate today's large drives.
13ed5471 32## NULLFS - NULL Filesystem Layer
556009e6 33
74ba4f98 34A null or loop-back filesystem is common to a number of operating systems. The DragonFly null filesystem is quite a different animal. It supports arbitrary mount points that do not loop, a problem on other operating systems, making it extremely flexible in its application. It is also extremely fast and reliable, something that few other operating systems can claim of their null filesystem layers.
9f9ea0e9 35
d5502c1b 36## TMPFS - Temporary FileSystem VFS
38Originally 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.
40TMPFS replaces MFS and MD (for post-boot use).
3bd02639 41
8c7c4759 42## DM_TARGET_CRYPT, TCPLAY - Transparent disk encryption
5525e5f8 43DragonFly has a device mapper target called dm_target_crypt (compatible with Linux' dm-crypt) that provides transparent disk encryption. It makes best use of available cryptographic hardware, as well as multi-processor software crypto.
915f8d0a 44
5525e5f8 45DragonFly fully supports LUKS (cryptsetup) and TrueCrypt as disk encryption methods. tcplay, is a free (BSD-licensed) 100% compatible TrueCrypt implementation built on dm_target_crypt.
8c7c4759 49
3bd02639 50## SWAPCACHE - Managed SSD support
52This DragonFly feature allows SSD-configured swap to also be used to cache clean filesystem data and meta-data. The feature is carefully managed to maximize the write endurance of the SSD. Swapcache is typically used to reduce or remove seek overheads related to managing filesystems with a large number of discrete inodes. DragonFly's swap subsystem also supports much larger than normal swap partitions. 32-bit systems support 32G of swap by default while 64-bit systems support up to 512G of swap by default.
13ed5471 53
b73c11ed 54## VARIANT SYMLINKS
13ed5471 55
56Variant (context-sensitive) symlinks give users, administrators and application authors an extremely useful tool to aid in configuration and management. Special varsym variables can be used within an otherwise conventional symbolic link and resolved at run-time.
60Processes under DragonFly may be "checkpointed" or suspended to disk at any time. They may later be resumed on the originating system, or another system by "thawing" them.
62## DNTPD - DragonFly Network Time Daemon
64DragonFly has its own from-scratch time daemon. After pulling our hair out over the many issues with open source time daemons we decided to write one ourselves and add new system calls to support it. DNTPD uses a double staggered linear regression and correlation to make time corrections. It will also properly deal with network failures (including lack of connectivity on boot), duplicate IPs resolved by DNS, and time source failures (typically 1 second off) when multiple time sources are available. The linear regression and correlation allows DNTPD to make rough adjustments and frequency corrections within 5 minutes of boot and to make more fine-grained adjustments at any time following when the linear regression indicates accuracy beyond the noise floor.
66## DMA - DragonFly Mail Agent
443d30e7 68The 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 simple remote mail transfers. A more sophisticated MTA can then be thrown onto an installed system via pkgsrc.