Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jTJ7F-00083c-BF for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Apr 2020 05:49:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jTJ7E-0004Ae-0Y for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Apr 2020 05:49:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jTJ7D-00048g-PX for pgsql-hackers@lists.postgresql.org; Tue, 28 Apr 2020 05:49:07 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jTJ7A-0005A0-Bp for pgsql-hackers@postgresql.org; Tue, 28 Apr 2020 05:49:06 +0000 Received: from hnk.local (p2421237-ipbf2725funabasi.chiba.ocn.ne.jp [122.24.33.237]) by oss.nttdata.com (Postfix) with ESMTPSA id 15EB66069A; Tue, 28 Apr 2020 14:49:01 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.102.2 at oss.nttdata.com Subject: Re: Why are wait events not reported even though it reads/writes a timeline history file? To: Masahiro Ikeda Cc: pgsql-hackers@postgresql.org References: <3480dda4f5a043d8819de9e8653dc331@oss.nttdata.com> From: Fujii Masao Message-ID: Date: Tue, 28 Apr 2020 14:49:00 +0900 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: <3480dda4f5a043d8819de9e8653dc331@oss.nttdata.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On 2020/04/28 11:10, Masahiro Ikeda wrote: > On 2020-04-27 12:25, Fujii Masao wrote: >> On 2020/04/24 11:29, Masahiro Ikeda wrote: >>> Hi, >>> >>> There are two unexpected codes for me about wait events for timeline history file. >>> Please let me know your thoughts whether if we need to change. >>> >>> >>> 1. readTimeLineHistory() function in timeline.c >>> >>> The readTimeLineHistory() reads a timeline history file, >>> but it doesn't report “WAIT_EVENT_TIMELINE_HISTORY_READ". >> >> Yeah, this sounds strange. >> >>> In my understanding, sscanf() is blocking read. >>> So, it's important to report a wait event. >> >> Shouldn't the wait event be reported during fgets() rather than sscanf()? >> >>> 2. writeTimeLineHistory() function in timeline.c >>> >>> The writeTimeLineHistory() function may write a timeline history file twice, >>> but it reports “WAIT_EVENT_TIMELINE_HISTORY_WRITE" only once. >>> >>> It makes sense to report a wait event twice, because both of them use write(). >> >> Yes. >> >>> I attached a patch to mention the code line number. >>> >>> >>> I checked the commit log which "WAIT_EVENT_TIMELINE_HISTORY_READ" and >>> "WAIT_EVENT_TIMELINE_HISTORY_WRITE" are committed and the discussion about it. >>> But I can't find the reason. >>> >>> Please give me your comments. >>> If we need to change, I can make a patch to fix them. >> >> Thanks! I agree to fix those issues. > > Thanks for the comments. I attach a patch to fix those issues. > Please review it. Thanks for the patch! prevend = InvalidXLogRecPtr; + pgstat_report_wait_start(WAIT_EVENT_TIMELINE_HISTORY_READ); while (fgets(fline, sizeof(fline), fd) != NULL) { /* skip leading whitespace and check for # comment */ @@ -172,6 +173,7 @@ readTimeLineHistory(TimeLineID targetTLI) /* we ignore the remainder of each line */ } + pgstat_report_wait_end(); Isn't it safer to report the wait event during fgets() rather than putting those calls around the whole loop, like other code does? For example, writeTimeLineHistory() reports the wait event during read() rather than whole loop. Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION