[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