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.96) (envelope-from ) id 1vsOgy-003i6I-1j for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Feb 2026 17:16:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vsOgw-00B2Af-2y for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Feb 2026 17:16:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vsOgw-00B2AX-1c for pgsql-hackers@lists.postgresql.org; Tue, 17 Feb 2026 17:16:54 +0000 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vsOgu-00000001EAq-12I1 for pgsql-hackers@lists.postgresql.org; Tue, 17 Feb 2026 17:16:54 +0000 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-436e87589e8so5402976f8f.3 for ; Tue, 17 Feb 2026 09:16:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771348611; cv=none; d=google.com; s=arc-20240605; b=JbB8gm1H9bRJCIvyuSjZNse+FEeK4QJIx+XiIQ69EEmOL9T9o6mhNSCt/CdJC95Pit GM5eCIZkUoYpX2H9v1OF77pW5nv1n/qU8aM9Up5+FApDCHRzXgXHD3vGhTfeY0Z24jAj CuhZ/YDbAiJkXr97qP0uPHD5O4AbTCSEkQxzR8KRSN80VbXErYAjxI+kwzFPu4pwax9A og5GfsHMS30mCOZKzck14zep4OOkDvheYYWbGspBjX+S7FksnBSAHs1BCtSTj++0M1gH A6RcZR+lDkaWG7grAxWWs6mveX6LgS5yJGny5YuYQ4dPI9m/RFH8WUSYXIO+RUH4aqSX fCqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=jPt80Iu1sv45SuEGZCkAeNxGFYHzAgn1olbo4NeNcOU=; fh=Zu4E2jNLF7AovVdASwW/r5eHQqeyG27uwUdMgGkcS/s=; b=FTSd9r5/nzpLYjq+5FXCbC9mY7bjcJVQN6iGRYw+HnVGJSSOfNLvhNb5YlmMRcI0l4 0pp/dQiO6GTYv3Lywl4C+m8ZUm8uz3muXlKqvxRh3xt9jyEQhVBhj2pQqr6+/7wk7rb2 vasieaHrLZtd1jGiFAOWLnmEpBRITvEaJy/k6CYZS114Im6g/Pmxtku3XE4ZDxtS1wlt SA13NVdBAcb9h6NoJbnkGunHRoQq8mv9j6+A7XRzKStElcVHUZbirtxXL4Bya3hAsKDD pmLFTru1BMe2X44+I3ygUJs5fw5tQ7jU1anXKELejrY2QhZi00AigzRXMSyPH4EAooTb /gjQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bowt-ie.20230601.gappssmtp.com; s=20230601; t=1771348611; x=1771953411; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=jPt80Iu1sv45SuEGZCkAeNxGFYHzAgn1olbo4NeNcOU=; b=qlOU7vfNx7srzf47ZbOzQgXF75qdnaptQl/Nbt3X6KiZa8eCkCRzH7NDnmdBcBSdph suWZDb8q4rw5vc2Q7UICKwzVbrWC7IN0IT3XVGdQzbkwiH2waTI7TR3FMNlhm3S0jjyT XjfPDN23r60PLcGAMzPGQbioyULXqXwluoSZ40Hm4tRTgCytzfLDRpjXJ/eIDTW6qo9E mXPlYdhOMGFoT+ZEeQcg68oRJL2NCH2Zch+Cyon/uhS+Vivsr9mZ1bLOnTF1BbG+TApu UlZ9NkPdIP3mM0y8SD3T26lEPXWi0UPOOKeKZxNJ/syo8S69613rHduX7zxIoChMoBxv aq6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771348611; x=1771953411; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=jPt80Iu1sv45SuEGZCkAeNxGFYHzAgn1olbo4NeNcOU=; b=AfydqljqzdneBNHlfFf6nk0cuLVq7aLzkcOtY2H2/aFGLjC0NRIMRsPrGRqZh7oOqM PzxEEmA4s2ytfM7Jy1sjfOIX/wCkCcGQnnjscm0bpH5UPsjFaxbiDQZcp0WrC22IJhml m+OUY+P1Sh/aHZt0fsySAXHFJ1JH7iYgEpOjdSwre0fwuWE+U46xT4qktBNxCuZUMzSS COyDJmitOEEjFR0DkPrngWRyiEUiFVwt8T7uPlmmXmwuqy4ES3Ucx0C9dPOotmE2oQt9 4sg13iWwlgib9mhI82/Tsj6AdM0zBaI0iazrWC7c2qdWSMPLV5nQiPUotjytD5YLQXi+ m1rg== X-Forwarded-Encrypted: i=1; AJvYcCX6dd66HPgsGj7J9Ea/S0sq0eEtL/hZnDC3W+zwo+YzZw8YayXCMu7cICQ/MhYTGxRl/NY1SP6vPx8Ahkl1@lists.postgresql.org X-Gm-Message-State: AOJu0YwsJL5m/egu6e71Yc4n8owTx0ELML9lbM0Wrt8B3SGoGENwEVHF JjUw1bYAGd4ZFWL71nJmejemvg5qX7hsfAvQ3x4PgEskxGOcnqkIDUX1T23LKyKzpoNcdIZwUzg kBV7dwRoprZkmvgH+z3cmBYHHKJRv2wtlUnPV3GJeqw== X-Gm-Gg: AZuq6aLbwR15rHr7ZcWbah7TmqAqZ+e60lU0wLGnQWEcrtpfbvh2s6a3FudkiQOL588 JwHEq/9bUz03ki7lQ0hDmg9of375fVMy6cNyn2gpecpsAoF82YwOFJr1Q3AsG+IQEar/GVj6TEg uuLguwrvMImO9LLVRW3Csvm3xCjOdwWQyKWqjtDRV/bLchZih+3jLSYTKf596QW3AN4mbkMZdj0 x8AQwOQt1kpGEcBfr/hddbACIDSaiHObjjLaDjTp5lWEPJpEsNtCx0DwuoGpeisFiZl4YMO+FZT Hd+R0sM= X-Received: by 2002:a05:6000:24c5:b0:437:6c23:3458 with SMTP id ffacd0b85a97d-437978d554amr23721708f8f.21.1771348610539; Tue, 17 Feb 2026 09:16:50 -0800 (PST) MIME-Version: 1.0 References: <64a2re223ajj4popowsyu4xekbuvvyfwkrihn5yzyrkwsmsuvp@2lls3tpww5dl> <52512325-b1f2-4fff-819e-f68122b2e427@vondra.me> In-Reply-To: From: Peter Geoghegan Date: Tue, 17 Feb 2026 12:16:23 -0500 X-Gm-Features: AaiRm52lZMBk-sp8BwaXC_6P6Riuh_wMNgI5HBVo4zq9L43KJcfK2a-RDCSKY2Q Message-ID: Subject: Re: index prefetching To: Andres Freund Cc: Tomas Vondra , Alexandre Felipe , Thomas Munro , Nazir Bilal Yavuz , Robert Haas , Melanie Plageman , PostgreSQL Hackers , Georgios , Konstantin Knizhnik , Dilip Kumar Content-Type: multipart/mixed; boundary="000000000000b4a4f6064b083c7a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b4a4f6064b083c7a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Feb 16, 2026 at 11:48=E2=80=AFAM Andres Freund = wrote: > Yes, It's hurting quite substantially. For well correlated index scans it > prevents readahead from becoming aggressive enough even on a local low la= tency > SSD. Which means it'll not even be even remotely aggressive enough on a > networked block store. I agree that the current heuristics (which were invented recently) are too conservative. I overfit the heuristics to my current set of adversarial queries, as a stopgap measure. > Note that there is pretty much *no* readhead, because the yields happen m= ore > frequently than a io_combine_limit sized IO can be formed. ISTM that we need the yields to better cooperate with whatever's happening on the read stream side. > With the yielding logic disabled: > The comment seems to say it's about avoiding to look very into the future= when > using index only scans that just need a few heap lookups. Certainly an > important goal. The main motivation for yielding is to deal with things like merge joins fed by at least one plain index scan, and plain scans for an "ORDER BY .... LIMIT N" query. The LIMIT N is also addressed by the "Use ExecSetTupleBound hint during index scans" patch, albeit imperfectly. This is also important with index-only scans, though only when heap fetches are actually required in the first place (most index-only scans will never create a read stream in the first place). I attach an example of where disabling the yield mechanism hurts instead of helping, to give you a sense of the problems in this area. Notice that the inner side of the merge join ("Index Scan using prefetch_customers_pkey on prefetch_customers c") requires the same number of buffer hits + buffer reads as master with yielding enabled -- that allows the patch to shave off 7% of master's execution time. Whereas without yielding, there's quite a lot more buffer hits (for index page reads) + buffer misses (for heap page reads) -- which hurts us. Without yielding, the patch takes about 13% longer to execute the query. Just to be clear, I'm not arguing that this is the right trade-off. And I understand that it's just not feasible to completely prevent such plan shapes from reading more data than strictly necessary -- a certain amount of that seems like a "cost of doing business". But it seems important that the added costs of speculatively reading later batches/index leaf pages never exceeds some fixed threshold. The non-yielding EXPLAIN ANALYZE has an inner-index scan that does ~60% more work than master/than the yielding variant of the patch. It's not so much that the amount of extra work we'll perform is excessive (though it is); what really concerns me is that the amount of extra work is *indeterminate*. There's likely to be other queries that are much slower still, at least in the absence of some kind of yielding mechanism. And so ISTM that we need a better yield mechanism -- one that is better attuned to the need to maintain an adequate prefetch distance on the read stream side. > One thing that does confuse me about the yielding logic is that it seems = to > actually put a cap on ever looking more than two batches ahead (with a bi= t of > fuzziness)? Why support more batches then (INDEX_SCAN_MAX_BATCHES =3D=3D = 128)? > Isn't two batches too low for anything with some correlation on even remo= tely > higher latency storage? FWIW that's not actually true; we *can* still use more than 2 batches. My instrumentation confirms this. Though it seems to top out at about 4 batches total with the current yield logic/with my test suite queries. --=20 Peter Geoghegan --000000000000b4a4f6064b083c7a Content-Type: text/plain; charset="US-ASCII"; name="plans-yield-noyield.txt" Content-Disposition: attachment; filename="plans-yield-noyield.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlqufzpv0 QTE1OiByZWdyZXNzZWQgYW50aS1qb2luLCBpbmRleC1vbmx5CiAgbWFzdGVyICAgICAgICAgICAg ICAgICAgICAgICAgIChtaW4pOiAgICAgICA5LjA0MSBtcyAoYXZnPTkuMTM0LCBtYXg9OS4yNjIp CiAgcGF0Y2ggKyB5aWVsZCAgICAocHJlZmV0Y2g9b24pIChtaW4pOiAgICAgICA4LjQyOSBtcyAo YXZnPTguNTIwLCBtYXg9OC42MzYpIFswLjkzMnggdnMgbWFzdGVyXQogIHBhdGNoICsgbm8geWll bGQgKHByZWZldGNoPW9uKSAobWluKTogICAgICAxMC4yMjUgbXMgKGF2Zz0xMC4zMjMsIG1heD0x MC4zOTQpIFsxLjEzMXggdnMgbWFzdGVyXQoKICBRdWVyeToKICAgIFNFTEVDVCBvLmN1c3RvbWVy X2lkLCBvLm9yZGVyX2RhdGUKICAgIEZST00gcHJlZmV0Y2hfb3JkZXJzIG8KICAgIFdIRVJFIG8u b3JkZXJfZGF0ZSBCRVRXRUVOICcyMDIzLTAyLTA5JyBBTkQgJzIwMjMtMDItMjMnCiAgICBBTkQg by5jdXN0b21lcl9pZCBCRVRXRUVOIDM2MzA3IEFORCAzNzEyNgogICAgQU5EIE5PVCBFWElTVFMg KAogICAgU0VMRUNUIDEgRlJPTSBwcmVmZXRjaF9jdXN0b21lcnMgYwogICAgV0hFUkUgYy5jdXN0 b21lcl9pZCA9IG8uY3VzdG9tZXJfaWQKICAgIEFORCBjLnJlZ2lvbl9pZCA9IDQKICAgICkKICAg IE9SREVSIEJZIG8ub3JkZXJfZGF0ZQoKICBtYXN0ZXIgRVhQTEFJTiBBTkFMWVpFOgogICAgU29y dCAoYWN0dWFsIHJvd3M9Nzg4Mi4wMCBsb29wcz0xKQogICAgICBTb3J0IEtleTogby5vcmRlcl9k YXRlCiAgICAgIFNvcnQgTWV0aG9kOiBxdWlja3NvcnQgIE1lbW9yeTogMzc3a0IKICAgICAgQnVm ZmVyczogc2hhcmVkIGhpdD0xMTczMiByZWFkPTIzNwogICAgICBJL08gVGltaW5nczogc2hhcmVk IHJlYWQ9MS4xNDUKICAgICAgLT4gIE1lcmdlIEFudGkgSm9pbiAoYWN0dWFsIHJvd3M9Nzg4Mi4w MCBsb29wcz0xKQogICAgICAgICAgICBNZXJnZSBDb25kOiAoby5jdXN0b21lcl9pZCA9IGMuY3Vz dG9tZXJfaWQpCiAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTE3MzIgcmVhZD0yMzcK ICAgICAgICAgICAgSS9PIFRpbWluZ3M6IHNoYXJlZCByZWFkPTEuMTQ1CiAgICAgICAgICAgIC0+ ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgcHJlZmV0Y2hfb3JkZXJzX2N1c3RfZGF0ZV9pZHggb24g cHJlZmV0Y2hfb3JkZXJzIG8gKGFjdHVhbCByb3dzPTg0NDUuMDAgbG9vcHM9MSkKICAgICAgICAg ICAgICAgICAgSW5kZXggQ29uZDogKChjdXN0b21lcl9pZCA+PSAzNjMwNykgQU5EIChjdXN0b21l cl9pZCA8PSAzNzEyNikgQU5EIChvcmRlcl9kYXRlID49ICcyMDIzLTAyLTA5Jzo6ZGF0ZSkgQU5E IChvcmRlcl9kYXRlIDw9ICcyMDIzLTAyLTIzJzo6ZGF0ZSkpCiAgICAgICAgICAgICAgICAgIEhl YXAgRmV0Y2hlczogMAogICAgICAgICAgICAgICAgICBJbmRleCBTZWFyY2hlczogNzcyCiAgICAg ICAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTE2MjkKICAgICAgICAgICAgLT4gIElu ZGV4IFNjYW4gdXNpbmcgcHJlZmV0Y2hfY3VzdG9tZXJzX3BrZXkgb24gcHJlZmV0Y2hfY3VzdG9t ZXJzIGMgKGFjdHVhbCByb3dzPTE4NTguMDAgbG9vcHM9MSkKICAgICAgICAgICAgICAgICAgRmls dGVyOiAocmVnaW9uX2lkID0gNCkKICAgICAgICAgICAgICAgICAgUm93cyBSZW1vdmVkIGJ5IEZp bHRlcjogMzUyODUKICAgICAgICAgICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEKICAgICAgICAg ICAgICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD0xMDMgcmVhZD0yMzcKICAgICAgICAgICAgICAg ICAgSS9PIFRpbWluZ3M6IHNoYXJlZCByZWFkPTEuMTQ1CiAgICBQbGFubmluZzoKICAgICAgQnVm ZmVyczogc2hhcmVkIGhpdD0xNgogICAgUGxhbm5pbmcgVGltZTogMC4xNTUgbXMKICAgIFNlcmlh bGl6YXRpb246IG91dHB1dD0xOTNrQiAgZm9ybWF0PXRleHQKICAgIEV4ZWN1dGlvbiBUaW1lOiA5 LjA0MSBtcwoKICBwYXRjaCArIHlpZWxkIChwcmVmZXRjaD1vbikgRVhQTEFJTiBBTkFMWVpFOgog ICAgU29ydCAoYWN0dWFsIHJvd3M9Nzg4Mi4wMCBsb29wcz0xKQogICAgICBTb3J0IEtleTogby5v cmRlcl9kYXRlCiAgICAgIFNvcnQgTWV0aG9kOiBxdWlja3NvcnQgIE1lbW9yeTogMzc3a0IKICAg ICAgQnVmZmVyczogc2hhcmVkIGhpdD0xMTczMiByZWFkPTIzNwogICAgICBJL08gVGltaW5nczog c2hhcmVkIHJlYWQ9MC44MjUKICAgICAgLT4gIE1lcmdlIEFudGkgSm9pbiAoYWN0dWFsIHJvd3M9 Nzg4Mi4wMCBsb29wcz0xKQogICAgICAgICAgICBNZXJnZSBDb25kOiAoby5jdXN0b21lcl9pZCA9 IGMuY3VzdG9tZXJfaWQpCiAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTE3MzIgcmVh ZD0yMzcKICAgICAgICAgICAgSS9PIFRpbWluZ3M6IHNoYXJlZCByZWFkPTAuODI1CiAgICAgICAg ICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgcHJlZmV0Y2hfb3JkZXJzX2N1c3RfZGF0ZV9p ZHggb24gcHJlZmV0Y2hfb3JkZXJzIG8gKGFjdHVhbCByb3dzPTg0NDUuMDAgbG9vcHM9MSkKICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKChjdXN0b21lcl9pZCA+PSAzNjMwNykgQU5EIChj dXN0b21lcl9pZCA8PSAzNzEyNikgQU5EIChvcmRlcl9kYXRlID49ICcyMDIzLTAyLTA5Jzo6ZGF0 ZSkgQU5EIChvcmRlcl9kYXRlIDw9ICcyMDIzLTAyLTIzJzo6ZGF0ZSkpCiAgICAgICAgICAgICAg ICAgIEhlYXAgRmV0Y2hlczogMAogICAgICAgICAgICAgICAgICBJbmRleCBTZWFyY2hlczogNzcy CiAgICAgICAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTE2MjkKICAgICAgICAgICAg LT4gIEluZGV4IFNjYW4gdXNpbmcgcHJlZmV0Y2hfY3VzdG9tZXJzX3BrZXkgb24gcHJlZmV0Y2hf Y3VzdG9tZXJzIGMgKGFjdHVhbCByb3dzPTE4NTguMDAgbG9vcHM9MSkKICAgICAgICAgICAgICAg ICAgRmlsdGVyOiAocmVnaW9uX2lkID0gNCkKICAgICAgICAgICAgICAgICAgUm93cyBSZW1vdmVk IGJ5IEZpbHRlcjogMzUyODUKICAgICAgICAgICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEKICAg ICAgICAgICAgICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD0xMDMgcmVhZD0yMzcKICAgICAgICAg ICAgICAgICAgSS9PIFRpbWluZ3M6IHNoYXJlZCByZWFkPTAuODI1CiAgICBQbGFubmluZzoKICAg ICAgQnVmZmVyczogc2hhcmVkIGhpdD0xNgogICAgUGxhbm5pbmcgVGltZTogMC4xNjYgbXMKICAg IFNlcmlhbGl6YXRpb246IG91dHB1dD0xOTNrQiAgZm9ybWF0PXRleHQKICAgIEV4ZWN1dGlvbiBU aW1lOiA4LjQyOSBtcwoKICBwYXRjaCArIG5vIHlpZWxkIChwcmVmZXRjaD1vbikgRVhQTEFJTiBB TkFMWVpFOgogICAgU29ydCAoYWN0dWFsIHJvd3M9Nzg4Mi4wMCBsb29wcz0xKQogICAgICBTb3J0 IEtleTogby5vcmRlcl9kYXRlCiAgICAgIFNvcnQgTWV0aG9kOiBxdWlja3NvcnQgIE1lbW9yeTog Mzc3a0IKICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD0xMTc5NSByZWFkPTM4NQogICAgICBJL08g VGltaW5nczogc2hhcmVkIHJlYWQ9MS41MTcKICAgICAgLT4gIE1lcmdlIEFudGkgSm9pbiAoYWN0 dWFsIHJvd3M9Nzg4Mi4wMCBsb29wcz0xKQogICAgICAgICAgICBNZXJnZSBDb25kOiAoby5jdXN0 b21lcl9pZCA9IGMuY3VzdG9tZXJfaWQpCiAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9 MTE3OTUgcmVhZD0zODUKICAgICAgICAgICAgSS9PIFRpbWluZ3M6IHNoYXJlZCByZWFkPTEuNTE3 CiAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgcHJlZmV0Y2hfb3JkZXJzX2N1 c3RfZGF0ZV9pZHggb24gcHJlZmV0Y2hfb3JkZXJzIG8gKGFjdHVhbCByb3dzPTg0NDUuMDAgbG9v cHM9MSkKICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKChjdXN0b21lcl9pZCA+PSAzNjMw NykgQU5EIChjdXN0b21lcl9pZCA8PSAzNzEyNikgQU5EIChvcmRlcl9kYXRlID49ICcyMDIzLTAy LTA5Jzo6ZGF0ZSkgQU5EIChvcmRlcl9kYXRlIDw9ICcyMDIzLTAyLTIzJzo6ZGF0ZSkpCiAgICAg ICAgICAgICAgICAgIEhlYXAgRmV0Y2hlczogMAogICAgICAgICAgICAgICAgICBJbmRleCBTZWFy Y2hlczogNzcyCiAgICAgICAgICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTE2MjkKICAg ICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgcHJlZmV0Y2hfY3VzdG9tZXJzX3BrZXkgb24g cHJlZmV0Y2hfY3VzdG9tZXJzIGMgKGFjdHVhbCByb3dzPTE4NTguMDAgbG9vcHM9MSkKICAgICAg ICAgICAgICAgICAgRmlsdGVyOiAocmVnaW9uX2lkID0gNCkKICAgICAgICAgICAgICAgICAgUm93 cyBSZW1vdmVkIGJ5IEZpbHRlcjogMzUyODUKICAgICAgICAgICAgICAgICAgSW5kZXggU2VhcmNo ZXM6IDEKICAgICAgICAgICAgICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD0xNjYgcmVhZD0zODUK ICAgICAgICAgICAgICAgICAgSS9PIFRpbWluZ3M6IHNoYXJlZCByZWFkPTEuNTE3CiAgICBQbGFu bmluZzoKICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD0xNgogICAgUGxhbm5pbmcgVGltZTogMC4x NDkgbXMKICAgIFNlcmlhbGl6YXRpb246IG91dHB1dD0xOTNrQiAgZm9ybWF0PXRleHQKICAgIEV4 ZWN1dGlvbiBUaW1lOiAxMC4yMjUgbXMK --000000000000b4a4f6064b083c7a--