[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: [PATCH 0/3] Speed up modprobe
From: Timo Teräs <timo.teras () iki ! fi>
Date: 2011-06-18 15:56:45
Message-ID: 1308412608-26140-1-git-send-email-timo.teras () iki ! fi
[Download RAW message or body]
Hi,
So instead of rewriting the config_*, I decided to just do the parts that
give the most benefit. And fixing APIs usually should happen incrementally
anyway... that leads to better APIs :)
I did basic testing that things should work still. However, 'make check'
seems to fail for some weird reasons (e.g. sed tests just seg.fault) even
without my patches, so I was not able to run test suite. I also did regular
valgrinding on the patched binary, and there was no complaints.
I benchmarked simple modprobe with callgrind (= userland cycles, not
including kernel read() time). And the speedup is following:
- start situation: 177M
- after modprobe hash: 148M
- after config_* using getline: 65M
- after config_* no per-line malloc: 57M
So the original code is >3x slower than after the patches. Though, the wall
clock execution time might not be as much affected as we do spend time in
kernel read() too.
The module hashing is +51 bytes, and the getline changes (without the
compat function) is around +90 bytes.
Cheers,
Timo
Timo Teräs (3):
modprobe: use hash table for module entry database
platform: provide getline and getdelim if not available
parse_config: use getline to read config
include/libbb.h | 3 +-
include/platform.h | 6 ++++
libbb/parse_config.c | 74 +++++++++++++++++++++++++------------------------
libbb/platform.c | 36 ++++++++++++++++++++++++
modutils/modprobe.c | 13 +++++++--
5 files changed, 92 insertions(+), 40 deletions(-)
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic