diff options
author | Harald Hoyer <harald@redhat.com> | 2008-09-16 09:41:16 +0200 |
---|---|---|
committer | Harald Hoyer <harald@redhat.com> | 2008-09-16 10:38:10 +0200 |
commit | cefaaa0dd6b2d60f674875cc8b86d5846e8033f7 (patch) | |
tree | 7d0c98ac43be903b407366c396362ab782a2aa32 /src | |
parent | c0e42318dcca68d960ca1d7977af2979bc99b8aa (diff) | |
download | initscripts-cefaaa0dd6b2d60f674875cc8b86d5846e8033f7.tar initscripts-cefaaa0dd6b2d60f674875cc8b86d5846e8033f7.tar.gz initscripts-cefaaa0dd6b2d60f674875cc8b86d5846e8033f7.tar.bz2 initscripts-cefaaa0dd6b2d60f674875cc8b86d5846e8033f7.tar.xz initscripts-cefaaa0dd6b2d60f674875cc8b86d5846e8033f7.zip |
https://bugzilla.redhat.com/show_bug.cgi?id=437110
On System z, typical hardware setups can consist of up to several thousand I/O
devices. The current udev rules for handling these devices and the ccw_init
helper script are implemented in an insufficient way, leading to unnecessarily
high usage of memory and cpu time during system startup.
The attached patch against the initscripts-8.45.19.EL-1 source RPM reduces
this resource usage drastically by
a) fixing a number of coding problems in helper script ccw_init (the current
version creates failure indications in /dev/.udev/failed for each device)
b) restricting the ccw_init script to network devices (ccw_init is only
relevant for network devices)
Using these changes, memory consumption on an example system with ~1500
devices could be reduced by 80% (VSZ), resp. 50% (RSS) and the elapsed
duration for udev could be reduced from 19s down to 6 seconds.
Business case: with reduced memory and time consumption during startup, more
Linux images can be run with the same amount of resources.
Diffstat (limited to 'src')
-rwxr-xr-x | src/ccw_init | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/ccw_init b/src/ccw_init index 707ae009..beeaf8bf 100755 --- a/src/ccw_init +++ b/src/ccw_init @@ -3,7 +3,7 @@ [ -z "$DEVPATH" ] && exit 0 [ "$SUBSYSTEM" != "ccw" ] && exit 0 -. /etc/init.d/functions +NOLOCALE="yes" . /etc/sysconfig/network-scripts/network-functions @@ -13,15 +13,16 @@ CHANNEL=${DEVPATH##*/} CONFIG=$(get_config_by_subchannel $CHANNEL) -cd /etc/sysconfig/network-scripts - -source_config +if [ -n "$CONFIG" ]; then + cd /etc/sysconfig/network-scripts + source_config +fi # SUBCHANNELS is only set on mainframe ccwgroup devices -[ -z "$SUBCHANNELS" -o -z "$NETTYPE" ] && return +[ -z "$SUBCHANNELS" -o -z "$NETTYPE" ] && exit 0 DIR="/sys/bus/ccwgroup/drivers/$NETTYPE" SYSDIR="$DIR/${SUBCHANNELS//,*/}" -[ ! -e $DIR/group ] && return +[ ! -e $DIR/group ] && exit 0 echo "$SUBCHANNELS" > $DIR/group if [ -n "$PORTNAME" ]; then if [ "$NETTYPE" = "lcs" ]; then |