Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1W3F7F-0002kU-PQ for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Jan 2014 01:17:57 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1W3F7F-0007xm-5C for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Jan 2014 01:17:57 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1W3F7D-0007vg-Aa for pgsql-hackers@postgresql.org; Wed, 15 Jan 2014 01:17:55 +0000 Received: from mail.gransy.com ([2001:1528:137::f1]) by magus.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1W3F79-0000DE-JE for pgsql-hackers@postgresql.org; Wed, 15 Jan 2014 01:17:54 +0000 Received: from antispam.gransy.com (antispam.gransy.com [77.78.104.124]) by mail.gransy.com (Postfix) with ESMTP id B4783508CE5 for ; Wed, 15 Jan 2014 02:17:48 +0100 (CET) X-Virus-Scanned: G-Hosting.cz + Station.cz + Klenot.cz + Subreg.cz amavisd-new at antispam.gransy.com Received: from mail.gransy.com ([82.208.29.194]) by antispam.gransy.com (antispam.gransy.com [77.78.104.124]) (amavisd-new, port 10024) with ESMTP id y56jNqQl9ZoR for ; Wed, 15 Jan 2014 02:17:49 +0100 (CET) Received: from [192.168.1.227] (ip-78-45-139-138.net.upcbroadband.cz [78.45.139.138]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: tv@fuzzy.cz) by mail.gransy.com (Postfix) with ESMTPSA id 29DE5508CE3 for ; Wed, 15 Jan 2014 02:17:48 +0100 (CET) Message-ID: <52D5E1BC.3000208@fuzzy.cz> Date: Wed, 15 Jan 2014 02:17:48 +0100 From: Tomas Vondra User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.1 MIME-Version: 1.0 To: pgsql-hackers@postgresql.org Subject: Re: GIN improvements part 1: additional information References: <52950F46.2080009@vmware.com> <5298615C.7060102@vmware.com> <5298E834.4090408@vmware.com> <52A58AD5.6030808@vmware.com> <52A62771.3070800@vmware.com> <52AEE445.1060206@vmware.com> <52AF837C.3040201@vmware.com> <52B2F5B0.1030809@vmware.com> <52B49C34.8060300@vmware.com> <52D0A947.6050706@fuzzy.cz> <52D478F2.6070005@fuzzy.cz> In-Reply-To: <52D478F2.6070005@fuzzy.cz> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org On 14.1.2014 00:38, Tomas Vondra wrote: > On 13.1.2014 18:07, Alexander Korotkov wrote: >> On Sat, Jan 11, 2014 at 6:15 AM, Tomas Vondra > > wrote: >> >> On 8.1.2014 22:58, Alexander Korotkov wrote: >> > Thanks for reporting. Fixed version is attached. >> >> I've tried to rerun the 'archie' benchmark with the current patch, and >> once again I got >> >> PANIC: could not split GIN page, didn't fit >> >> I reran it with '--enable-cassert' and with that I got >> >> TRAP: FailedAssertion("!(ginCompareItemPointers(&items[i - 1], >> &items[i]) < 0)", File: "gindatapage.c", Line: 149) >> LOG: server process (PID 5364) was terminated by signal 6: Aborted >> DETAIL: Failed process was running: INSERT INTO messages ... >> >> so the assert in GinDataLeafPageGetUncompressed fails for some reason. >> >> I can easily reproduce it, but my knowledge in this area is rather >> limited so I'm not entirely sure what to look for. >> >> >> I've fixed this bug and many other bug. Now patch passes test suite that >> I've used earlier. The results are so: > > OK, it seems the bug is gone. However now there's a memory leak > somewhere. I'm loading pgsql mailing list archives (~600k messages) > using this script > > https://bitbucket.org/tvondra/archie/src/1bbeb920/bin/load.py > > And after loading about 1/5 of the data, all the memory gets filled by > the pgsql backends (loading the data in parallel) and the DB gets killed > by the OOM killer. I've spent a fair amount of time trying to locate the memory leak, but so far no luck. I'm not sufficiently familiar with the GIN code. I can however demonstrate that it's there, and I have rather simple test case to reproduce it - basically just a CREATE INDEX on a table with ~1M email message bodies (in a tsvector column). The data is available here (360MB compressed, 1GB raw): http://www.fuzzy.cz/tmp/message-b.data.gz Simply create a single-column table, load data and create the index CREATE TABLE test ( body_tsvector TSVECTOR ); COPY test FROM '/tmp/message-b.data'; CREATE test_idx ON test USING gin test ( body_tsvector ); I'm running this on a machine with 8GB of RAM, with these settings shared_buffers=1GB maintenance_work_mem=1GB According to top, CREATE INDEX from the current HEAD never consumes more than ~25% of RAM: PID USER PR NI VIRT RES SHR %CPU %MEM COMMAND 32091 tomas 20 0 2026032 1,817g 1,040g 56,2 23,8 postgres which is about right, as (shared_buffers + maintenance_work_mem) is about 1/4 of RAM. With the v5 patch version applied, the CREATE INDEX process eventually goes crazy and allocates almost all the available memory (but somesimes finishes, mostly by pure luck). This is what I was able to get from top PID USER PR NI VIRT RES SHR S %CPU %MEM COMMAND 14090 tomas 20 0 7913820 6,962g 955036 D 4,3 91,1 postgres while the system was still reasonably responsive. regards Tomas -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers