explicit on-stack per-task plugging
- 末节的 Discussion 很精彩,大神 Neil Brown 答疑解惑
- A block layer introduction part 1: the bio layer, Neil Brown, October 25, 2017, lwn.net
- Explicit block device plugging, Jens Axboe, April 13, 2011, lwn.net
- No more global unplugging, corbet, March 10, 2004, lwn.net
plugging 进化
-
global plugging/unplugging : performance …
lock_stat
LOCK STATISTICS
WHAT
As the name suggests, it provides statistics on locks.
WHY
Because things like lock contention can severely impact performance.
HOW
Lockdep already has hooks in the lock functions and maps lock instances to lock classes. We build on that (see Documentation/locking/lockdep-design.txt). The …
more ...virtualbox-5.2.24 dkms build failed against x86_32 kernel 5.1.0-rc1+
kernel 5.1 相比 5.0 又发生了新的变化,导致 virtualbox-5.2.24 的编译又失败了,是 2 个 commit 引起的变化:
- commit 746c9398f5ac2b3f5730da4ed09e99ef4bb50b4a
arch: move common mmap flags to linux/mman.h
...
- commit 736706bee3298208343a76096370e4f6a5c55915
get rid of legacy 'get_ds()' function
...
解决方法是修改 /usr/src/virtualbox-5.2.24/r0drv/linux/the-linux-kernel.h
#include <asm/mman.h …
sbitmap & sbitmap_queue & sbq_wait
struct sbitmap - scalable bitmap
A &struct sbitmap is spread over multiple cachelines to avoid ping-pong. This trades off higher memory usage for better scalability 最浪费空间的情况是 1 bit per cacheline.
There are depth / bits_per_word full words and depth % bits_per_word bits left over. In bitwise arithmetic:
bits_per_word = 1 …
bno_plot - generate interactive 3D plot of IO blocks and sizes
- blktrace.git
- man bno_plot
- /usr/share/doc/blktrace/btt.pdf
To use this utility, the gnuplot package needs to be installed.
bno_plot is a visualization tool for the block layer IO tracing tool called blktrace(8). As noted in its documentation, blktrace is a block layer IO tracing mechanism which …
more ...btt - analyse block i/o traces produces by blktrace
- blktrace.git
- man btt
- /usr/share/doc/blktrace/btt.pdf
btt is a post-processing tool for the block layer IO tracing tool called blktrace(8). As noted in its documentation, blktrace is a block layer IO tracing mechanism which provides detailed information about request queue operations up to user space …
more ...btreplay - recreate IO loads recorded by blktrace
- blktrace.git
- man btreplay
- /usr/share/doc/blktrace/btreplay.pdf
The btrecord and btreplay tools provide the ability to record and replay IOs captured by the blktrace utility. Attempts are made to maintain ordering, CPU mappings and time-separation of IOs.
The blktrace utility provides the ability to collect detailed traces …
more ...btrecord - recreate IO loads recorded by blktrace
- blktrace.git
- man btrecord
- /usr/share/doc/blktrace/btreplay.pdf
The btrecord and btreplay tools provide the ability to record and replay IOs captured by the blktrace utility. Attempts are made to maintain ordering, CPU mappings and time-separation of IOs.
The blktrace utility provides the ability to collect detailed traces …
more ...blkiomon - monitor block device I/O based o blktrace data
- blktrace.git
- man blkiomon
blkiomon is a block device I/O monitor. It periodically generates per-device request size and request latency statistics from blktrace data. It provides histograms as well as data that can be used to calculate min, max, average and variance. For this purpose, it consumes D and …
more ...iowatcher - Create visualizations from blktrace results
- blktrace.git
- man iowatcher
iowatcher [options] [--] [program arguments ...]
blktrace/
iowatcher/
├── blkparse.c
├── blkparse.h
├── COPYING
├── fio.c
├── fio.h
├── list.h
├── main.c
├── Makefile
├── mpstat.c
├── mpstat.h
├── plot.c
├── plot.h
├── tracers.c
└── tracers.h
iowatcher graphs the results of a blktrace run. It can graph the result of …
more ...