Hacker News new | ask | show | jobs
by cperciva 4954 days ago
Some of the common answers to that question are clang/llvm, ZFS, DTrace, pf, superpages, geom, journalled softupdates, and capsicum.
2 comments

Don't forget kqueue/libdispatch. Yes, with epoll and friends you can essentially reproduce kqueue's functionality, but there are some really interesting things you can do when all that functionality is available in one place and you have a library like libdispatch written on top of it.
Right, libdispatch is a OSXism which I've never used because I like to write portable code. -- but if you know that your code is always going to run on systems which support it, it's definitely something which can be useful.
Incidentally, some of these things work on Ubuntu: superpages, zfs, and clang. & I wouldn't call Journalled Softupdates an advantage, more of a catch-up to the various journalled filesystems supported by Linux.
Journalled softupdates is much better than mere journalling.

I don't know what the current state of ZFS on Linux is, but last time I looked it was done with a very fragile FUSE setup.

I remember hearing rants from FreeBSD VM people about how Linux did superpages wrong, but I don't know any of the details there.

Actually there is a native ZFS port for linux: http://zfsonlinux.org/

The license doesn't allow to distribute a binary build of it, but you can build your own rpm and deb packages and install it to your own servers.

(According to their FAQ: "In a nutshell [...] This means that a single derived work of the Linux kernel and ZFS cannot be legally distributed."

Honestly, besides some quick tests I don't have any experience to judge how stable it is, but definitely better than the fragile fuse setup you are mentioning.

Anyone has more experience with it?

I found softupdates to be superior to traditional journaled filesystems for boot filesystem - BIOS can't replay the journal, but softupdates provide always consistent fs state on disk, so kernel and modules can be loaded and booted. Only leaks of free blocks need to be fixed with background fsck if filesystem is dirty.