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 1jbsYZ-00026J-GO for pgsql-hackers@arkaria.postgresql.org; Thu, 21 May 2020 21:16:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jbsYY-0003Wq-2v for pgsql-hackers@arkaria.postgresql.org; Thu, 21 May 2020 21:16:46 +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 1jbsYX-0003WZ-NG for pgsql-hackers@lists.postgresql.org; Thu, 21 May 2020 21:16:45 +0000 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jbsYU-0005yO-Kg for pgsql-hackers@postgresql.org; Thu, 21 May 2020 21:16:45 +0000 Received: by mail-pf1-x430.google.com with SMTP id n15so4091500pfd.0 for ; Thu, 21 May 2020 14:16:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :mime-version; bh=6xyYoymPJiYnKkZTdSz9n4idKV/emD0FYRQI+OnxnDM=; b=gohy/qcCOOo50+engxnRYu0RVxtvRZ+j5TxNSJZVyJxSNmcQDmv+xAZTEMDYUTkgWO yMhVxsf4RUA+2/krCGLESI2rDdG3AQBHyxZkEya558AYU0OED8H02N6ycOJpX7JpEoiR Ac5KD4XDVavw9cOC2vmXUZ7YaLNyPeMRTZyoioAGmbhKVeZmw8quFrzd8//J+l5VgM+U 1KN9/mtVnWNROxAyDghZ+bPACVZOyEPbYSOslWhKrTFy4nvaRS/NL8JWyA1v/cdts0lU R1nJ11vy9q1/awcwQ46Xte+82tqTQN4shHf33edDFCoFsVNsr7AQdhBMbVNmXKBAzXI0 4COw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:mime-version; bh=6xyYoymPJiYnKkZTdSz9n4idKV/emD0FYRQI+OnxnDM=; b=KwiKHP0X0XuvD1gAwX5MexgqMU3BJn6LXFnq3fL5bswISAriNaYaX7dxveqfkQiQq1 de183t27Qpm4ZkgUgoozenicgE/6r+2t8XNt9mDQic1ScvKRQfj1GZzGoFYbGtwdFIyy ODWUb4jA4/appm/JnZ/0LoRqzKdhdqRwy8OirDm4cRwT4iz87RvJaTdoou+SeteEIyxD 2cm6meQzppHW13XqKDtbjFmruxIx3A6tCVUNfoY2i14CgXAw07JY7bjTq71WS1bfsB2T kCuvZGlvgu6UosLmwVsoMUxvVTkkh+S1558kdm0Wu/UFvIIXcZeDEwd0ERSskNV0D4N6 4zwQ== X-Gm-Message-State: AOAM533Bp8WMJpqXinGmI0jxhhw6790zp988M3xBxv6H6Ymdr85ftrha Gj9Jl/WKM6g4GwiOKsnXlxaXUQ== X-Google-Smtp-Source: ABdhPJzJimpPfX0yGJaOqIdPdJVb65hzv0emTjZVy5rmwQws1cCZeQvIa9xYBhj5XqdJxvPuAFyZMA== X-Received: by 2002:a62:1407:: with SMTP id 7mr637938pfu.103.1590095800555; Thu, 21 May 2020 14:16:40 -0700 (PDT) Received: from jdavis.lan (c-73-231-146-4.hsd1.ca.comcast.net. [73.231.146.4]) by smtp.gmail.com with ESMTPSA id q201sm5240836pfq.40.2020.05.21.14.16.38 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 21 May 2020 14:16:39 -0700 (PDT) Message-ID: <8619437df796903e64c8479e299d13ebacb5fbe0.camel@j-davis.com> Subject: Re: Trouble with hashagg spill I/O pattern and costing From: Jeff Davis To: Tomas Vondra Cc: pgsql-hackers@postgresql.org Date: Thu, 21 May 2020 14:16:37 -0700 In-Reply-To: <20200521191318.gw3xjivrxracvzmg@development> References: <20200519151202.u2p2gpiawoaznsv2@development> <88dd39d782178539d7ee46f98b98579940e2a12e.camel@j-davis.com> <20200519175320.tl4qm6le5dbg2pcf@development> <20200521191318.gw3xjivrxracvzmg@development> Content-Type: multipart/mixed; boundary="=-zT2YnXEqGs0RKXY9k5a/" X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2 Mime-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=-zT2YnXEqGs0RKXY9k5a/ Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit On Thu, 2020-05-21 at 21:13 +0200, Tomas Vondra wrote: > 2) We could make it self-tuning, by increasing the number of blocks > we pre-allocate. So every time we exhaust the range, we double the > number of blocks (with a reasonable maximum, like 1024 or so). Or we > might just increment it by 32, or something. Attached a new version that uses the doubling behavior, and cleans it up a bit. It also returns the unused prealloc blocks back to lts- >freeBlocks when the tape is rewound for reading. > IIUC the danger of pre-allocating blocks is that we might not fill > them, > resulting in temp file much larger than necessary. It might be > harmless > on some (most?) current filesystems that don't actually allocate > space > for blocks that are never written, but it also confuses our > accounting > of temporary file sizes. So we should try to limit that, and growing > the > number of pre-allocated blocks over time seems reasonable. There's another danger here: it doesn't matter how well the filesystem deals with sparse writes, because ltsWriteBlock fills in the holes with zeros anyway. That's potentially a significant amount of wasted IO effort if we aren't careful. Regards, Jeff Davis --=-zT2YnXEqGs0RKXY9k5a/ Content-Disposition: attachment; filename="logtape-prealloc-v2.patch" Content-Type: text/x-patch; name="logtape-prealloc-v2.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvbG9ndGFwZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvc29ydC9sb2d0YXBlLmMKaW5kZXggYmM4ZDU2ODA3ZTIuLjg0ZjlkNmQyMzU4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L2xvZ3RhcGUuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9zb3J0L2xvZ3RhcGUuYwpAQCAtMTEwLDYgKzExMCw4IEBAIHR5cGVkZWYgc3Ry dWN0IFRhcGVCbG9ja1RyYWlsZXIKICNkZWZpbmUgVGFwZUJsb2NrU2V0TkJ5dGVzKGJ1ZiwgbmJ5 dGVzKSBcCiAJKFRhcGVCbG9ja0dldFRyYWlsZXIoYnVmKS0+bmV4dCA9IC0obmJ5dGVzKSkKIAor I2RlZmluZSBUQVBFX1dSSVRFX1BSRUFMTE9DX01JTiA4CisjZGVmaW5lIFRBUEVfV1JJVEVfUFJF QUxMT0NfTUFYIDEyOAogCiAvKgogICogVGhpcyBkYXRhIHN0cnVjdHVyZSByZXByZXNlbnRzIGEg c2luZ2xlICJsb2dpY2FsIHRhcGUiIHdpdGhpbiB0aGUgc2V0CkBAIC0xNTEsNiArMTUzLDIxIEBA IHR5cGVkZWYgc3RydWN0IExvZ2ljYWxUYXBlCiAJaW50CQkJbWF4X3NpemU7CQkvKiBoaWdoZXN0 IHVzZWZ1bCwgc2FmZSBidWZmZXJfc2l6ZSAqLwogCWludAkJCXBvczsJCQkvKiBuZXh0IHJlYWQv d3JpdGUgcG9zaXRpb24gaW4gYnVmZmVyICovCiAJaW50CQkJbmJ5dGVzOwkJCS8qIHRvdGFsICMg b2YgdmFsaWQgYnl0ZXMgaW4gYnVmZmVyICovCisKKwkvKgorCSAqIFdoZW4gbXVsdGlwbGUgdGFw ZXMgYXJlIGJlaW5nIHdyaXR0ZW4gdG8gY29uY3VycmVudGx5IChhcyBpbiBIYXNoQWdnKSwKKwkg KiBhdm9pZCBleGNlc3NpdmUgZnJhZ21lbnRhdGlvbiBieSBwcmVhbGxvY2F0aW5nIGJsb2NrIG51 bWJlcnMgdG8KKwkgKiBpbmRpdmlkdWFsIHRhcGVzLiBUaGUgcHJlYWxsb2NhdGVkIGJsb2NrIG51 bWJlcnMgYXJlIGhlbGQgaW4gYW4gYXJyYXkKKwkgKiBzb3J0ZWQgaW4gZGVzY2VuZGluZyBvcmRl cjsgYmxvY2tzIGFyZSBjb25zdW1lZCBmcm9tIHRoZSBlbmQgb2YgdGhlCisJICogYXJyYXkgKGxv d2VzdCBibG9jayBudW1iZXJzIGZpcnN0KS4KKwkgKgorCSAqIE5vIGZpbGVzeXN0ZW0gb3BlcmF0 aW9ucyBhcmUgcGVyZm9ybWVkIGZvciBwcmVhbGxvY2F0aW9uOyBvbmx5IHRoZQorCSAqIGJsb2Nr IG51bWJlcnMgYXJlIHJlc2VydmVkLiBUaGlzIG1heSBsZWFkIHRvIHNwYXJzZSB3cml0ZXMsIHdo aWNoIHdpbGwKKwkgKiBjYXVzZSBsdHNXcml0ZUJsb2NrKCkgdG8gZmlsbCBpbiBob2xlcyB3aXRo IHplcm9zLgorCSAqLworCWxvbmcJICAgKnByZWFsbG9jOworCWludAkJIAlucHJlYWxsb2M7IC8q IG51bWJlciBvZiBlbGVtZW50cyBpbiBsaXN0ICovCisJaW50CQkJcHJlYWxsb2Nfc2l6ZTsgLyog bnVtYmVyIG9mIGVsZW1lbnRzIGxpc3QgY2FuIGhvbGQgKi8KIH0gTG9naWNhbFRhcGU7CiAKIC8q CkBAIC0xOTgsNiArMjE1LDcgQEAgc3RydWN0IExvZ2ljYWxUYXBlU2V0CiBzdGF0aWMgdm9pZCBs dHNXcml0ZUJsb2NrKExvZ2ljYWxUYXBlU2V0ICpsdHMsIGxvbmcgYmxvY2tudW0sIHZvaWQgKmJ1 ZmZlcik7CiBzdGF0aWMgdm9pZCBsdHNSZWFkQmxvY2soTG9naWNhbFRhcGVTZXQgKmx0cywgbG9u ZyBibG9ja251bSwgdm9pZCAqYnVmZmVyKTsKIHN0YXRpYyBsb25nIGx0c0dldEZyZWVCbG9jayhM b2dpY2FsVGFwZVNldCAqbHRzKTsKK3N0YXRpYyBsb25nIGx0c0dldFByZWFsbG9jQmxvY2soTG9n aWNhbFRhcGVTZXQgKmx0cywgTG9naWNhbFRhcGUgKmx0KTsKIHN0YXRpYyB2b2lkIGx0c1JlbGVh c2VCbG9jayhMb2dpY2FsVGFwZVNldCAqbHRzLCBsb25nIGJsb2NrbnVtKTsKIHN0YXRpYyB2b2lk IGx0c0NvbmNhdFdvcmtlclRhcGVzKExvZ2ljYWxUYXBlU2V0ICpsdHMsIFRhcGVTaGFyZSAqc2hh cmVkLAogCQkJCQkJCQkgU2hhcmVkRmlsZVNldCAqZmlsZXNldCk7CkBAIC0zOTcsNiArNDE1LDUx IEBAIGx0c0dldEZyZWVCbG9jayhMb2dpY2FsVGFwZVNldCAqbHRzKQogCXJldHVybiBibG9ja251 bTsKIH0KIAorLyoKKyAqIFJldHVybiB0aGUgbG93ZXN0IGZyZWUgYmxvY2sgbnVtYmVyIGZyb20g dGhlIHRhcGUncyBwcmVhbGxvY2F0aW9uIGxpc3QuCisgKiBSZWZpbGwgdGhlIHByZWFsbG9jYXRp b24gbGlzdCBpZiBuZWNlc3NhcnkuCisgKi8KK3N0YXRpYyBsb25nCitsdHNHZXRQcmVhbGxvY0Js b2NrKExvZ2ljYWxUYXBlU2V0ICpsdHMsIExvZ2ljYWxUYXBlICpsdCkKK3sKKwkvKiBzb3J0ZWQg aW4gZGVzY2VuZGluZyBvcmRlciwgc28gcmV0dXJuIHRoZSBsYXN0IGVsZW1lbnQgKi8KKwlpZiAo bHQtPm5wcmVhbGxvYyA+IDApCisJCXJldHVybiBsdC0+cHJlYWxsb2NbLS1sdC0+bnByZWFsbG9j XTsKKworCWlmIChsdC0+cHJlYWxsb2MgPT0gTlVMTCkKKwl7CisJCWx0LT5wcmVhbGxvY19zaXpl ID0gVEFQRV9XUklURV9QUkVBTExPQ19NSU47CisJCWx0LT5wcmVhbGxvYyA9IChsb25nICopIHBh bGxvYyhzaXplb2YobG9uZykgKiBsdC0+cHJlYWxsb2Nfc2l6ZSk7CisJfQorCWVsc2UKKwl7CisJ CS8qIHdoZW4gdGhlIHByZWFsbG9jYXRpb24gbGlzdCBydW5zIG91dCwgZG91YmxlIHRoZSBzaXpl ICovCisJCWlmIChsdC0+cHJlYWxsb2Nfc2l6ZSAqIDIgPD0gVEFQRV9XUklURV9QUkVBTExPQ19N QVgpCisJCQlsdC0+cHJlYWxsb2Nfc2l6ZSAqPSAyOworCQlsdC0+cHJlYWxsb2MgPSAobG9uZyAq KSByZXBhbGxvYyhsdC0+cHJlYWxsb2MsCisJCQkJCQkJCQkJIHNpemVvZihsb25nKSAqIGx0LT5w cmVhbGxvY19zaXplKTsKKwl9CisKKwkvKiByZWZpbGwgcHJlYWxsb2NhdGlvbiBsaXN0ICovCisJ bHQtPm5wcmVhbGxvYyA9IGx0LT5wcmVhbGxvY19zaXplOworCWZvciAoaW50IGkgPSBsdC0+bnBy ZWFsbG9jOyBpID4gMDsgaS0tKQorCQlsdC0+cHJlYWxsb2NbaSAtIDFdID0gbHRzR2V0RnJlZUJs b2NrKGx0cyk7CisKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJeworCQkvKiB2ZXJpZnkg dGhhdCBsaXN0IGlzIGluIHJldmVyc2Ugc29ydGVkIG9yZGVyICovCisJCWxvbmcgbGFzdF9ibG9j a19udW1iZXIgPSAtMTsKKwkJZm9yIChpbnQgaSA9IGx0LT5ucHJlYWxsb2M7IGkgPiAwOyBpLS0p CisJCXsKKwkJCUFzc2VydChsdC0+cHJlYWxsb2NbaSAtIDFdID4gbGFzdF9ibG9ja19udW1iZXIp OworCQkJbGFzdF9ibG9ja19udW1iZXIgPSBsdC0+cHJlYWxsb2NbaSAtIDFdOworCQl9CisJfQor I2VuZGlmCisKKwlyZXR1cm4gbHQtPnByZWFsbG9jWy0tbHQtPm5wcmVhbGxvY107Cit9CisKIC8q CiAgKiBSZXR1cm4gYSBibG9jayMgdG8gdGhlIGZyZWVsaXN0LgogICovCkBAIC01NTcsNiArNjIw LDkgQEAgbHRzSW5pdFRhcGUoTG9naWNhbFRhcGUgKmx0KQogCWx0LT5tYXhfc2l6ZSA9IE1heEFs bG9jU2l6ZTsKIAlsdC0+cG9zID0gMDsKIAlsdC0+bmJ5dGVzID0gMDsKKwlsdC0+cHJlYWxsb2Mg PSBOVUxMOworCWx0LT5ucHJlYWxsb2MgPSAwOworCWx0LT5wcmVhbGxvY19zaXplID0gMDsKIH0K IAogLyoKQEAgLTcwOSw3ICs3NzUsNyBAQCBMb2dpY2FsVGFwZVdyaXRlKExvZ2ljYWxUYXBlU2V0 ICpsdHMsIGludCB0YXBlbnVtLAogCQlBc3NlcnQobHQtPmZpcnN0QmxvY2tOdW1iZXIgPT0gLTEp OwogCQlBc3NlcnQobHQtPnBvcyA9PSAwKTsKIAotCQlsdC0+Y3VyQmxvY2tOdW1iZXIgPSBsdHNH ZXRGcmVlQmxvY2sobHRzKTsKKwkJbHQtPmN1ckJsb2NrTnVtYmVyID0gbHRzR2V0UHJlYWxsb2NC bG9jayhsdHMsIGx0KTsKIAkJbHQtPmZpcnN0QmxvY2tOdW1iZXIgPSBsdC0+Y3VyQmxvY2tOdW1i ZXI7CiAKIAkJVGFwZUJsb2NrR2V0VHJhaWxlcihsdC0+YnVmZmVyKS0+cHJldiA9IC0xTDsKQEAg LTczMyw3ICs3OTksNyBAQCBMb2dpY2FsVGFwZVdyaXRlKExvZ2ljYWxUYXBlU2V0ICpsdHMsIGlu dCB0YXBlbnVtLAogCQkJICogRmlyc3QgYWxsb2NhdGUgdGhlIG5leHQgYmxvY2ssIHNvIHRoYXQg d2UgY2FuIHN0b3JlIGl0IGluIHRoZQogCQkJICogJ25leHQnIHBvaW50ZXIgb2YgdGhpcyBibG9j ay4KIAkJCSAqLwotCQkJbmV4dEJsb2NrTnVtYmVyID0gbHRzR2V0RnJlZUJsb2NrKGx0cyk7CisJ CQluZXh0QmxvY2tOdW1iZXIgPSBsdHNHZXRQcmVhbGxvY0Jsb2NrKGx0cywgbHQpOwogCiAJCQkv KiBzZXQgdGhlIG5leHQtcG9pbnRlciBhbmQgZHVtcCB0aGUgY3VycmVudCBibG9jay4gKi8KIAkJ CVRhcGVCbG9ja0dldFRyYWlsZXIobHQtPmJ1ZmZlciktPm5leHQgPSBuZXh0QmxvY2tOdW1iZXI7 CkBAIC04MzUsMTMgKzkwMSwyMyBAQCBMb2dpY2FsVGFwZVJld2luZEZvclJlYWQoTG9naWNhbFRh cGVTZXQgKmx0cywgaW50IHRhcGVudW0sIHNpemVfdCBidWZmZXJfc2l6ZSkKIAkJQXNzZXJ0KGx0 LT5mcm96ZW4pOwogCX0KIAotCS8qIEFsbG9jYXRlIGEgcmVhZCBidWZmZXIgKHVubGVzcyB0aGUg dGFwZSBpcyBlbXB0eSkgKi8KIAlpZiAobHQtPmJ1ZmZlcikKIAkJcGZyZWUobHQtPmJ1ZmZlcik7 CiAKIAkvKiB0aGUgYnVmZmVyIGlzIGxhemlseSBhbGxvY2F0ZWQsIGJ1dCBzZXQgdGhlIHNpemUg aGVyZSAqLwogCWx0LT5idWZmZXIgPSBOVUxMOwogCWx0LT5idWZmZXJfc2l6ZSA9IGJ1ZmZlcl9z aXplOworCisJLyogZnJlZSB0aGUgcHJlYWxsb2NhdGlvbiBsaXN0LCBhbmQgcmV0dXJuIHVudXNl ZCBibG9jayBudW1iZXJzICovCisJaWYgKGx0LT5wcmVhbGxvYyAhPSBOVUxMKQorCXsKKwkJZm9y IChpbnQgaSA9IGx0LT5ucHJlYWxsb2M7IGkgPiAwOyBpLS0pCisJCQlsdHNSZWxlYXNlQmxvY2so bHRzLCBsdC0+cHJlYWxsb2NbaSAtIDFdKTsKKwkJcGZyZWUobHQtPnByZWFsbG9jKTsKKwkJbHQt PnByZWFsbG9jID0gTlVMTDsKKwkJbHQtPm5wcmVhbGxvYyA9IDA7CisJCWx0LT5wcmVhbGxvY19z aXplID0gMDsKKwl9CiB9CiAKIC8qCg== --=-zT2YnXEqGs0RKXY9k5a/--