Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rmFKa-006qon-Vm for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Mar 2024 15:55:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rmFKZ-003Zqo-9t for pgsql-hackers@arkaria.postgresql.org; Mon, 18 Mar 2024 15:55:19 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rmFKY-003Zps-RG for pgsql-hackers@lists.postgresql.org; Mon, 18 Mar 2024 15:55:19 +0000 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rmFKU-005ATb-Gz for pgsql-hackers@postgresql.org; Mon, 18 Mar 2024 15:55:17 +0000 Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-a466fc8fcccso544353266b.1 for ; Mon, 18 Mar 2024 08:55:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1710777314; x=1711382114; darn=postgresql.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=6HK4pfL9nNrUXZG6J3MxDW2G5WPmU1cT5KLBPq8xb24=; b=UED7AC9saQOoqS6SiA+16R5uaY0ELGdacx3zZJv71GQm7SwYrraG+SBaV55RlJwxq1 oGheKMz8pmXrevckNGoLq1uMGQYm4dXYEXVxZPTAzDiueHUB7uhVExKG1ptY6L0mjxUo UeRDXCXVgq5wQXKvmE/EV1aCF1eBy7CxiCLa2YGUyAGvtg2yirCFwl7bYwVq8iLFA4nO qRDn1WsvCzgpPc4iUWpucoOEsIKdegf3jgjBsD/Q9zb5vaYBRGxvwnI5zebibw1EO3qr Jo6sNGSZGuYve2IKeFw9lDQ1M3JdLoDpqtcUzK/ViVnBm8KWBFcH7NP4sCoIBPuESpKk OU6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710777314; x=1711382114; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6HK4pfL9nNrUXZG6J3MxDW2G5WPmU1cT5KLBPq8xb24=; b=GT9tKZuywre+h9wyqpX5fAUauiU4CRpzSAW/FlQcLQS91B6L1MF42fhyUKa7A3mRHB I9f+o3PrVXxtAvJYZsWS/VOGXX/Vzxk5HuViODHKKqJON9mKWOJemLQxL1qEJeb8UmX/ 7ylogMJbDlcfIMaBakIGoulaf7tfnkMA54vDxsM8mkdvb+isHRp7pNaiy/tmjDj5fYmr XiO2ZVvPogjCPJGyxTToRLAKxgSBK6pxsevwjrXzJ54mHjnCHKj3YWYtVo+8/OJcJDSZ 0Vo3xLoqyLNX8RPVPiF5zIx84hGUlU3kJQYcdVkbp4d0IjIFFCzFFF5yWm4KE+NM0Gne c+Pg== X-Forwarded-Encrypted: i=1; AJvYcCWVauR1e9z6Pte+wmjojbx0LcWfDVnGQnU3cJOTwpgYqP1tZVssxNi8DGP81GUzJmvgsTe7GLxad7Ts3qcAvt24oE+VQVfMtJsi8+cr X-Gm-Message-State: AOJu0YzvIxEfjqcXOr9G/n7zlkkVuGeavz2Pvi61j//wizpcFOxtTmGC zFP/fZhHyV+OX4kbIOaJvWhQ7RceoHyIuL7KP9BaGEYVeHZ0jlXD9MFisv6APw== X-Google-Smtp-Source: AGHT+IHAbajuEq2siWXb9r00EfsHsRXr9ED4n3gL3Yu8kirMye9Da3ymLCfAdLoAMnl29GS/kk7yUA== X-Received: by 2002:a17:907:9704:b0:a46:8c32:8e95 with SMTP id jg4-20020a170907970400b00a468c328e95mr8104360ejc.5.1710777314043; Mon, 18 Mar 2024 08:55:14 -0700 (PDT) Received: from [10.137.0.18] (ip-86-49-229-30.bb.vodafone.cz. [86.49.229.30]) by smtp.gmail.com with ESMTPSA id di9-20020a170906730900b00a462e166b9bsm4933045ejc.112.2024.03.18.08.55.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 18 Mar 2024 08:55:13 -0700 (PDT) Message-ID: Date: Mon, 18 Mar 2024 16:55:12 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: BitmapHeapScan streaming read user and prelim refactoring Content-Language: en-US To: Melanie Plageman Cc: Heikki Linnakangas , Dilip Kumar , Robert Haas , Nazir Bilal Yavuz , Andres Freund , Pg Hackers , Thomas Munro References: <20240216173559.xiy5xcl5dqmsprns@liskov> <20240227015028.knohvy3spaqwk7lf@liskov> <20240227142230.nu3ytvcjwouvczlt@liskov> <5f3b9d59-0f43-419d-80ca-6d04c07cf61a@iki.fi> <20240314181625.a7uigo5ujaogfd6x@liskov> <2ed1e06b-feae-4c61-9f58-3fcc358104c7@enterprisedb.com> <84bf5689-4524-4ba1-b25e-18018045e94d@enterprisedb.com> From: Tomas Vondra In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 3/18/24 15:47, Melanie Plageman wrote: > On Sun, Mar 17, 2024 at 3:21 PM Tomas Vondra > wrote: >> >> On 3/14/24 22:39, Melanie Plageman wrote: >>> On Thu, Mar 14, 2024 at 5:26 PM Tomas Vondra >>> wrote: >>>> >>>> On 3/14/24 19:16, Melanie Plageman wrote: >>>>> On Thu, Mar 14, 2024 at 03:32:04PM +0200, Heikki Linnakangas wrote: >>>>>> ... >>>>>> >>>>>> Ok, committed that for now. Thanks for looking! >>>>> >>>>> Attached v6 is rebased over your new commit. It also has the "fix" in >>>>> 0010 which moves BitmapAdjustPrefetchIterator() back above >>>>> table_scan_bitmap_next_block(). I've also updated the Streaming Read API >>>>> commit (0013) to Thomas' v7 version from [1]. This has the update that >>>>> we theorize should address some of the regressions in the bitmapheapscan >>>>> streaming read user in 0014. >>>>> >>>> >>>> Should I rerun the benchmarks with these new patches, to see if it >>>> really helps with the regressions? >>> >>> That would be awesome! >>> >> >> OK, here's a couple charts comparing the effect of v6 patches to master. >> These are from 1M and 10M data sets, same as the runs presented earlier >> in this thread (the 10M is still running, but should be good enough for >> this kind of visual comparison). > > Thanks for doing this! > >> What is even more obvious is that 0014 behaves *VERY* differently. I'm >> not sure if this is a good thing or a problem is debatable/unclear. I'm >> sure we don't want to cause regressions, but perhaps those are due to >> the prefetch issue discussed elsewhere in this thread (identified by >> Andres and Melanie). There are also many cases that got much faster, but >> the question is whether this is due to better efficiency or maybe the >> new code being more aggressive in some way (not sure). > > Are these with the default effective_io_concurrency (1)? If so, the > "effective" prefetch distance in many cases will be higher with the > streaming read code applied. With effective_io_concurrency 1, > "max_ios" will always be 1, but the number of blocks prefetched may > exceed this (up to MAX_BUFFERS_PER_TRANSFER) because the streaming > read code is always trying to build bigger IOs. And, if prefetching, > it will prefetch IOs not yet in shared buffers before reading them. > No, it's a mix of runs with random combinations of these parameters: dataset: uniform uniform_pages linear linear_fuzz cyclic cyclic_fuzz workers: 0 4 work_mem: 128kB 4MB 64MB eic: 0 1 8 16 32 selectivity: 0-100% I can either share the data (~70MB of CSV) or generate charts for results with some filter. > It's hard to tell without going into a specific repro why this would > cause some queries to be much slower. In the forced bitmapheapscan, it > would make sense that more prefetching is worse -- which is why a > bitmapheapscan plan wouldn't have been chosen. But in the optimal > cases, it is unclear why it would be worse. > Yes, not sure about the optimal cases. I'll wait for the 10M runs to complete, and then we can look for some patterns. > I don't think there is any way it could be the issue Andres > identified, because there is only one iterator. Nothing to get out of > sync. It could be that the fadvises are being issued too close to the > reads and aren't effective enough at covering up read latency on > slower, older hardware. But that doesn't explain why master would > sometimes be faster. > Ah, right, thanks for the clarification. I forgot the streaming read API does not use the two-iterator approach. > Probably the only thing we can do is get into a repro. It would, of > course, be easiest to do this with a serial query. I can dig into the > scripts you shared earlier and try to find a good repro. Because the > regressions may have shifted with Thomas' new version, it would help > if you shared a category (cyclic/uniform/etc, parallel or serial, eic > value, work mem, etc) where you now see the most regressions. > OK, I've restarted the tests for only 0012 and 0014 patches, and I'll wait for these to complete - I don't want to be looking for patterns until we have enough data to smooth this out. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company