From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id GLMrE63uj2G5dgEAgWs5BA (envelope-from ) for ; Sat, 13 Nov 2021 17:58:21 +0100 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id qHHNDq3uj2EMVAAAB5/wlQ (envelope-from ) for ; Sat, 13 Nov 2021 16:58:21 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id B368E25881 for ; Sat, 13 Nov 2021 17:58:20 +0100 (CET) Received: from localhost ([::1]:46540 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mlwM7-0003YB-4f for larch@yhetil.org; Sat, 13 Nov 2021 11:58:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33712) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mlwLq-0003XW-Oh for bug-guix@gnu.org; Sat, 13 Nov 2021 11:58:02 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:36431) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mlwLq-00044k-GQ for bug-guix@gnu.org; Sat, 13 Nov 2021 11:58:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mlwLq-0002XV-Fl for bug-guix@gnu.org; Sat, 13 Nov 2021 11:58:02 -0500 X-Loop: help-debbugs@gnu.org Subject: bug#24937: "deleting unused links" GC phase is too slow Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sat, 13 Nov 2021 16:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 24937 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Maxim Cournoyer Received: via spool by 24937-submit@debbugs.gnu.org id=B24937.16368226259693 (code B ref 24937); Sat, 13 Nov 2021 16:58:02 +0000 Received: (at 24937) by debbugs.gnu.org; 13 Nov 2021 16:57:05 +0000 Received: from localhost ([127.0.0.1]:47977 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mlwKv-0002WG-Ex for submit@debbugs.gnu.org; Sat, 13 Nov 2021 11:57:05 -0500 Received: from eggs.gnu.org ([209.51.188.92]:32932) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mlwKq-0002Vg-6d for 24937@debbugs.gnu.org; Sat, 13 Nov 2021 11:57:03 -0500 Received: from [2001:470:142:3::e] (port=55920 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mlwKk-00041I-TM; Sat, 13 Nov 2021 11:56:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=4tz40tkbSYLVJ8OXw7jo84weMsglgRfIObcQWKJyixg=; b=fjdGHs5Gr6kfCEPEpkyI wQIPb/LWNJJDezEVvgvU4hFEqrcV+eRksgHO2VrCiluBC6j4FXMDDti/55sW7Ch4l5IiMXzXZzkiK OHgUVQ1TMDKZ7/TkAdqp94j9BLDv/bCRD/WXLEhGW2vnPQWzhiSLPaqqxvHbNZgoFvvrCtJWig3aR OpcPTNGKBzDCzDcbDkXZBe0GlAZxOMhKMJZnE8iDtk/igRPq2qdlBa/Xgyyl5NG5V2MGxh/OHAbIZ yKw5be3yUJfPk3Qrbwkf78E7mntZRTyYUOQ7phdQOqkCWQs4zhk9GtN+iZJYgLhPwFxPm9IDYwQoY b1EyjB3A1/4AQQ==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201]:55136 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mlwKk-0002ck-Hr; Sat, 13 Nov 2021 11:56:54 -0500 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <87wpg7ffbm.fsf@gnu.org> <87pmr9l76m.fsf@gnu.org> <87v90ys911.fsf@gmail.com> X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 23 Brumaire an 230 de la =?UTF-8?Q?R=C3=A9volution?= X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Date: Sat, 13 Nov 2021 17:56:52 +0100 In-Reply-To: <87v90ys911.fsf@gmail.com> (Maxim Cournoyer's message of "Thu, 11 Nov 2021 15:59:54 -0500") Message-ID: <87v90wat9n.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: 24937@debbugs.gnu.org Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: "bug-Guix" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1636822700; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=4tz40tkbSYLVJ8OXw7jo84weMsglgRfIObcQWKJyixg=; b=J+gJo74T0TNml3VKj+d4/zdZ8Fp6LeQhO1jf8GsYFi4OlDarPU6AgcePv77rleEbHfF5zw CpkEDOdlacesT+mgRmYjC9blNiKQaIR75R+jArdbjcFjcACFXmA6KHh1vZ4YaekkYV3uW3 0TIRA5qYP+ClHv6K/bF4unPDXUakl//qtEXN0X/exgy7TrjwyyKr1fW4URxjdWjnnzf2y5 TT0qcfnh6pp9NO0lY4VvqcOcxU4I4sTkjyssGesshGBRja6bIYjdWTX9XI1hsOYKpiOPvl EnpYk0gydl/53eq1QRtz7+8jHEjfjrGNS8VIqmgLL+0X2RcxOo6Slx2WHTrVqw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1636822700; a=rsa-sha256; cv=none; b=f8HS4S7oERwkjU1C21YQiTDijU60tU87Ov3btkiOuJ5baibR8vuGJh14Z/Lk1EWye2ak/k V72ZbLBBfSbXgzrLS2dYJs0q0YyYzSpH/mAot9/proQ73SIBgLiYjhDAsc/ougSfIZiA3Q qpxm1WWT+0QPAsWsBBzK/hWD0kxwCepf54QigonGhntN5W0FYIBLERD9jIM/PtD750LIUd 0/F/D1CcmDdx23E8Y8/17ssDOymhqdZ5bMe6fnPYsZ2PBCAGRSJVj64QZgzWgtQi6l3TGV N0zqhbrDXIya7Fe+5AW70HiGC8uVJqrumvtz3sYvKTM/2FDbmzNYeWeKIFYnSg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=fjdGHs5G; spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -2.04 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gnu.org header.s=fencepost-gnu-org header.b=fjdGHs5G; spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: B368E25881 X-Spam-Score: -2.04 X-Migadu-Scanner: scn0.migadu.com X-TUID: DYuG3Prvw4rR --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi, Maxim Cournoyer skribis: > I haven't done any analysis, just grabbed the result, but here it what > it looks for me: There=E2=80=99s a bit more than 35% of deduplicated files that are < 1KiB, = and not much to be gained by deduplicating them. On IRC several people shared the results on their machine; several had similar results, and one person had a lot more of those small files (50% of deduplicated files were < 1KiB). The chart (with a kinda bogus layout) below is perhaps more interesting: it shows the contribution of files below a certain size to the overall space savings. --=-=-= Content-Type: image/png Content-Disposition: inline; filename=space-saving-contribution.png Content-Transfer-Encoding: base64 Content-Description: the chart iVBORw0KGgoAAAANSUhEUgAABJoAAAFtCAIAAADApJfXAAAABmJLR0QA/wD/AP+gvaeTAAAgAElE QVR4nOzde2BT5f3H8Sc5SdokTdrQO5Q2gthpRUpBcGrBqThWmTpEaBlSdYgOEZSh4OXntMAUp4LK bVAdFxHaMe0YFua8IODEnwi0Q0TGJfZmKZfYpqW0aZrfH8dfVkuTFGibE/p+/ZXz5DnnfE5yTpNv n5xzVG63WwAAAAAAgo060AEAAAAAAOeDcg4AAAAAghLlHAAAAAAEJco5AAAAAAhKlHMAAAAAEJQo 5wAAAAAgKFHOAQAAAEBQopwDAAAAgKBEOQcA5+nrr7+eM2fO2LFjf/7zn//qV7+aPXv2tm3bLnyx e/bsWbdund9ub7311q233io/XrZs2ZgxYzpqdS2X3IHauV0QnfYWAAAuPpRzAHA+CgoKHn74YZvN dueddz7xxBOTJk0yGo1z5szZuXPnBS65nWVPREREUlLSBa6rzdV11JL9rgjedNJbAAC4+GgCHQAA gs/+/fsXLVqUnp7+9NNPS5IkN956661Hjhxpamrq7LU7nU6tVjtq1KhRo0Z1xvI7b8loJ94CAEA7 Uc4BwDlbv369TqebMWOGp5aT9enTx/N4165dq1atOnTokEajueqqqyZPnuwZb1m2bNkHH3zw+9// /k9/+tPhw4ejoqJ+9atfjR49WgixePHid955Rwhx0003CSGioqLy8vLk/k8++eQbb7xx5MiRX/zi F9OmTXvrrbfWrVv33nvveda4f//+xYsXHz58OCIi4s4777zrrrvk9j/84Q+lpaVLly719JwxY0ZY WFhOTk6bq2u15PPbkFbaXJHvhbdy7Nix5cuXFxUVORyOiIiI5OTk2bNnGwwGOcNjjz32xhtvlJSU tNr2o0ePrl279quvvrLb7VFRUUOHDr3vvvuMRqNnsUeOHFm5cmVxcXFDQ0NMTMzPf/7z8ePHe556 8803i4uLnU5nv3797r///v79+59TNh9r37p165w5c1asWNFyn5k9e/apU6eWL1/e8i3w+yJv3bp1 1apV3333Xa9eve65556NGzfqdLp58+b5CNbmVgAAghHlHACcsz179lx11VUmk8lbhy+//PKJJ55I TU39n//5nzNnzqxcuXLatGnLly+PjY2VO9TW1i5atGjKlCm9e/feunXr4sWLExIShgwZMnHixObm 5vfff3/FihVCCE+5WFtb+9prr/32t7/t06eP0+k8e4319fU5OTlZWVm9e/fesWPHsmXLQkNDf/nL X/reEG+ru/ANac+K/C68peeee66xsXHatGmRkZEnT57ctWuXZyDU4XAsXbr08ccfT0pK2rZt28KF Cz3bfuzYsfj4+OHDh5vN5srKyrfffvvQoUOvvvqqPOPBgwcfeeSRnj17TpkyJTo6ury8/MiRI/JT hw8fnjZtmtVqnTFjhsFg2LRp08yZM19//fXLLrus/dl8rP3aa681Go0ffPDB5MmT5YXY7fbdu3ff f//9Zy/fx4u8d+/euXPnpqenP/TQQ9XV1cuXL29oaOjXr5/fFw0AcHGgnAOAc1NXV3f69Om4uDgf ff785z/Hxsa+8MILct1y5ZVX3n333evXr58+fbrcwel0zpgxIzk5WQgxevToLVu2fPTRR0OGDDGZ TEajUaVStVq+0+mcPn36wIEDva3xzJkzM2bMkMe+0tLSqqurV69enZGRcXaF1pK31V34hrRnRX4X 7tHU1HTw4MHf/e53w4YNk1s8D+RnH3rooSuuuEII8Ytf/OLgwYOebb/mmmuuueYauduAAQP69u37 wAMPHD169JJLLhFC/OlPfwoLC1u0aFFoaKgQouXLu3z58vDw8Jdffll+6uqrr548efJbb72Vk5PT /mw+1q7T6YYPH/7hhx/ef//9KpVKCPHRRx+53e4bb7zx7HfBx4u8cuXKvn37/v73v5d79unTZ9Kk SXI55/tFAwBcHCjnAKCDNTY2HjhwIDMz01NKxcTEXHXVVUVFRZ4+ISEh8rdzWc+ePauqqnwsU5Kk 1NRUHx1UKlXLL+vDhw/funVrZWVlr169znMzOmdDzmnhHhqNpm/fvmvWrKmvrx84cKBcjHmoVKq0 tDTP5ODBgzdu3Chve1NTU0FBwQcffFBVVXX69Gm5Q2lp6SWXXOJ0OouLi8eMGSMXbC01NTXt3bv3 jjvu8DylUqmuueaalj9tbU82H2sXQowYMaKwsHDPnj1y+H/+85+DBg2KjIw8exXeXmS3233gwIFf //rXnqcuueQSzzvu+0UDAFwcKOcA4NwYjUaDwVBZWemtQ21trdvt7tGjR8tGi8Vis9k8k63OX5Ik qbGx0cdKzWazPIbjI5VWq/VMyms/ceLEhZRznbEh57TwlubNm7dq1aq333578eLF0dHRY8aM8dyb wWg0thyEDA8PF/+/7cuXL9+0adOkSZOuuOIKg8FQU1Mzffp0OWFtbW1zc3NUVNTZ63I4HE1NTe++ ++7f/vY3T2Nzc3Nzc/M5ZfOxdiFE//794+Li/vnPf6alpZWUlPznP/958skn21y+txfZ4XA4nU6L xdLqNWzPiwYAuDhQzgHAORs4cOCuXbscDkebp8+FhYWpVKpTp061bLTb7WazufMi1dXVNTY26nQ6 eVJeu1yr6HQ6l8vVqnNYWJjfZXbqhpzrwqOion73u98JIY4ePbply5alS5dGR0cPHz5cCFFbW9vQ 0BASEiL3PHHihPj/bf/ggw9aXjjkm2++aRlAkqTjx4+fvS6j0ahWq2+77bbbbrutPdviLZuPtQsh VCrVzTff/Ne//vWRRx755z//qdfrr7/++vaszsNkMmm1Wrvd3rLRbrd73lwfLxoA4OLAfecA4Jxl ZmY2Nja+8sorrcqkI0eOHDx4UKfTXX755Z988onn2aqqquLi4gEDBrRn4Vqttp0DXC253e6WNzH/ +OOPIyMj5RPVYmNjq6qqPGG+//770tLS9qzuAjeklVYrOu+FX3LJJQ8++KBWqz169Kin8aOPPvI8 /vDDD+Vtd7vdZ86caVm4fvLJJy3zXHXVVR999FF9fX2rVeh0utTU1L1798bHxyf+WPuz+V67bMSI EfX19du3b//ggw/S09M9FWk7qVSqn/zkJzt27PC0HD16tLy83Hewc1oFAEDhGJ0DgHN2xRVXPPTQ Q4sXL37ggQdGjBgRFxdXW1u7Z8+eTz75ZM6cOUKIe+65Z9asWbNnz7799tvPnDmzevXq0NDQcePG tWfhVqvV6XS+8847V1xxhU6na3khex9CQ0Nzc3NramoSExN37Nixbdu2Rx99VP4J4g033LBq1ao3 3nhj7Nixp06dWrRoUcufJvpe3YVsiN/tav/Cjx07Nm/evBtvvDEhIUGtVm/durWpqWnQoEGebV+1 atXp06cTExO3bdv2r3/9y7PtgwcPfu+996699tqYmJitW7e+//77LRf7wAMPTJ8+/aGHHrrrrrti YmK+++67w4cPyxdiefDBB6dPnz59+vTbb789Ojq6pqbm4MGDQgjPhSj9ZlOpVL7XLoRISEi4/PLL V6xYceLEiREjRpzHq3rPPffMnDkzJycnIyOjpqbmz3/+c48ePeTf5fp+0QAAFwfKOQA4H7/61a+S k5M3bNiwYcOG6upqo9H4k5/85Nlnn5WvZDho0KAXXnhh1apV8+bNk++oNmfOnDavv3+26667btSo UWvWrHE4HJGRkfL92fzS6/W///3vFy1aJN937sEHH/Tch7p3797PPPPMypUr33nnnfj4+LvvvnvT pk3tXN2FbIjf7Wr/wsPCwhITEwsKCqqqqjQajdVqzcnJ8dwFzse2P/roo6+//vq0adOam5uvvPLK Z599tuVlM/v16/faa6+tXLly6dKlTqczNjZ25MiR8lN9+/ZdsmTJqlWrli9fXltbK9+0rc3fXvrI 5nvtshEjRrz22mtRUVE+LlvqQ2pq6tNPP71y5cqnnnqqZ8+e999///r16+Vb2/l+0QAAFweV2+0O dAYAAM6TfJftDRs2BDqIIpw8efLuu+++7777uOQJAHQTjM4BABCs6uvrc3Nz09LSwsPDKysr169f r9frb7nllkDnAgB0Eco5AACClXxxzoULF9bU1Oj1+gEDBvz+97/v1GuoAgAUhR9bAgAAAEBQ4kYF AAAAABCUgvjHlt9++22gIwBA17FYLC6Xq6amJtBBOktcXJzdbm9oaAh0EP+0Wm10dHRFRUWgg7TB YDAYjcY2b48eQImJiaWlpcr5QZCidjZJkuLj48vKygId5AcxMTEOh+Ps+zEGhNlsliTJbrcHOogQ Quj1erPZfOzYsUAHEUIIjUYTGxvb5n0mAyIpKamkpMTHMZ6UlNSVeboVRucAAAAAIChRzgEAAABA UKKcAwAAAICgRDkHAAAAAEGJcg4AAAAAghLlHAAAAAAEJco5AAAAAAhKlHMAAAAAEJQo5wAAAAAg KGkCHQAAAABA93XD6EK/fba+k9EFSYIRo3MAAAAAEJQo5wAAAACgNavVumvXLiFEXFzcvn37Lnw5 nYFyDgAAAEB3lJCQ4KPQysnJSUpKuvDFnvdy2oNz5wAAAADgv5qamjQazcSJEztkaR21nDYxOgcA AAAg+FRUVIwbNy42NjYyMvK+++6TGw8dOjRixAiLxXL55Zfn5+fLjXFxcfPnzx8yZEi/fv3uueee pqYmIcSUKVMqKytvu+02q9W6evVqT7e0tLT+/fuLH/9I8sMPP+zXr19kZOSDDz7Y2NgoN2o0msrK SvnxI4888vTTT7e5WM9y2p+t/SjnAAAAAASZ5ubm22+/PTIy8tChQxUVFffee68QwuVy3XbbbT/9 6U+PHTu2fPny3/zmN3v27JH7/+///u+nn366f//+r7/+Wi6llixZEhcXt3HjRpvN5hlA27Zt22ef fbZ///5Wq8vLy/vss88OHjy4Z8+eF1980UewNhd7rtnaj3IOAAAAQJApKir6z3/+s2DBApPJFBIS kp6eLoTYvXt3ZWXlM888o9Pp0tPTx40bt3btWrn/tGnTtFqtVqu9+eabd+/e7W2x06dPDwkJUalU rdoff/zxqKioyMjIp556at26decR+MKztYlyDgAAAECQKS0tTUhICAkJadlYUVHRq1cvjeaH64NY rdby8nL5cWRkpPxAr9fX1tZ6W2x8fHyb7b1795YfJCUlVVRUnEfgC8/WJso5AAAAAEGmd+/eZWVl ntPYZD179iwvL/ecfmaz2Xr16uVjIWp162ro7HE5WWlpqfygpKSkZ8+e8mOj0djQ0CA/PnnypI/F nke2duqYcm7//v033nijyWSKj4+fOXNmc3Oz3O5wODIzM41GY0JCwrJly9qc11uf9swLAAAAoBtK TU3t16/f7373u9ra2oaGhu3btwsh0tLSYmNj582b53Q6P/300/z8/PHjx/tYSExMzKFDh9qzupde eunkyZOnTp36wx/+MG7cOE+Gf/zjH0KIw4cP//3vf/e92HPN1k4dU85NmDChT58+x44d27Zt24YN G9544w25fcaMGVVVVTabbd26dY899pj8KrfirU975gUAAADQDalUqoKCgoqKCqvV2rNnz5UrVwoh JEn629/+tm3btujo6N/85jd/+tOf0tLSfCzkySeffOyxxywWy4oVK3yv7q677rrmmmv69evXv3// WbNmyY0LFy5cunTpkCFDZs2adeutt/pe7LlmayeV2+2+8KVYLJa//e1vw4YNE0Lcf//9RqNx4cKF TqfTYrEUFhbK7ZMmTRJC5ObmtpzRW5/2zPvtt99eeHIACBYWi8XlctXU1AQ6SGeJi4uz2+2eX60o mVarjY6OPr9zJzqbwWAwGo3Hjx8PdJAfSUxMLC0t7ZCvHB1CUTubJEnx8fFlZWWBDvKDmJgYh8NR X18f6CBCCGE2myVJstvtgQ4ihBB6vd5sNh87dizQQYQQQqPRxMbGes68CrikpKSSkhIfx3jn3UQb HXMb8UcffXTNmjWDBw+uqKj48MMPlyxZIoSw2Wx1dXWpqalyn9TUVM/FWzy89WnPvOwWALohi8US 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 71NSUr7//vthw4bl5+ef3W3q1KmJiYmhoaF9+vR55ZVX5MbGxsapU6f27dvXYDAMGDBg48aNba7C 4XBkZmYajcaEhISWd7Tz1g4AAAAAEH5H55577rnCwsL09HR5Mjs7e/LkyWPHjm3Vbdy4cTNnzgwP D//mm2/uuOOOK6+88pZbbmloaFCpVHl5eYmJie++++7YsWP37dt36aWXtpp3xowZVVVVNpvtwIED GRkZKSkp8uq8tQMAAAAARHvOnRs6dKhncujQoW2eTecptPr27WsymQ4dOnTLLbeYTKbXX39dbn/g gQdefvnl3bt3tyrnnE7nunXrCgsLo6Ojo6Ojx40bt2rVqvT0dG/tLeeVJOk8NhgAgpRKpVKr1Rfx nz6VSiVJUlBsoCRJctpAB2mDWq1WZjZJktxud6BT/EBRO5scQyFhhML+1Chqf1ZUGKXtNkJhx3i3 4qecGzRo0PPPP//UU09pNJqmpqZ58+YNHjy4zZ5PPvlkbm7uyZMnL7300rvuuqvVs5WVlTabrX// /q3abTZbXV1damqqPJmamrp27Vof7S3Fx8e3YwMB4CKhVqvdbndYWFigg3QWtVodGRkZLN8G1Gq1 Mj+GVCqVSqVSWjaVShUXFxfoFP+ltJ1NkiTlvGVqtVqn0ynkxZH3Z4PBEOggQijv4FLUbiOEUNQx 3q34KeeWLl16++23v/rqq7169SovL4+Li/N2CtwTTzzx29/+9tNPP/3iiy9MJlPLpxoaGrKysiZP nnz55Ze3mqu2tlYI4ekfHh7ucDh8tLdUVlbWni0EgIuDxWJxuVw1NTWBDtJZ4uLi7HZ7Q0NDoIP4 p9Vqo6OjKyoqAh2kDQaDwWg0Hj9+PNBBfiQxMbG8vFwhFYJQ2M4mfylXzreamJgYh8NRX18f6CBC CGE2myVJstvtgQ4ihBB6vd5sNh87dizQQYQQQqPRxMbGlpeXBzrID5KSknwf40lJSV2Zp1vxU85d dtll+/bt2717d0VFRc+ePdPS0ryN6ppMJpPJlJmZ+cknn7z88stPPfWU3O50OseOHRsdHf3qq6+e PZf8b2aHw2E2m4UQ1dXVcgnnrR0AAAAAIPN/owJJkq6++ur2L9Htdh85ckR+3NTUlJmZ6Xa7165d 22YdaLVaDQZDcXHx9ddfL4QoKipKSUnx0Q4AAAAAkPm5UcF99923fft2z+T27dsnTZrUqo/D4Xjt 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 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable In a nutshell: =E2=80=A2 Files < 1KiB contribute to 0.3% of the space savings; =E2=80=A2 Files < 4KiB contribute to 2.5% of the space savings; =E2=80=A2 Files < 256KiB contribute to 42% of the space savings. You can create this plot with: --8<---------------cut here---------------start------------->8--- (make-scatter-plot #:title "Contribution to space savings" #:write-to-png "/tmp/space-saving-contribution.png" #:chart-width 1000 #:y-axis-label "contribution (%)" #:x-axis-label "size (B)" #:log-x-base 2 #:min-x 513 #:data (let ((total (saved-space l))) `(("contribution" ,@(map (lambda (size) (cons size (/ (saved-space (filter (lambda (fil= e) (< (dedupl= icated-file-size file) size)) l)) total .01))) (map (cut expt 2 <>) (iota 12 10 1))))))) --8<---------------cut here---------------end--------------->8--- You can also compute individual points like this: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> (/ (saved-space (filter (lambda (file) (< (deduplicated-file-size file) 1024)) l)) (saved-space l) 1.) $60 =3D 0.0034284626558736746 scheme@(guile-user)> (/ (saved-space (filter (lambda (file) (< (deduplicated-file-size file) 4096)) l)) (saved-space l) 1.) $62 =3D 0.025190871178467848 scheme@(guile-user)> (/ (saved-space (filter (lambda (file) (< (deduplicated-file-size file) (expt 2 18))) l)) (saved-space l) 1.) $65 =3D 0.42411104869782185 --8<---------------cut here---------------end--------------->8--- Choosing a deduplication threshold of 2KiB or 4KiB would have a negligible impact on disk usage on my machine. Thanks, Ludo=E2=80=99. --=-=-=--