[PATCH] Add checking num-threads of makedumpfile
"Zhou, Wenjian/周文剑"
zhouwj-fnst at cn.fujitsu.com
Tue Aug 25 06:17:20 UTC 2015
On 08/25/2015 02:11 PM, Minfei Huang wrote:
> On 08/25/15 at 01:49pm, "Zhou, Wenjian/周文剑" wrote:
>> Hello Minfei,
>>
>> Thanks for your quick reply.
>>
>> On 08/25/2015 01:42 PM, Minfei Huang wrote:
>>> On 08/25/15 at 12:51pm, Zhou Wenjian wrote:
>>>> A new feature that doing compressing and writing by multi-threads
>>>> has been added in makedumpfile. The thread num is specified by
>>>> "--num-threads NUM". According to its implementation, there will
>>>> be performance degradation if the threads are more than cpus.
>>>> So we should check it.
>>>>
>>>> Signed-off-by: Zhou wenjian <zhouwj-fnst at cn.fujitsu.com>
>>>> ---
>>>> kdumpctl | 16 ++++++++++++++++
>>>> 1 files changed, 16 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/kdumpctl b/kdumpctl
>>>> index b504734..a4b4681 100755
>>>> --- a/kdumpctl
>>>> +++ b/kdumpctl
>>>> @@ -259,6 +259,22 @@ check_config()
>>>> esac
>>>> done < $KDUMP_CONFIG_FILE
>>>>
>>>> + grep -v "^#" $KDUMP_CONFIG_FILE | grep -q "num-threads"
>>>
>>> This filter cannot handle the all of the corner cases, like the
>>> following.
>>>
>>> # grep -v "^#" /etc/kdump.conf | grep "num-threads"
>>> ext4 /dev/mapper/num-threads
>>>
>>> So it is better to use the exact regular expression to filter out the
>>> string. Maybe you can use $core_collector to filter out the string
>>> --num_threads.
>>>
>>
>> I see.
>>
>>>> + if [ $? -eq 0 ];then
>>>> + local nr_cpus=1
>>>> + local num_threads=0
>>>> + local core_collector=`grep -v "^#" $KDUMP_CONFIG_FILE | grep "^core_collector"`
>>>> +
>>>> + num_threads=`echo ${core_collector#*--num-threads} | awk '{print $1}'`
>>>> + nr_cpus=`echo ${KDUMP_COMMANDLINE_APPEND#*nr_cpus=} | awk '{print $1}'`
>>>> +
>>>> + test $num_threads -ge $nr_cpus &> /dev/null
>>>> + if [ $? -eq 0 ];then
>>>
>>> To keep the style, it is better to use "if [ $a -ge $b ]".
>>>
>>
>> Using "test" is to handle the situation that the $num_threads or $nr_cpus is not an integer.
>>
>
> Is it allowed for $num_threads or $nr_cpus, if the value is not the
> integer?
>
Of course not integer is invalid. But the value of num_threads won't be checked
until makedumpfile is executed.
If user sets "core_collector makedumpfile --num-threads a" in kdump.conf, it will
lead to a fault here.
>> BTW, should we add some descriptions to this feature of makedumpfile in some where?
>
> IMO, it is appropriate to document it in the makedumpfile manpage, like
> the feature --split. For kdump, we only document the default usages for
> makedumpfile in kexec-kdump-howto.txt.
>
--
Thanks
Zhou
More information about the kexec
mailing list