From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp55.i.mail.ru (smtp55.i.mail.ru [217.69.128.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 07660452566 for ; Wed, 20 Nov 2019 04:44:12 +0300 (MSK) Date: Wed, 20 Nov 2019 04:44:09 +0300 From: Alexander Turenko Message-ID: <20191120014409.f7r2inhv5on4watf@tkn_work_nb> References: <9bea3bba-ead8-490e-c9f5-aaf385c2637f@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <9bea3bba-ead8-490e-c9f5-aaf385c2637f@tarantool.org> Subject: Re: [Tarantool-patches] [PATCH v3 0/3] fiber.top(): minor fixup List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Serge Petrenko Cc: tarantool-patches@dev.tarantool.org, Vladislav Shpilevoy It still shows miscompares for me: $ cat /proc/cpuinfo | grep processor | wc -l 8 $ (cd test && ./test-run.py $(yes fiber.test.lua | head -n 1000)) commit aefc64faaf7bfbb58ac53bf5abea55d1faabcbfe The miscompare looks so: [006] Test failed! Result content mismatch: [006] --- app/fiber.result Tue Nov 19 20:39:21 2019 [006] +++ app/fiber.reject Wed Nov 20 04:33:39 2019 [006] @@ -1525,7 +1525,7 @@ [006] -- disable the test above. [006] sum_avg <= 100 or sum_avg [006] --- [006] -- true [006] +- 100 [006] ... [006] -- not exact due to accumulated integer division errors [006] --sum_avg > 99 and sum_avg <= 100 or sum_avg Maybe it is some rounding issue. When I changed the condition to sum_avg <= 101, I got: [015] Test failed! Result content mismatch: [015] --- app/fiber.result Wed Nov 20 04:35:14 2019 [015] +++ app/fiber.reject Wed Nov 20 04:35:36 2019 [015] @@ -1512,7 +1512,7 @@ [015] ... [015] sum_inst [015] --- [015] -- 100 [015] +- 45.802853351342 [015] ... [015] -- when a fiber dies, its impact on the thread moving average [015] -- persists for a couple of ev loop iterations, but it is no Sorry, but it does not look okay for me in the sense that it may lead to problems in testing: we already have enough ones. Let's provide a test that will work stable or describe why it is not possible. In the latter case we can extract an unstable test case and mark it as fragile using suite.ini test-run's option. It will not strictly close the problem, but will lower its probability. Maybe we can even retry such tests or allows them to fail: https://github.com/tarantool/test-run/issues/189 Anyway, if those fixes descrease probability of fails, I don't mind. Just noted that a further work may be needed. WBR, Alexander Turenko. On Tue, Nov 19, 2019 at 11:57:11PM +0100, Vladislav Shpilevoy wrote: > Hi! Thanks for the fixes! > > LGTM. > > On 18/11/2019 17:05, Serge Petrenko wrote: > > The first patch factors all the clock-related members of struct fiber and struct > > cord into appropriate structs and adds methods for their updates and resets. > > > > The second patch fixes exponential moving average calculation so that we do not > > experience huge numbers in average load percentage calculations. > > > > The third patch alters fiber.top() test to wait for correct output before > > testing it. > > > > Follow-up https://github.com/tarantool/tarantool/issues/2694 > > Branch https://github.com/tarantool/tarantool/tree/sp/gh-2694-test-fixup > > > > Changes in v3: > > - introduce a new patch which refactors all the clock stat > > handling. > > - introduce a patch fixing EMA calculation > > - review fixes as per review from Vladislav > > > > Changes in v2: > > - clean up all fibers clock stats on fiber.top_enable() > > - push 0 instead of NaN when cord clock_delta_last is 0 > > - review fixes as per review from Vladislav > > > > Serge Petrenko (3): > > fiber.top() refactor clock and cpu time calculation > > fiber.top(): alter exponential moving average calculation > > app/fiber: wait till a full event loop iteration ends > > > > src/lib/core/fiber.c | 175 ++++++++++++++++++++++++---------------- > > src/lib/core/fiber.h | 109 +++++++++++++++++-------- > > src/lua/fiber.c | 20 +++-- > > test/app/fiber.result | 38 ++++++--- > > test/app/fiber.test.lua | 36 +++++++-- > > 5 files changed, 252 insertions(+), 126 deletions(-) > >