Re: pgbench tap tests & minor fixes
Fabien COELHO <coelho@cri.ensmp.fr>
From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Nikolay Shaplov <dhyan@nataraj.su>
Cc: PostgreSQL Developers <pgsql-hackers@postgresql.org>,
Robert Haas <robertmhaas@gmail.com>
Date: 2017-05-08T21:17:49Z
Lists: pgsql-hackers
Hello, > st->cnt -- number of transactions finished successed or failed, right? Or *skipped*. That is why I changed the declaration comment. > one iteration of for(;;) is for one transaction or really less. Right? No, under -R -L late schedules are simply skipped. > We can't process two tansactions in one iteration of this loop. So we > can't increase st->cnt more then once during one iteration? Yes we can, if they are skipped because the scheduling was too late to execute them on time. > processXactStats(thread, st, &now, true, agg); > > Let's imagine that thread->throttle_trigger is now_us - 10 000, > latency_limit is 5 000 and throttle_delay is 100 > > How many times you would call processXactStats in this while loop? Around 100 times to catch up. > And each time it would do st->cnt++ Yep. The "true" argument tells the stats that the transaction was skipped, though. It just counting late transaction that could not be processed. > And this while loop is inside for(;;) in which as I said above we can do > st->cnt++ not more than once. I see no logic here. The logic is that at most one *real* transaction is actually performed in the for, but there may be any number of "skipped" (unexecuted) ones, which is fine. > PS This is a fast reply. May be it will make things clear fast wither for me > or for you. I will carefully answer your full letter tomorrow (I hope nothing > will prevent me from doing it) Today was a holiday in France. Tomorrow is not. -- Fabien.
Commits
-
Add much-more-extensive TAP tests for pgbench.
- ed8a7c6fcf92 11.0 landed
-
Be more careful about newline-chomping in pgbench.
- 0b707d6ea759 11.0 landed
-
Fix some subtle problems in pgbench transaction stats counting.
- c23bb6badfa2 11.0 landed