https://github.com/torvalds/linux
Revision de3cb945db4d8eb3b046dc7a5ea89a893372750c authored by Chris Mason on 04 March 2013, 22:13:31 UTC, committed by Chris Mason on 07 March 2013, 12:52:40 UTC
The delayed inode code batches up changes to the btree in hopes of doing them in bulk. As the changes build up, processes kick off worker threads and wait for them to make progress. The current code kicks off an async work queue item for each delayed node, which creates a lot of churn. It also uses a fixed 1 HZ waiting period for the throttle, which allows us to build a lot of pending work and can slow down the commit. This changes us to watch a sequence counter as it is bumped during the operations. We kick off fewer work items and have each work item do more work. Signed-off-by: Chris Mason <chris.mason@fusionio.com>
1 parent 3a01aa7
Tip revision: de3cb945db4d8eb3b046dc7a5ea89a893372750c authored by Chris Mason on 04 March 2013, 22:13:31 UTC
Btrfs: improve the delayed inode throttling
Btrfs: improve the delayed inode throttling
Tip revision: de3cb94
File | Mode | Size |
---|---|---|
debug | ||
events | ||
gcov | ||
irq | ||
power | ||
sched | ||
time | ||
trace | ||
.gitignore | -rw-r--r-- | 63 bytes |
Kconfig.freezer | -rw-r--r-- | 52 bytes |
Kconfig.hz | -rw-r--r-- | 1.7 KB |
Kconfig.locks | -rw-r--r-- | 4.3 KB |
Kconfig.preempt | -rw-r--r-- | 2.1 KB |
Makefile | -rw-r--r-- | 7.2 KB |
acct.c | -rw-r--r-- | 16.6 KB |
async.c | -rw-r--r-- | 10.9 KB |
audit.c | -rw-r--r-- | 40.7 KB |
audit.h | -rw-r--r-- | 5.8 KB |
audit_tree.c | -rw-r--r-- | 22.2 KB |
audit_watch.c | -rw-r--r-- | 13.9 KB |
auditfilter.c | -rw-r--r-- | 36.1 KB |
auditsc.c | -rw-r--r-- | 71.9 KB |
backtracetest.c | -rw-r--r-- | 2.1 KB |
bounds.c | -rw-r--r-- | 600 bytes |
capability.c | -rw-r--r-- | 11.7 KB |
cgroup.c | -rw-r--r-- | 147.5 KB |
cgroup_freezer.c | -rw-r--r-- | 12.9 KB |
compat.c | -rw-r--r-- | 30.9 KB |
configs.c | -rw-r--r-- | 2.8 KB |
context_tracking.c | -rw-r--r-- | 2.1 KB |
cpu.c | -rw-r--r-- | 17.4 KB |
cpu_pm.c | -rw-r--r-- | 6.5 KB |
cpuset.c | -rw-r--r-- | 73.8 KB |
crash_dump.c | -rw-r--r-- | 1.2 KB |
cred.c | -rw-r--r-- | 21.2 KB |
delayacct.c | -rw-r--r-- | 5.0 KB |
dma.c | -rw-r--r-- | 3.6 KB |
elfcore.c | -rw-r--r-- | 459 bytes |
exec_domain.c | -rw-r--r-- | 4.3 KB |
exit.c | -rw-r--r-- | 42.9 KB |
extable.c | -rw-r--r-- | 3.9 KB |
fork.c | -rw-r--r-- | 45.5 KB |
freezer.c | -rw-r--r-- | 4.0 KB |
futex.c | -rw-r--r-- | 71.2 KB |
futex_compat.c | -rw-r--r-- | 4.5 KB |
groups.c | -rw-r--r-- | 6.0 KB |
hrtimer.c | -rw-r--r-- | 47.0 KB |
hung_task.c | -rw-r--r-- | 5.3 KB |
irq_work.c | -rw-r--r-- | 3.1 KB |
itimer.c | -rw-r--r-- | 7.3 KB |
jump_label.c | -rw-r--r-- | 10.8 KB |
kallsyms.c | -rw-r--r-- | 14.7 KB |
kcmp.c | -rw-r--r-- | 4.3 KB |
kexec.c | -rw-r--r-- | 39.6 KB |
kfifo.c | -rw-r--r-- | 12.8 KB |
kmod.c | -rw-r--r-- | 18.9 KB |
kprobes.c | -rw-r--r-- | 59.1 KB |
ksysfs.c | -rw-r--r-- | 5.5 KB |
kthread.c | -rw-r--r-- | 16.9 KB |
latencytop.c | -rw-r--r-- | 7.6 KB |
lglock.c | -rw-r--r-- | 1.9 KB |
lockdep.c | -rw-r--r-- | 103.8 KB |
lockdep_internals.h | -rw-r--r-- | 4.5 KB |
lockdep_proc.c | -rw-r--r-- | 17.0 KB |
lockdep_states.h | -rw-r--r-- | 233 bytes |
modsign_certificate.S | -rw-r--r-- | 467 bytes |
modsign_pubkey.c | -rw-r--r-- | 2.6 KB |
module-internal.h | -rw-r--r-- | 495 bytes |
module.c | -rw-r--r-- | 95.9 KB |
module_signing.c | -rw-r--r-- | 5.9 KB |
mutex-debug.c | -rw-r--r-- | 2.9 KB |
mutex-debug.h | -rw-r--r-- | 1.7 KB |
mutex.c | -rw-r--r-- | 13.2 KB |
mutex.h | -rw-r--r-- | 1.3 KB |
notifier.c | -rw-r--r-- | 16.0 KB |
nsproxy.c | -rw-r--r-- | 6.3 KB |
padata.c | -rw-r--r-- | 27.1 KB |
panic.c | -rw-r--r-- | 11.2 KB |
params.c | -rw-r--r-- | 21.7 KB |
pid.c | -rw-r--r-- | 14.8 KB |
pid_namespace.c | -rw-r--r-- | 8.8 KB |
posix-cpu-timers.c | -rw-r--r-- | 40.7 KB |
posix-timers.c | -rw-r--r-- | 29.1 KB |
printk.c | -rw-r--r-- | 69.9 KB |
profile.c | -rw-r--r-- | 16.7 KB |
ptrace.c | -rw-r--r-- | 27.6 KB |
range.c | -rw-r--r-- | 2.9 KB |
rcu.h | -rw-r--r-- | 3.8 KB |
rcupdate.c | -rw-r--r-- | 11.8 KB |
rcutiny.c | -rw-r--r-- | 10.3 KB |
rcutiny_plugin.h | -rw-r--r-- | 31.6 KB |
rcutorture.c | -rw-r--r-- | 62.2 KB |
rcutree.c | -rw-r--r-- | 94.4 KB |
rcutree.h | -rw-r--r-- | 22.7 KB |
rcutree_plugin.h | -rw-r--r-- | 73.6 KB |
rcutree_trace.c | -rw-r--r-- | 12.9 KB |
relay.c | -rw-r--r-- | 32.8 KB |
res_counter.c | -rw-r--r-- | 4.3 KB |
resource.c | -rw-r--r-- | 27.8 KB |
rtmutex-debug.c | -rw-r--r-- | 4.7 KB |
rtmutex-debug.h | -rw-r--r-- | 1.4 KB |
rtmutex-tester.c | -rw-r--r-- | 8.7 KB |
rtmutex.c | -rw-r--r-- | 26.3 KB |
rtmutex.h | -rw-r--r-- | 1.1 KB |
rtmutex_common.h | -rw-r--r-- | 3.3 KB |
rwsem.c | -rw-r--r-- | 2.6 KB |
seccomp.c | -rw-r--r-- | 13.9 KB |
semaphore.c | -rw-r--r-- | 7.2 KB |
signal.c | -rw-r--r-- | 87.8 KB |
smp.c | -rw-r--r-- | 22.1 KB |
smpboot.c | -rw-r--r-- | 6.5 KB |
smpboot.h | -rw-r--r-- | 564 bytes |
softirq.c | -rw-r--r-- | 20.8 KB |
spinlock.c | -rw-r--r-- | 9.5 KB |
srcu.c | -rw-r--r-- | 19.6 KB |
stacktrace.c | -rw-r--r-- | 1.1 KB |
stop_machine.c | -rw-r--r-- | 15.5 KB |
sys.c | -rw-r--r-- | 52.2 KB |
sys_ni.c | -rw-r--r-- | 5.9 KB |
sysctl.c | -rw-r--r-- | 59.5 KB |
sysctl_binary.c | -rw-r--r-- | 51.5 KB |
task_work.c | -rw-r--r-- | 2.2 KB |
taskstats.c | -rw-r--r-- | 16.4 KB |
test_kprobes.c | -rw-r--r-- | 8.5 KB |
time.c | -rw-r--r-- | 18.6 KB |
timeconst.pl | -rw-r--r-- | 7.2 KB |
timer.c | -rw-r--r-- | 49.6 KB |
tracepoint.c | -rw-r--r-- | 19.7 KB |
tsacct.c | -rw-r--r-- | 4.4 KB |
uid16.c | -rw-r--r-- | 6.0 KB |
up.c | -rw-r--r-- | 413 bytes |
user-return-notifier.c | -rw-r--r-- | 1.3 KB |
user.c | -rw-r--r-- | 5.2 KB |
user_namespace.c | -rw-r--r-- | 21.2 KB |
utsname.c | -rw-r--r-- | 2.8 KB |
utsname_sysctl.c | -rw-r--r-- | 3.0 KB |
wait.c | -rw-r--r-- | 8.3 KB |
watchdog.c | -rw-r--r-- | 13.9 KB |
workqueue.c | -rw-r--r-- | 106.5 KB |
workqueue_sched.h | -rw-r--r-- | 311 bytes |
Computing file changes ...