> On Aug 31, 2020, at 11:43 AM, Thomas Munro <thomas.mu...@gmail.com> wrote: > > On Mon, Aug 31, 2020 at 2:40 PM Li Japin <japi...@hotmail.com> wrote: >> Could you give the more details about the test instructions? > > Hi Japin, > > Sure. Because I wasn't trying to get reliable TPS number or anything, > I just used a simple short read-only test with one connection, like > this: > > pgbench -i -s10 postgres > pgbench -T60 -Mprepared -S postgres > > Then I looked for the active backend and ran strace -c -p XXX for a > few seconds and hit ^C to get the counters. I doubt the times are > very accurate, but the number of calls is informative. > > If you do that on a server running with -c statement_timeout=10s, you > see one setitimer() per transaction. If you also use -c > idle_session_timeout=10s at the same time, you see two.
Hi, Thomas, Thanks for your point out this problem, here is the comparison. Without Optimize settimer usage: % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 41.22 1.444851 1 1317033 setitimer 28.41 0.995936 2 658622 sendto 24.63 0.863316 1 659116 599 recvfrom 5.71 0.200275 2 111055 pread64 0.03 0.001152 2 599 epoll_wait 0.00 0.000000 0 1 epoll_ctl ------ ----------- ----------- --------- --------- ---------------- 100.00 3.505530 2746426 599 total With Optimize settimer usage: % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 49.89 1.464332 1 1091429 sendto 40.83 1.198389 1 1091539 219 recvfrom 9.26 0.271890 1 183321 pread64 0.02 0.000482 2 214 epoll_wait 0.00 0.000013 3 5 setitimer 0.00 0.000010 2 5 rt_sigreturn 0.00 0.000000 0 1 epoll_ctl ------ ----------- ----------- --------- --------- ---------------- 100.00 2.935116 2366514 219 total Here’s a modified version of Thomas’s patch.
v3-0001-Allow-terminating-the-idle-sessions.patch
Description: v3-0001-Allow-terminating-the-idle-sessions.patch
v3-0002-Optimize-setitimer-usage.patch
Description: v3-0002-Optimize-setitimer-usage.patch