[DTrace-devel] [PATCH] test: Bump timeouts up for bpflogsize tests

Eugene Loh eugene.loh at oracle.com
Sat Mar 2 00:54:04 UTC 2024


On 2/29/24 23:22, Kris Van Hees wrote:

> On Thu, Feb 29, 2024 at 07:08:28PM -0500, Eugene Loh via DTrace-devel wrote:
>> The tests run a script that looks like this:
>>
>> BEGIN
>> {
>>          x = 1;
>>          @ = quantize(x);
>>          @ = quantize(x);
>>          @ = quantize(x);
>>          [this "quantize" line appears a total of 2000 times]
>>          @ = quantize(x);
>>          @ = quantize(x);
>>          @ = quantize(x);
>>          exit(0);
>> }
>>
>> That is, it's an intentionally large program.
>>
>> In dt_bpf.c, we try loading some tiny test programs for have_helpers().
>> They do not take much time.  But we also call dt_bpf_load_prog() to load the
>> big BEGIN program... twice!  (The first time fails, so we call again but now
>> with a log file enabled.)  On an OL8 x86 VM, I get about 0.05 for the first
>> dt_bpf_prog_load() call (no log file) and about 0.35 secs for the second
>> dt_bpf_prog_load() call (with log file).  (As you probably know,
>> bpf_load_prog() calls bpf_prog_load().  Confusing naming.) So, the test does
>> not take much time.
>>
>> On an OL9 x86 VM, however, each bpf_prog_load() call takes about 5 seconds.
>> While it allows for retries, the long duration is not due to retries:  a
>> single bpf(BPF_PROG_LOAD, ...) system call is taking that long, apparently
>> due to the size of the program being loaded.  Smaller programs are much
>> faster.
> Oh my.  That is quite long - this might be something Alan might be interested
> in because that seems to be prohibitively slow.  I wonder whether it is the
> verifier taking that long or some other processing.

Yeah.  Slow.  The time spent in the bpf(BPF_PROG_LOAD, ...) seems to be 
pretty much exactly the time spent in the BPF verifier bpf_check().  The 
time looks like it grows as a quadratic function of program size at 
first and then jump to an even faster quadratic.

I'll check with Alan.

Also, what about the patch?  For now, I will withdraw it and submit 
another patch that includes this and one other test that runs into this 
problem.  That way, our tests can pass while the kernel people look at 
the verifier.

>> The test incurs this operation multiple times.  Add to that some other
>> overheads, and soon you're bumping up against the timeout.
>>
>> On 2/29/24 13:19, Kris Van Hees wrote:
>>> Do we have any idea why it is a timeout issue?  Perhaps you could try adding
>>> some timing info (just for debugging this) to see how long the bpf syscalls
>>> take, to see if it is a delay at the kernel side or elsewhere?
>>>
>>> On Wed, Feb 28, 2024 at 07:29:11PM -0500, eugene.loh--- via DTrace-devel wrote:
>>>> From: Eugene Loh <eugene.loh at oracle.com>
>>>>
>>>> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
>>>> ---
>>>>    test/unittest/options/tst.bpflogsize-cmdline.sh | 3 ++-
>>>>    test/unittest/options/tst.bpflogsize-pragma.sh  | 3 ++-
>>>>    2 files changed, 4 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/test/unittest/options/tst.bpflogsize-cmdline.sh b/test/unittest/options/tst.bpflogsize-cmdline.sh
>>>> index 2d85e12c..509f9d07 100755
>>>> --- a/test/unittest/options/tst.bpflogsize-cmdline.sh
>>>> +++ b/test/unittest/options/tst.bpflogsize-cmdline.sh
>>>> @@ -1,10 +1,11 @@
>>>>    #!/bin/bash
>>>>    #
>>>>    # Oracle Linux DTrace.
>>>> -# Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
>>>> +# Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved.
>>>>    # Licensed under the Universal Permissive License v 1.0 as shown at
>>>>    # http://oss.oracle.com/licenses/upl.
>>>>    #
>>>> +# @@timeout: 100
>>>>    dtrace=$1
>>>> diff --git a/test/unittest/options/tst.bpflogsize-pragma.sh b/test/unittest/options/tst.bpflogsize-pragma.sh
>>>> index 5d03b5f7..3dea3dd4 100755
>>>> --- a/test/unittest/options/tst.bpflogsize-pragma.sh
>>>> +++ b/test/unittest/options/tst.bpflogsize-pragma.sh
>>>> @@ -1,10 +1,11 @@
>>>>    #!/bin/bash
>>>>    #
>>>>    # Oracle Linux DTrace.
>>>> -# Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
>>>> +# Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved.
>>>>    # Licensed under the Universal Permissive License v 1.0 as shown at
>>>>    # http://oss.oracle.com/licenses/upl.
>>>>    #
>>>> +# @@timeout: 100
>>>>    dtrace=$1
>>>> -- 
>>>> 2.18.4
>>>>
>>>>
>>>> _______________________________________________
>>>> DTrace-devel mailing list
>>>> DTrace-devel at oss.oracle.com
>>>> https://oss.oracle.com/mailman/listinfo/dtrace-devel
>> _______________________________________________
>> DTrace-devel mailing list
>> DTrace-devel at oss.oracle.com
>> https://oss.oracle.com/mailman/listinfo/dtrace-devel



More information about the DTrace-devel mailing list