Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1ei6s8-0006xJ-RC for pgsql-performance@arkaria.postgresql.org; Sat, 03 Feb 2018 23:05:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ei6s6-0006qN-17 for pgsql-performance@arkaria.postgresql.org; Sat, 03 Feb 2018 23:05:22 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ei6s5-0006pP-MB for pgsql-performance@lists.postgresql.org; Sat, 03 Feb 2018 23:05:21 +0000 Received: from mail-lf0-x234.google.com ([2a00:1450:4010:c07::234]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ei6rt-0002mo-PA for pgsql-performance@lists.postgresql.org; Sat, 03 Feb 2018 23:05:17 +0000 Received: by mail-lf0-x234.google.com with SMTP id v188so36690354lfa.11 for ; Sat, 03 Feb 2018 15:05:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language; bh=BBZFKiNN5iOxMMmwcrq/Nga0Y0/0TAc8JoLUn0qlBBg=; b=nb4Ist59GkSS9o+C487Lrzl+GFLQS0OE0Js8r48ooQs4ldNcNB2qKiBOYEdecGtx4o Ed3FkxYxDEwWnLe1YxnlksVKdc9SrxnBsBnONGZuud2ZB+ZgbrXoGig4Sdp8RHyVswY9 wlgAmqmGZQgfa27v387wxWAnunE7oZ9RVSpkZoFI94DOS4PARoWetX6C41A2qu6lfYfr /AAFAzqrcLpPGC95P0PGuhPLp7N/U2qKkJLm60VY8LBktZv/y9kju7CbMO+Efzah7ES9 0K50hRJf923hsXIlbTNx7row1eXcVjJqwLYpCrA6jC4OoNjEkiIt+B9DGk5Z/z3C+Axe XJlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=BBZFKiNN5iOxMMmwcrq/Nga0Y0/0TAc8JoLUn0qlBBg=; b=mf/ndRZwHaktzOXHJU8rrQqljm5tV7u1vmIihKALLeyaic9fCpU6YbUUMiNaBikTvW lKCPLqGL8C7mdS4GJOWpbKpEPvLV4a0gaClkJj3t1gvU9RLo8ws0qg+5raxcQLz7jGYS 0+eBxOTU57ceii2+1ObMA+90lRDgjTsmZ1Phk+sHry6+N7hgyTWGtJxH5NEDtYrmbj66 ovXtHHxmTOk3O7AOkStYflQJTHUgT7TEp/Z9hp9Eohr1wOB7QQif4jBzE9sSgtNY5n9B qUpYVJEIPpoHRJ3SFc2fiaQcGQIkW9rHt1ejseadM7Vx4s8/kXx4EefUIA6YQOxktuP3 pqbQ== X-Gm-Message-State: AKwxyteRXhYJ2q0sOB79ldk2AUS4GsMXoQvr1SqeLxQPct95LGTCIJe3 m4anPRt9TCOo3kFn7hhgXbEzyTGK X-Google-Smtp-Source: AH8x225BDoGrhyjRLLN63ff55+Imk8lx44g8TWERbbcN2sDNlSNBOoIuoSXlzoLm2HoOPRIQ+MbwVw== X-Received: by 10.25.80.13 with SMTP id e13mr10588214lfb.72.1517699107082; Sat, 03 Feb 2018 15:05:07 -0800 (PST) Received: from [192.168.1.151] ([178.54.41.83]) by smtp.gmail.com with ESMTPSA id a6sm1072499ljf.92.2018.02.03.15.05.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 03 Feb 2018 15:05:05 -0800 (PST) Subject: Re: effective_io_concurrency on EBS/gp2 From: Vitaliy Garnashevich To: Claudio Freire , hzzhangjiazhi Cc: Gary Doades , Rick Otten , "pgsql-performance@lists.postgresql.org" References: <6c7a45df-f6ab-f2ce-6f84-9555864f6c86@gmail.com> <768e3a56-46ed-3dd1-8722-953a47857a35@gmail.com> <014801d39a99$d4c32930$7e497b90$@gpdnet.co.uk> <8fb758a1-d7fa-4dcc-fb5b-07a992ae6a32@gmail.com> <534b557c-3658-6d0f-2330-34a78da57e2f@gmail.com> <9122FC8B-2129-4E10-807F-F9F34117A156@corp.netease.com> Message-ID: <85a21d95-a776-4c1c-3223-5568864df3f3@gmail.com> Date: Sun, 4 Feb 2018 01:05:05 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------0FA848366DAE9F1C477CB179" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------0FA848366DAE9F1C477CB179 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit > Problem is, if you're scanning a highly correlated index, the > mechanism is counterproductive. > I would not expect this to make much of a difference on a table which > is perfectly correlated with the index.  You would have to create an > accounts table which is randomly ordered to have a meaningful > benchmark of the eic parameter. If I read the postgres source code correctly, then the pages are sorted in tbm_begin_iterate() before being iterated, so I don't think correlation of index should matter. The tests on shuffled records show the same trend in execution time for different eic values. I did some more tests, this time on DigitalOcean/SSD. I also tried different kernel versions (3.13 and 4.4). I've run each test several times. Ubuntu 16.04.3 LTS Linux ubuntu-s-2vcpu-4gb-ams3-01 4.4.0-112-generic #135-Ubuntu SMP Fri Jan 19 11:48:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux PostgreSQL 9.6.6 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609, 64-bit select array_agg(aid) from (select aid from pgbench_accounts order by ctid limit 20)_;                       array_agg ------------------------------------------------------  {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20} (1 row) effective_io_concurrency=0 Execution time: 3910.770 ms effective_io_concurrency=1 Execution time: 10754.483 ms effective_io_concurrency=2 Execution time: 5347.845 ms effective_io_concurrency=4 Execution time: 5737.166 ms effective_io_concurrency=8 Execution time: 4904.962 ms effective_io_concurrency=16 Execution time: 4947.941 ms effective_io_concurrency=8 Execution time: 4737.117 ms effective_io_concurrency=4 Execution time: 4749.065 ms effective_io_concurrency=2 Execution time: 5031.390 ms effective_io_concurrency=1 Execution time: 10117.927 ms effective_io_concurrency=0 Execution time: 3769.260 ms select array_agg(aid) from (select aid from pgbench_accounts order by ctid limit 20)_; array_agg --------------------------------------------------------------------------------------------------------------------------------------------------------------------------  {14845391,12121312,18579380,9075771,7602183,762831,8485877,1035607,4451695,4686093,1925254,3462677,9634221,14144638,17894662,8247722,17996891,14842493,13832379,2052647} (1 row) effective_io_concurrency=0 Execution time: 6801.229 ms effective_io_concurrency=1 Execution time: 14217.719 ms effective_io_concurrency=2 Execution time: 9126.216 ms effective_io_concurrency=4 Execution time: 8797.717 ms effective_io_concurrency=8 Execution time: 8759.317 ms effective_io_concurrency=16 Execution time: 8431.835 ms effective_io_concurrency=8 Execution time: 9387.119 ms effective_io_concurrency=4 Execution time: 9064.808 ms effective_io_concurrency=2 Execution time: 9359.062 ms effective_io_concurrency=1 Execution time: 16639.386 ms effective_io_concurrency=0 Execution time: 6560.935 ms Ubuntu 14.04.5 LTS Linux ubuntu-s-2vcpu-4gb-ams3-02 3.13.0-139-generic #188-Ubuntu SMP Tue Jan 9 14:43:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux PostgreSQL 9.6.6 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4, 64-bit select array_agg(aid) from (select aid from pgbench_accounts order by ctid limit 20)_;                       array_agg ------------------------------------------------------  {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20} (1 row) effective_io_concurrency=0 Execution time: 3760.865 ms effective_io_concurrency=1 Execution time: 11092.846 ms effective_io_concurrency=2 Execution time: 4933.662 ms effective_io_concurrency=4 Execution time: 4733.713 ms effective_io_concurrency=8 Execution time: 4860.886 ms effective_io_concurrency=16 Execution time: 5063.696 ms effective_io_concurrency=8 Execution time: 4670.155 ms effective_io_concurrency=4 Execution time: 5049.901 ms effective_io_concurrency=2 Execution time: 4785.219 ms effective_io_concurrency=1 Execution time: 11106.143 ms effective_io_concurrency=0 Execution time: 3779.058 ms select array_agg(aid) from (select aid from pgbench_accounts order by ctid limit 20)_; array_agg --------------------------------------------------------------------------------------------------------------------------------------------------------------------------  {8089611,788082,3477731,10034640,9256860,15432349,2412452,10087114,10386959,7199759,17253672,7798185,160908,1960920,13287370,14970792,18578221,13892448,3532901,3560583} (1 row) effective_io_concurrency=0 Execution time: 6243.600 ms effective_io_concurrency=1 Execution time: 14613.348 ms effective_io_concurrency=2 Execution time: 8250.552 ms effective_io_concurrency=4 Execution time: 8286.333 ms effective_io_concurrency=8 Execution time: 8167.817 ms effective_io_concurrency=16 Execution time: 8193.186 ms effective_io_concurrency=8 Execution time: 8206.614 ms effective_io_concurrency=4 Execution time: 8375.153 ms effective_io_concurrency=2 Execution time: 8354.106 ms effective_io_concurrency=1 Execution time: 14139.712 ms effective_io_concurrency=0 Execution time: 6409.229 ms Looks like this behavior is not caused by, and does not depend on: - variable performance in the cloud - order of rows in the table - whether the disk is EBS (backed by SSD or HDD), or ordinary SSD - kernel version Does this mean that the default setting for eic on Linux is just inadequate for how the modern kernels behave? Or am I missing something else in the tests? Regards, Vitaliy --------------0FA848366DAE9F1C477CB179 Content-Type: application/octet-stream; name="test-digitalocean-ubuntu14.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test-digitalocean-ubuntu14.zip" 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 --------------0FA848366DAE9F1C477CB179 Content-Type: application/octet-stream; name="test-digitalocean-ubuntu16.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test-digitalocean-ubuntu16.zip" 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 CQA1AwAAPR0AAAAA --------------0FA848366DAE9F1C477CB179--