The "time kdumpctl start" command shows that strip_comments()
consumes lots of cpu time. By only calling it when necessary,
it saves us nearly half second.
Tested on my Fedora kvm machine.
Before this patch:
$ time kdumpctl start
kexec: loaded kdump kernel
Starting kdump: [OK]
real 0m1.849s
user 0m1.497s
sys 0m0.462s
After this patch:
$ time kdumpctl start
kexec: loaded kdump kernel
Starting kdump: [OK]
real 0m1.344s
user 0m1.195s
sys 0m0.195s
Signed-off-by: Xunlei Pang <xlpang(a)redhat.com>
---
kdumpctl | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/kdumpctl b/kdumpctl
index 644cf96..4d3f053 100755
--- a/kdumpctl
+++ b/kdumpctl
@@ -366,12 +366,12 @@ check_config()
}
while read config_opt config_val; do
- # remove inline comments after the end of a directive.
- config_val=$(strip_comments $config_val)
case "$config_opt" in
\#* | "")
;;
raw|ext2|ext3|ext4|minix|btrfs|xfs|nfs|ssh|sshkey|path|core_collector|kdump_post|kdump_pre|extra_bins|extra_modules|default|force_rebuild|force_no_rebuild|dracut_args|fence_kdump_args|fence_kdump_nodes)
+ # remove inline comments after the end of a directive.
+ config_val=$(strip_comments $config_val)
[ -z "$config_val" ] && {
echo "Invalid kdump config value for option $config_opt."
return 1;
@@ -800,10 +800,10 @@ load_kdump()
check_ssh_config()
{
while read config_opt config_val; do
- # remove inline comments after the end of a directive.
- config_val=$(strip_comments $config_val)
case "$config_opt" in
sshkey)
+ # remove inline comments after the end of a directive.
+ config_val=$(strip_comments $config_val)
if [ -f "$config_val" ]; then
# canonicalize the path
SSH_KEY_LOCATION=$(/usr/bin/readlink -m $config_val)
@@ -812,9 +812,11 @@ check_ssh_config()
fi
;;
path)
+ config_val=$(strip_comments $config_val)
SAVE_PATH=$config_val
;;
ssh)
+ config_val=$(strip_comments $config_val)
DUMP_TARGET=$config_val
;;
*)
--
1.8.3.1