From owner-freebsd-bugs@FreeBSD.ORG Wed Jan 21 14:20:16 2004 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id ED41016A4CF for ; Wed, 21 Jan 2004 14:20:15 -0800 (PST) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9EB2643D3F for ; Wed, 21 Jan 2004 14:20:10 -0800 (PST) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) i0LMKAFR058970 for ; Wed, 21 Jan 2004 14:20:10 -0800 (PST) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.10/8.12.10/Submit) id i0LMKAaJ058969; Wed, 21 Jan 2004 14:20:10 -0800 (PST) (envelope-from gnats) Resent-Date: Wed, 21 Jan 2004 14:20:10 -0800 (PST) Resent-Message-Id: <200401212220.i0LMKAaJ058969@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Radim Kolar Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D058716A4CF for ; Wed, 21 Jan 2004 14:18:48 -0800 (PST) Received: from mail.tiscali.cz (stateless3.tiscali.cz [213.235.135.72]) by mx1.FreeBSD.org (Postfix) with ESMTP id B736643D2D for ; Wed, 21 Jan 2004 14:18:47 -0800 (PST) (envelope-from hsn@netmag.cz) Received: from asura.bsd (212.90.236.232) by mail.tiscali.cz (6.7.018) id 3FB9693501075949 for FreeBSD-gnats-submit@freebsd.org; Wed, 21 Jan 2004 23:18:46 +0100 Received: from hsn by asura.bsd with local (Exim 4.24 #4 (Debian)) id 1AjPRc-0000PN-1v for ; Wed, 21 Jan 2004 21:59:24 +0100 Message-Id: Date: Wed, 21 Jan 2004 21:59:24 +0100 From: Radim Kolar To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Subject: kern/61691: very bad performance of realloc() X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Radim Kolar List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jan 2004 22:20:16 -0000 >Number: 61691 >Category: kern >Synopsis: very bad performance of realloc() >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Jan 21 14:20:10 PST 2004 >Closed-Date: >Last-Modified: >Originator: Radim Kolar >Release: FreeBSD 5.2-RELEASE i386 >Organization: Sanatana Dharma >Environment: System: FreeBSD asura.bsd 5.2-RELEASE FreeBSD 5.2-RELEASE #0: Thu Jan 15 18:35:03 CET 2004 root@asura.bsd:/usr/obj/usr/src/sys/GENERIC i386 >Description: Prob 1: Current implementation of realloc(3) is slow, it looks like it copies data on reallocation even when it is not needed. This causes that programs which are using more realloc calls runs very slowly. I think that default malloc flag do not includes 'R', so it should run very fast. Prob 2: Second problem is if you reallocate to more than 18 MB of memory, malloc eats about 3 times more memory from system, than needed for allocation. Maybe this have something to do with possible exhausting malloc cache size (default 16 pages). I have used default malloc flags, using madvice has zero effect. >How-To-Repeat: I have wrote a small testing program. You can get it from http://home.worldonline.cz/~cz210552/forkbomb.html prob1: run it ./forkbomb -m -l 64 under FreeBSD and Linux/gnulibc 2.3.2. prob2: run it ./forkbomb -m -l 20, see top(1) how many memory is allocated (61MB) run it ./forkbomb -m -l 16, looks okay (except slowness) (17.7MB) >Fix: Port glibc2.3 memory allocation alg. to freebsd libc. >Release-Note: >Audit-Trail: >Unformatted: