From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gernot Hillier Subject: Re: unexpected sync delays in dpkg for small pre-allocated files on ext4 Date: Thu, 2 Jun 2016 18:23:42 +0200 Message-ID: <57505D8E.6080306@siemens.com> References: <57448A5D.4050805@siemens.com> <20160524231328.GB387@thunk.org> <574BF988.5050202@siemens.com> <20160531002152.GQ26977@dastard> <574EAE69.5040003@siemens.com> <574EE05A.9070302@siemens.com> <20160601141218.GE5357@thunk.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050406060309090600050804" To: "Theodore Ts'o" , Dave Chinner , linux-scsi@vger.kernel.org, MPT-FusionLinux.pdl@broadcom.com, linux-ext4@vger.kernel.org, sathya.prakash@broadcom.com, chaitra.basappa@broadcom.com, suganath-prabu.subramani@broadcom.com Return-path: Received: from lizzard.sbs.de ([194.138.37.39]:51633 "EHLO lizzard.sbs.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751360AbcFBQXs (ORCPT ); Thu, 2 Jun 2016 12:23:48 -0400 In-Reply-To: <20160601141218.GE5357@thunk.org> Sender: linux-ext4-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------050406060309090600050804 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit On 01.06.2016 16:12, Theodore Ts'o wrote: > On Wed, Jun 01, 2016 at 03:17:14PM +0200, Gernot Hillier wrote: >> I repeated the discussed tests and found comparable results on this machine: >> >> - 3 seconds dpkg install time on ext3 vs. 80 seconds for ext4 >> on same partition for same package >> - 40 ms for fallocate+write+sync_file_range for writing a few bytes >> - 15 ms for write+fdatasync vs. 45 ms for BLKZEROOUT on raw device >> >> So this seems to be not bound to one specific disk+controller setup, but >> it still can't be a common problem affecting many people as then we >> would see more reports about it... > > OK, so let's try to get common baseline, shall we? Sure! > I'm using as my test package: > > http://debug.mirrors.debian.org/debian-debug/pool/main/e/e2fsprogs/e2fsprogs-dbgsym_1.43-3_amd64.deb [...] > # /usr/bin/time dpkg --force-depends -i /tmp/e2fsprogs-dbgsym_1.43-3_amd64.deb [...] > 0.21user 0.19system 0:00.54elapsed 74%CPU (0avgtext+0avgdata 73188maxresident)k > 0inputs+10168outputs (0major+24935minor)pagefaults 0swaps On machine with Intel SCSI controller and on ext4 root, I see: 0.15user 0.00system 0:00.92elapsed 16%CPU (0avgtext+0avgdata 14144maxresident)k 0inputs+0outputs (0major+5447minor)pagefaults 0swaps Installing to some ext3 partition: 0.14user 0.01system 0:00.56elapsed 26%CPU (0avgtext+0avgdata 14092maxresident)k 0inputs+0outputs (0major+5431minor)pagefaults 0swaps This doesn't really advertise the issue as it only installs a small number of files - yet, I still see a reproducible factor of 1.5-2 for total elapsed time between ext3 and ext4... > Something else would be useful is to make sure /tmp is a tmpfs mounted > file system (so you don't get any I/O's caused by /tmp), and then do: Ok. > # dpkg --purge e2fsprogs-dbgsym > # btrace /dev/sda3 > /tmp/btrace.out & > # /usr/bin/time dpkg --force-depends -i /tmp/e2fsprogs-dbgsym_1.43-3_amd64.deb > # kill %btrace Please find btrace.out.bz2 attached. HTH... Please note that I'm offline for the next couple of days, so there will be some delay in my answers! -- Gernot Hillier Siemens AG, Corporate Technology Corporate Competence Center Embedded Linux --------------050406060309090600050804 Content-Type: application/x-bzip; name="btrace.out.bz2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="btrace.out.bz2" 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 DNgyDYmjk1McTU5eHezRlc9SkIp7q2UScjud42uXG1pc3xojkUKRQB2ytysZY5bRkadYoWSa 5tPmHKn1EEYQN5XdycXRTfXyTtx0pSVAEWlt972ViZLY7YhgyqhbB2b318k63hiVgPTvVYIR gsHZ0zDNDbiVw6ZqCRIN1DKd3eoPto0moxb2EuzM493eqWZ2s7vffrvx3u+T8e2r5/nWgo1A E5W3IRH9j+z/k/vf4P7qSSSSSSSSSSSSSSSSSSSSSSSX8n9w+/eP3fu/a4EREAKgv1EpzX9S kYoqXf64GYNFfiEfe3VdxLpG7NlDE0XkuEkwlEvbIrl2tnJR95erIG+WdmtPuSNtN7a6+POY 8yoByRJg05THIYIYwd5VQVRDZjhNZFzfDhMmwtmdObhDXY67dM6h2m2apuuW6zm3Pc0xu8Fe 9N1Mo9dhdNUJFTU5enE0IqMcZDyVZCyimcxSq+Zdt0ADgAA+0BVU9KcAECAsBfBAKjCSIAee AWYCwFwFilAsBYCxRgLAWAsAICK7FAKVCgWKQAQICwFgqQFoUfpAPqn1fV9X1azM5yMznM/i skkkkkkkkkkkkkkkkkkkkkc1rWc6mrJI5rWs51JrWtZzqaskkkkkkkjmtaznU1ZJHNa1nOpq ySSSSSSSSRzWtZzqaskjmtaznU1ZJJJJJJJJI5rWs51NWSRzWtZzqaskkkkkkkkkkkkkkkkk kkkkkkkkkkkkkkkkkkkkkkkkkkjmtaznU1ZJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ HNa1nOpqySOa1rOdTVkkkkkkkkc1rWc6mrJJJJJJJJJHJLrWs61JJJJJJJJJJI5nOc51NWSS SSRzWtZzqaskjmtaznU1ZJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJI5rWs51 NWSRzWtZzqaskkkkkkkkkkkkkkkkkkc1rWc6mrJI5rWs51NWSSSSSSSSSOa1rOdTVkkc1rWc 6mrJJJJJJJJJHNZ1nOpqySOazrOdTVkkkkkkkkc1nWc6mrJJJJJJJI5JdZ1nWpJJJJJJJJJJ JJMyZlU20kkkkkkkkkkkkkkkkkkkkkpSSSSSSSSV3aSlJJJJJJJJXdpKUkld2kkkkkkkkkkk kkkkkpSSV3aSSSSSSSSS/2fy4gCBA/Z/0/X9v7p/i/n/+6jIMfwGbl3AZZhvi2vU3N656RJV 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 IA== --------------050406060309090600050804--