From nobody Mon Jul 5 19:31:26 2021 X-Original-To: freebsd-hackers@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 7AD007CB036 for ; Mon, 5 Jul 2021 19:31:29 +0000 (UTC) (envelope-from gusev.vitaliy@gmail.com) Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4GJbQn2pvrz3h3D; Mon, 5 Jul 2021 19:31:29 +0000 (UTC) (envelope-from gusev.vitaliy@gmail.com) Received: by mail-lf1-x132.google.com with SMTP id t17so34257711lfq.0; Mon, 05 Jul 2021 12:31:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=/XUINDp8zFuPXvJ4NqjX12lB8J6cqXRAyM+nuDlB5t0=; b=HcbrTVxGWnb9/zG0LimeR+Oh+EPXAwEehFHgQrXu754ZRcuAyS5KmzBIJxKfNb0RBj skz6/PoUXTV2gsqn9qr16cpyVCSQ2blCRDerTGsvJyAFpu+s1m/Yudd2fiG1pV1X38bo pWq9gajqRRc6K8yYqigDKyijFwinZP9HGJdnjH/MM1u68Jj5S3SXkm3VMvcbzJJW+pq7 F4garGPfmZqv5iILT0Dyv588zYqWF5sumgMLh6/3u5kjviphEkk5gz++RFdRMHSY5dhA ecpyMByalbceQjtcmAwV6/oMr5b1oZ/H6y+HvX3KcBTtY8ZX+OQoMKr7Pz13b0qt+32Q hxkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=/XUINDp8zFuPXvJ4NqjX12lB8J6cqXRAyM+nuDlB5t0=; b=trM4X5+kY6Tg8Qxg0aMsKh1gIhtobXjV6uCEcGHTkaTnT+F3unlLrCFgDoOudcEqj5 kYoBv6af0pFCrfsyEnlq8al/V4yZXq7HVbojXxm8dMOKoFzcXMhIe+Nhnuckzcigz8qT SeK39ZcxBFyw+6luxfRUjjjnRCwPCcooHkd4YDF+ypyygrBpiQDAAGJnRd7jOMnqB0wH pl/+/2a5ll8sfUQ/D6gRQociN54f85IQFxmb1lhCnGf3C5/+SVBrDv4fjLSawALWylHe 2K/HOMmXix4uPmEZGGiRzXbJOaz2atATcQCtU3ZeMqym7nYFE8x+fXuXYErdqolX5UCI GRIg== X-Gm-Message-State: AOAM530j/rweTKrbxIRTk8toxS126gJ6NO8B3yLlYmNXnHqzAKGsyjvy KmmVppkyA8Eti4S/GKU4Aig= X-Google-Smtp-Source: ABdhPJy7hAuPwTsARI2x/7PQQd64+B4evLkner610ne2CjmMP5xW6SJeC2G9cwIL3reHxDWiEX9NWw== X-Received: by 2002:a05:6512:b26:: with SMTP id w38mr12182517lfu.227.1625513488071; Mon, 05 Jul 2021 12:31:28 -0700 (PDT) Received: from [10.42.0.5] ([188.187.60.230]) by smtp.gmail.com with ESMTPSA id a28sm1260825lfm.240.2021.07.05.12.31.27 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 05 Jul 2021 12:31:27 -0700 (PDT) From: Vitaliy Gusev Message-Id: <59F26FB5-3A88-42C5-816F-B877977CBA6B@gmail.com> Content-Type: multipart/alternative; boundary="Apple-Mail=_9276BB31-643D-47F6-84E2-082A874DDA5D" List-Id: Technical discussions relating to FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-hackers List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-hackers@freebsd.org Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.7\)) Subject: Re: madvise(MADV_FREE) doesn't work in some cases? Date: Mon, 5 Jul 2021 22:31:26 +0300 In-Reply-To: <57BCE463-6200-4F83-A321-2F0444E7F063@gmail.com> Cc: freebsd-hackers@freebsd.org, Mark Johnston To: Konstantin Belousov References: <0A95973D-254A-4574-8DC7-9F515F60B873@gmail.com> <57BCE463-6200-4F83-A321-2F0444E7F063@gmail.com> X-Mailer: Apple Mail (2.3608.120.23.2.7) X-Rspamd-Queue-Id: 4GJbQn2pvrz3h3D X-Spamd-Bar: ---- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-4.00 / 15.00]; TAGGED_FROM(0.00)[]; REPLY(-4.00)[] X-ThisMailContainsUnwantedMimeParts: Y --Apple-Mail=_9276BB31-643D-47F6-84E2-082A874DDA5D Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Further investigation shown that if use MADV_DONTNEED in simple mmap = test program and run it twice (second after the first finishes = madvise()), then memory is not freed at all and first instance is = killed. If change MADV_DONTNEED flag with MADV_FREE, then memory is freed. Code is: #include #include #include #include #include #include #include int main(int argc, char *argv[]) { size_t len =3D (size_t)(argc > 1 ? atoi(argv[1]) : 1024) * 1024 = * 1024; uint8_t *ptr, *end; uint8_t *p; int pagesz =3D (1<<12); ptr =3D (uint8_t *)mmap(NULL, len, PROT_WRITE | PROT_READ, = MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); if (ptr =3D=3D MAP_FAILED) err(1, "cannot mmap"); end =3D ptr + len; p =3D ptr; while (p < end) { *(uint64_t *)p =3D 1; p +=3D pagesz; } sleep(1); printf("madvise\n"); p =3D ptr; while (p < end) { int error; error =3D madvise(p, pagesz, MADV_DONTNEED); if (error) { err(1, "cannot madvise"); } p +=3D pagesz; } printf("press Enter to exit\n"); getchar(); } --Apple-Mail=_9276BB31-643D-47F6-84E2-082A874DDA5D--