Message ID | 20230814132309.32641-1-rf@opensource.cirrus.com (mailing list archive) |
---|---|
Headers | show |
Series | kunit: Add dynamically-extending log | expand |
On Mon, 14 Aug 2023 at 21:23, Richard Fitzgerald <rf@opensource.cirrus.com> wrote: > > This patch chain changes the logging implementation to use string_stream > so that the log will grow dynamically. > > The first 8 patches add test code for string_stream, and make some > changes to string_stream needed to be able to use it for the log. > > The final patch adds a performance report of string_stream. > > CHANGES SINCE V3: > > Completely rewritten to use string_stream instead of implementing a > separate extending-buffer implementation for logging. > > I have used the performance test from the final patch on my original > fixed-size-fragment implementation from V3 to get a comparison of the > two implementations (run on i3-8145UE CPU @ 2.20GHz): > > string_stream V3 fixed-size-buffer > Time elapsed: 7748 us 3251 us > Total string length: 573890 573890 > Bytes requested: 823994 728336 > Actual bytes allocated: 1061440 728352 > > I don't think the difference is enough to be worth complicating the > string_stream implementation with my fixed-fragment implementation from > V3 of this patch chain. > Thanks very much! I think this is good to go: I've added a few small comments on various patches, but none of them are serious enough to make me feel we _need_ a new version. I'll leave it for a day or two in case there are any other comments or any changes you want to make, otherwise this can be merged. I agree the performance difference isn't worth the effort. If we change our minds and want to change the implementation over later, that shouldn't be a problem either. So let's stick with it as is. Cheers, -- David > Richard Fitzgerald (10): > kunit: string-stream: Improve testing of string_stream > kunit: string-stream: Don't create a fragment for empty strings > kunit: string-stream: Add cases for adding empty strings to a > string_stream > kunit: string-stream: Add option to make all lines end with newline > kunit: string-stream: Add cases for string_stream newline appending > kunit: string-stream: Pass struct kunit to string_stream_get_string() > kunit: string-stream: Decouple string_stream from kunit > kunit: string-stream: Add test for freeing resource-managed > string_stream > kunit: Use string_stream for test log > kunit: string-stream: Test performance of string_stream > > include/kunit/test.h | 14 +- > lib/kunit/Makefile | 5 +- > lib/kunit/debugfs.c | 36 ++- > lib/kunit/kunit-test.c | 52 +--- > lib/kunit/log-test.c | 72 ++++++ > lib/kunit/string-stream-test.c | 447 +++++++++++++++++++++++++++++++-- > lib/kunit/string-stream.c | 129 +++++++--- > lib/kunit/string-stream.h | 22 +- > lib/kunit/test.c | 48 +--- > 9 files changed, 656 insertions(+), 169 deletions(-) > create mode 100644 lib/kunit/log-test.c > > -- > 2.30.2 >
On Mon, Aug 14, 2023 at 9:23 AM Richard Fitzgerald <rf@opensource.cirrus.com> wrote: > > This patch chain changes the logging implementation to use string_stream > so that the log will grow dynamically. > > The first 8 patches add test code for string_stream, and make some > changes to string_stream needed to be able to use it for the log. > > The final patch adds a performance report of string_stream. > > CHANGES SINCE V3: > > Completely rewritten to use string_stream instead of implementing a > separate extending-buffer implementation for logging. > > I have used the performance test from the final patch on my original > fixed-size-fragment implementation from V3 to get a comparison of the > two implementations (run on i3-8145UE CPU @ 2.20GHz): > > string_stream V3 fixed-size-buffer > Time elapsed: 7748 us 3251 us > Total string length: 573890 573890 > Bytes requested: 823994 728336 > Actual bytes allocated: 1061440 728352 > > I don't think the difference is enough to be worth complicating the > string_stream implementation with my fixed-fragment implementation from > V3 of this patch chain. Hello! I just wanted to note that I have tested this series and it looks good to me. I specifically looked over the newline handling and that looks really good. I understand you will likely be doing a new version of this. But other than the things noted in comments by David, this seems to be working really well. Tested-by: Rae Moar <rmoar@google.com> Thanks for all the work you did in moving this framework to string-stream! -Rae > > Richard Fitzgerald (10): > kunit: string-stream: Improve testing of string_stream > kunit: string-stream: Don't create a fragment for empty strings > kunit: string-stream: Add cases for adding empty strings to a > string_stream > kunit: string-stream: Add option to make all lines end with newline > kunit: string-stream: Add cases for string_stream newline appending > kunit: string-stream: Pass struct kunit to string_stream_get_string() > kunit: string-stream: Decouple string_stream from kunit > kunit: string-stream: Add test for freeing resource-managed > string_stream > kunit: Use string_stream for test log > kunit: string-stream: Test performance of string_stream > > include/kunit/test.h | 14 +- > lib/kunit/Makefile | 5 +- > lib/kunit/debugfs.c | 36 ++- > lib/kunit/kunit-test.c | 52 +--- > lib/kunit/log-test.c | 72 ++++++ > lib/kunit/string-stream-test.c | 447 +++++++++++++++++++++++++++++++-- > lib/kunit/string-stream.c | 129 +++++++--- > lib/kunit/string-stream.h | 22 +- > lib/kunit/test.c | 48 +--- > 9 files changed, 656 insertions(+), 169 deletions(-) > create mode 100644 lib/kunit/log-test.c > > -- > 2.30.2 >