Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 14050 invoked from network); 21 Feb 2006 21:55:08 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 21 Feb 2006 21:55:08 -0000 Received: (qmail 20657 invoked by uid 500); 21 Feb 2006 21:55:06 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 20619 invoked by uid 500); 21 Feb 2006 21:55:06 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 20610 invoked by uid 99); 21 Feb 2006 21:55:06 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Feb 2006 13:55:06 -0800 X-ASF-Spam-Status: No, hits=1.9 required=10.0 tests=DNS_FROM_RFC_ABUSE,DNS_FROM_RFC_POST X-Spam-Check-By: apache.org Received-SPF: neutral (asf.osuosl.org: local policy) Received: from [32.97.182.141] (HELO e1.ny.us.ibm.com) (32.97.182.141) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Feb 2006 13:55:04 -0800 Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e1.ny.us.ibm.com (8.12.11/8.12.11) with ESMTP id k1LLsfQo025364 for ; Tue, 21 Feb 2006 16:54:41 -0500 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay02.pok.ibm.com (8.12.10/NCO/VERS6.8) with ESMTP id k1LLsfXg181096 for ; Tue, 21 Feb 2006 16:54:41 -0500 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.12.11/8.13.3) with ESMTP id k1LLsfUx023355 for ; Tue, 21 Feb 2006 16:54:41 -0500 Received: from [127.0.0.1] (IBM-IKEJ04B1IMA.usca.ibm.com [9.72.133.52]) by d01av03.pok.ibm.com (8.12.11/8.12.11) with ESMTP id k1LLsevw023190 for ; Tue, 21 Feb 2006 16:54:41 -0500 Message-ID: <43FB8C1B.3030402@sbcglobal.net> Date: Tue, 21 Feb 2006 13:54:35 -0800 From: Mike Matrigali Reply-To: mikem_app@sbcglobal.net User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: en-us, en MIME-Version: 1.0 To: derby-dev@db.apache.org Subject: Re: Performance regressions References: <43F4DC0D.6050908@sbcglobal.net> <20060217.161043.109897578.Olav.Sandstaa@sun.com> <43F6012C.9070004@sbcglobal.net> <20060221.222335.125037857.Olav.Sandstaa@sun.com> In-Reply-To: <20060221.222335.125037857.Olav.Sandstaa@sun.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Olav.Sandstaa wrote: > Mike Matrigali wrote: > >>ok, I was hoping that for single user testing it wouldn't >>be a big change. The single user commit per update is >>a problem when comparing derby to other db's which don't >>do real transaction guarantees. It would be great if >>someone reading the derby web site would pick the 1000 >>row per commit single user case to look at first. > > > I agree that for the single user testing it should not be a big change. I > might give it a try and see what results I get. > > >>I just looked at the insert case, and on the following >>page it looks to me like the single user case is taking >>about 6% user time and 2% system time. Am I reading >>the %cpu graph correctly? From the description >>I think this is a 2 processor machine. With 2 processors >>will it be possible to register 200% of cpu or just 100% >>of cpu (I have seen both possibilities on multiprocessor >>machines depending on the tool). > > > You are right about the interpretation of the CPU graphs, the second CPU graph > shows the amount of CPU that the java process (client code and Derby embedded) > uses in user and system time. It is a 2 CPU machine, and in CPU scale goes to > 100%. > > What surprices me a bit when looking at the CPU graph is that in the single > user case even with the write cache on the disks enabled we are only able > utilize about 6-7 percent of the CPU. I will look into it, but I guess it is > the disk where the log is written that limits the throughput. Yes these numbers look exactly like what I would expect from a log disk that is doing "real" sync per commit on a test that does a single row per commit. Usually for insert tests the db cache does a pretty good job, so the only real I/O load is the log disk (this is data specific as one can pick a large data size with indexes and careful worst case data distribution of insert data that forces a database I/O per insert). Real thoughput increases an order of magnitude when inserts are batched in my experience if the log disk is doing "real" syncs. It is of course hardware/OS specific, but usually the log writes are so clustered that write cache is a big win in this case, at least that is what we see on windows. > > ..olav > > > >>Olav Sandstaa wrote: >> >>>Mike Matrigali wrote: >>> >>> >>>>Thanks for the info, anything is better than nothing. >>>>Any chance to measure something like 1000 records per commit. >>>>With one record per commit for the update operations you are >>>>not really measuring the work to do the operation just the >>>>overhead of commit -- at least for the single user case -- >>>>assuming your machine is set up to let derby do real disk >>>>syncs (no write cache enabled). >>> >>> >>>The write cache on the disks are enabled in order make this test CPU >>>bound also for insert, update and delete load instead of disk bound. I >>>agree that only having one insert/update/delete operation per >>>transaction/commit we include a lot of overhead for the commit. The >>>intention is not to measure throughput, but to identify regressions >>>and even if the commit takes 50 percent (just guessing) of the CPU >>>cost/work of doing an update transaction it should still be possible to >>>identify if there are changes in the update operation itself that >>>influence on the CPU usage/throughput. >>> >>>Unfortunately I will have to make major changes to the test client if >>>it should do 1000 updates per commit. All clients work on the same >>>table and perform the operation on a random record. With multiple >>>updates per transaction it would lead to a lot of deadlocks. I think >>>it would be better to write a new load client than to try to tweek the >>>one I run right now. >>> >>>I am also running some tests where the write cache on the disks are >>>disabled (as it should be), but I have not included the results on >>>the web page yet (mostly due to much higher variation in the test >>>results). >>> >>>..olav >>> >>> >>> >> > >