ABISS

 Download

ABISS main page

 abiss-13 (30-MAR-2006)
abiss-13.tar.gz (153 kB)

Changes:

  • Kernel:
    • upgraded to 2.6.16.1
    • switched compatibility ioctls from global handler to compat_ioctl
    • priority scheme is now compatible with CFQ and ABISS does no longer insist on using the ABISS elevator
    • also compiles with CONFIG_ABISS=n

 abiss-12 (16-MAR-2006)
abiss-12.tar.gz (154 kB)

Changes:

  • Tests:
    • added regression tests for new buffer code (tests/nbuf/)
  • abissd:
    • added a new variable type "vector", which is a list of integers
    • SIGUSR1 is now dispatched to the function "signal" of the scheduler modules
    • abissd_basic: new variable "resize_bytes", which contains the buffer sizes that will be requested on reception of SIGUSR1 (this is for experiments only)
  • Kernel:
    • space for page pointers in the playout buffer is now allocated in page-sized chunks instead of a contiguous vector
    • buffer management is now generalized in include/linux/abiss/buffer.h and fs/abiss/buffer.c
    • added infrastructure for buffer resizing triggered by abissd, including queueing of asynchronous notifications to abissd
    • sched_basic can now resize its buffer
    • code is now gcc 4.1.0 clean

 abiss-11 (16-SEP-2005)
abiss-11.tar.gz (148 kB)

Changes:

  • Tests:
    • added regressions tests for new "push" feature of the elevator (push_*)
  • abissd:
    • new variables io_latency_secs and submit_latency_secs to set system-specific delays of I/O operations
    • new flag variable allow_batch_bytes_override to let applications choose their own batch size (Flags are set with -o flag_name. They cannot be unset.)
    • cleaned up printing of parameters (in verbose mode)
  • Kernel:
    • upgraded to 2.6.12.6
    • the elevator now regularly inserts a barrier-like "push" at each priority level, to avoid starvation
    • new elevator sysfs variable: "push_interval" for tuning, and "requests_until_push" for the current counter
    • removed file location map preloading and updating
    • moved all performance-related parameters from the "basic" scheduler to its abissd plugin
    • the abissd device (typically /dev/misc/abissd) can only be opened by a "native" application
  • Documentation:
    • doc/sysfs.txt: added description of the push interval

 abiss-10 (27-JUL-2005)
abiss-10.tar.gz (151 kB)

Changes:

  • Tools:
    • chabiss now prints more helpful error messages
    • distribution included src/rdr/watchf binary instead of watchf.c source, oops
    • rwrt: new option -R to print measurement results immediately, e.g., for real-time graphing
  • Kernel:
    • upgraded to 2.6.12

 abiss-9 (29-JUN-2005)
abiss-9.tar.gz (153 kB)

Changes:

  • Tools:
    • rwrt: new options -b and -g to plot jitter after updating the playout point, not only the read/write operation
    • store value returned by getopt in an int, not a char (since char can be unsigned)
  • Kernel:
    • moved from large combined patches to fine-grained patches, managed with quilt
    • schedulers can now be modules (added modularization formalities and exports)
    • fs/abiss/tools.h: fixed build failure on non-X86 architectures
    • fs/abiss/tools.[ch]: moved page ownership tracing to page-owner.[ch]
  • Documentation:
    • INSTALL: described when and how to use ABISS_KSRC

 abiss-8 (11-APR-2005)
abiss-8.tar.gz (143 kB)

Changes:

  • Tools:
    • rdrt: renamed to rwrt, since it doesn't only read anymore
    • rwrt: stops reading/writing at end of current iteration if sent a SIGUSR1 (useful for terminating background activity)
    • rwrt: if no read/write size is specified on the command line, uses st_blksize
  • abissd:
    • dynamically adjusts message buffer size to receive kernel messages of arbitrary length
  • Kernel:
    • FAT: added a mechanism for making allocations more contiguous, with new mount option space=
    • abiss_acquire_page now doesn't BUG_ON if it sees EEXIST more than once (which would be a very unusual but still possible occurrence)
    • abiss_acquire_page: don't set PG_delalloc if the page is locked
    • abiss_acquire_page: set PG_delalloc only if the file is open for writing. Also redesigned page reference counting.
    • made some things "static" that weren't

 abiss-7 (14-MAR-2005)
abiss-7.tar.gz (143 kB)

Changes:

  • Tests:
    • Makefiles now detect if gcc supports -Wno-declaration-after-statement
    • src/libabiss/tests/Makefile: no longer uses environment variables from internal build process
  • Tools:
    • rdrt: removed obsolete options -b, -e, -f, and -i
    • rdrt: now captures sleep duration (when operating at a fixed rate), accessed with options -y (all measurements), and -z (histogram)
    • rdrt: now captures the distance (in bytes) the playout point has effectively moved, accessed with options -j (all measurements) and -k (histogram)
    • rdrt: new option "-T text" to include a message in the progress bar
    • chabiss: removed the allocator argument
  • Kernel:
    • upgraded to 2.6.11
    • removed pt.patch (generalized prio_tree is part of mainline now)
    • location map could provide answers for blocks allocated but not counted by underlying file system driver (e.g. FAT's MSDOS_I(inode)->mmu_private)
    • added experimental configuration option CONFIG_ABISS_DELAYED_ALLOC to enable delayed allocations
    • the ABISS scheduler can now advance the playout buffer beyond EOF if writing
    • added page flag PG_delalloc to indicate that the usual prepare/commit process is not needed when writing, and that the page is exempted from writeback
    • abiss_put_page initiates writeback of pages marked for delayed allocation
    • changed locking in FAT allocation path to avoid interference with delayed allocation
    • ABISS now uses "unlocked" ioctls (not holding the BKL) on FAT
    • new ABISS message abiss_position_fb, which works like abiss_position, but also returns by how many bytes the playout point has truly moved in the kernel
    • added some debugging and tracing tools in MM and fs/abiss/tools.[ch]
    • removed the "allocator"
    • "basic" scheduler: removed the consider_write parameter
    • removed the abiss_detach message (was a no-op)

 abiss-6 (23-FEB-2005)
abiss-6.tar.gz (149 kB)

Changes:

  • Tools:
    • rdrt: new options -M, -d, and -q for experimental memory reclaiming and the corresponding statistics
    • rdrt: new options -W and -n to write instead of reading, and to set the number of buffers to write
    • rdrt: new option -S to generate or check sequence numbers
  • abissd:
    • removed "ignore_failure" work-around
  • Kernel:
    • rewrote the interface to abissd: applications waiting to talk to abissd can no longer interrupt the wait, but it is automatically is interrupted if abissd dies
    • new configuration option CONFIG_ABISS_DIRECT_MM to enable experimental code for direct control of memory management
    • added experimental message "abiss_direct_mm" to trigger some memory reclaim action (currently: run balance_pgdat on NUMA node 1)
  • Documentation:
    • doc/new-scheduler.txt: brief description of how to add a new scheduler to ABISS

 abiss-5 (20-JAN-2005)
abiss-5.tar.gz (144 kB)

Changes:

  • Tools:
    • in order to force recompilation, "make clean" now removes executables, if there are no intermediate .o files
    • ptree now runs in O(nodes) instead of O(2^depth)
    • abissd now ignores failed write after a close indication, as a work-around for signal handling problems
    • query-then-zero mode of abistat (-z) returned the wrong result and mis-configured the kernel side
  • Tests:
    • updated tests/rpst/ for prio_tree algorithm changes in mainline
  • Kernel:
    • upgraded to 2.6.10
    • elevator switching now uses the version in mainline, not Nick Piggin's patch
    • moved "local" header files from include/linux/abiss to fs/abiss
    • changed "if (x) kfree(x);" to "kfree(x);"
    • changed uint64_t to __u64 in headers defining interfaces to user space
    • the ioctl number used for ABISS now follows the standard numbering scheme
    • the ABISS ioctls now also work in 32 bit compatibility mode on amd64
    • fs/fat/inode.c:fat_remount, fat_super: set MS_NOATIME in super block flags to avoid stray writes
    • removed BUG_ON that could crash elevator in abiss_remove_req when using power management
    • fs/abiss/daemon.c: changed one semaphore to completion

 abiss-4 (24-NOV-2004)
abiss-4.tar.gz (149 kB)

Changes:

  • Testing:
    • added regression tests for the ABISS elevator, red-black tree traversal functions, and radix priority search trees (tests/)
    • added regression tests for ptree (src/ptree/tests) and libabiss (src/libabiss/tests)
  • Tools:
    • added new tools "mktestfs" (creates a file system) and "linuxenv.bash" (intelligently launches a UML kernel) in src/libabiss/tests/
    • "ptree" is now symlinked from bin/
  • libabiss:
    • added versioned links to the shared version in lib/

 abiss-3 (18-NOV-2004)
abiss-3.tar.gz (128 kB)

Changes:

  • Kernel:
    • removed left-over items tied to CONFIG_SCHED_LOW_POWER (reported by Chris White)
    • the protocol between abissd and the kernel now requires acknowledgement of close indications, and allows for unsolicited messages from abissd
    • renamed the "test" scheduler to "basic"
    • the ABISS elevator could allow reads to be sorted behind a barrier carrying a power management suspend or shutdown
    • added experimental support for ext2
    • new patch pt.patch to generalize radix priority search trees
  • abissd:
    • updated for protocol changes
    • updated for "test" to "basic" renaming
  • libabiss, rdrt:
    • updated for "test" to "basic" renaming

 abiss-2 (9-NOV-2004)
abiss-2.tar.gz (127 kB)

Changes:

  • Kernel:
    • upgraded to 2.6.9
    • fs/abiss/prio_tree.c:abiss_prio_tree_init: fixed invocation (reported by Benno van den Brink)
    • added umount notifier, which ABISS uses to clean up when unmounting (instead of messing with the super block's reference count)
    • fs/abiss/file.c: restructured get_block support to avoid calling out to file system's get_block function
    • added experimental support for ext3
    • fs/abiss/prio_tree.c: added functions for validation and analysis
    • fs/abiss/file.c: made debugging printks less chatty
  • Tools:
    • added new tool "ptree" to pretty-print binary trees
    • rdrt sometimes printed the time since the epoch instead of the total run time

 abiss-1 (21-OCT-2004)
abiss-1.tar.gz (122 kB)

Changes:

  • General:
    • README: corrected Nick Piggin's name
    • Makefile: added SHA1 sum
  • Tools:
    • rdrt now measures the time to move the playout point separately, and sports two new options, -p and -a, to print this time over run time, or in a histogram
    • rdrt now limits memory allocations (can be turned off with new option -x), and its CPU priority can be lowered to normal with new option -o
  • abissd:
    • abissd/var.c:var_assignment: forgot that strncpy does not always NUL-terminate its strings
  • Kernel:
    • switched from "unofficial" uml-patch-2.6.7-01 to "official" uml-patch-2.6.7-1
    • removed per-file (really per-inode) priorities, because we already have per-task priorities
    • fs/abiss/sched_lib.c:abiss_hp_raise: set "sched_priority" to 1 instead of (invalid) 0
    • removed /sys/block/.../default_priority
    • fs/abiss/sched_test.c: in an abiss_st_query message, msg.u.query.page_state can now be NULL to omit retrieving the potentially large page state array
    • removed access prediction for allocations
    • added reserved space to "struct abiss_sched_test_prm", to allow for future extensions without breaking binary compatibility
    • sched_test.c now tries to refill buffers of different files at the same time, to avoid excessive seeking
    • fs/abiss/elevator.c: added some tracing to hunt down a heisenbug

 abiss-0 (14-JUL-2004)
abiss-0.tar.gz (120 kB)

Changes:

  • Initial release

Last update: 30-MAR-2006   Werner Almesberger