From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48DCBC33CA4 for ; Sat, 11 Jan 2020 07:43:10 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 0D69E2072E for ; Sat, 11 Jan 2020 07:43:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RiwLzAiA" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0D69E2072E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id A0B928E0006; Sat, 11 Jan 2020 02:43:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9E3198E0001; Sat, 11 Jan 2020 02:43:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 91FD78E0006; Sat, 11 Jan 2020 02:43:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0125.hostedemail.com [216.40.44.125]) by kanga.kvack.org (Postfix) with ESMTP id 799348E0001 for ; Sat, 11 Jan 2020 02:43:09 -0500 (EST) Received: from smtpin21.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with SMTP id 3388A282C for ; Sat, 11 Jan 2020 07:43:09 +0000 (UTC) X-FDA: 76364562498.21.corn69_55a50ef0f8336 X-HE-Tag: corn69_55a50ef0f8336 X-Filterd-Recvd-Size: 5603 Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by imf13.hostedemail.com (Postfix) with ESMTP for ; Sat, 11 Jan 2020 07:43:08 +0000 (UTC) Received: by mail-wr1-f65.google.com with SMTP id c14so3859782wrn.7 for ; Fri, 10 Jan 2020 23:43:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to; bh=7phXSgAkhV7ekY+XxbbLPgZzgDKYvBOEXbRLHHpKIRM=; b=RiwLzAiADjNU/CdyggCMb4mC3tAkhOf/tdXXpjZGd0923CM74Nwwwg4xxLJQrX7c69 DtVyroORkLm4kZI6fWasSzTvLxPTjryytOT7sOfsmMMANDvIHs06tPEd8km9VCIUumuw 88L4s8w7oj5wqKMX7X0dUzmwpgJWfbKc1V8+sdFGKJUfX0lTaLoV8cH809OCNznwxPSm z6f6eBeVAwMG9FJNoSa4N2jNY9TfpM04GTn7jsetbGzdD89Z9SPOljf3wFWN5yh3xlqp P+kbJB/o2kU/OHaSzhPWwAfixETFkGRfgkOyzZ61zC6LhoDAq5jwo6dSMyjkTuhNd1nX hU4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to; bh=7phXSgAkhV7ekY+XxbbLPgZzgDKYvBOEXbRLHHpKIRM=; b=Qudr9wN1DBATdcPs3jmFejGI5HXwS/G5E6S03r9h1ypzhjwyVT9XWqoJlyU0PkayU0 Vy9+rkPqEsD1oPararU9jg3IJlufxsx/iQDrr7+GL0KHvqfCRxIfSY0TvqwJ3Mc3WxaX /3XRsYQ+VSGUcsxqxE/ubP5hLH5XB1/9tjdCatjKbCIFRPYszf5GL6TyhWbtOTOwgTVP O+ZtqTdlxYmp6r9X6Wl+Y/exbhSF2ELbVP8p59qLakSkEJhn7isZwk/Zq4I7vUNtkZnR aiaUzLZkWRHLCux9WnpaBwbnl5FlB/2cHmDqixmGZK20KpEA1pe4WA4IwSvFYTqICAEF SF6g== X-Gm-Message-State: APjAAAUncM/8sp4MI1MsClJ4qA1IdRTTEyKablWu9cgYpOqalNTfl34n 7KDTAXVI+cgi8WgT3K81hZU= X-Google-Smtp-Source: APXvYqyRmODzfldBA8D/NN893xpmrLQXVhwM3VmayHW+WSWW0/eolokZQbHHru134cl6zX8cgpAI7w== X-Received: by 2002:adf:e641:: with SMTP id b1mr7581841wrn.34.1578728587074; Fri, 10 Jan 2020 23:43:07 -0800 (PST) Received: from localhost.localdomain ([2a02:2450:10d2:194d:d1f3:c74b:f29c:a970]) by smtp.gmail.com with ESMTPSA id r68sm5236515wmr.43.2020.01.10.23.43.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jan 2020 23:43:06 -0800 (PST) From: SeongJae Park To: Minchan Kim Cc: Andrew Morton , LKML , linux-mm , linux-api@vger.kernel.org, oleksandr@redhat.com, Suren Baghdasaryan , Tim Murray , Daniel Colascione , Sandeep Patil , Sonny Rao , Brian Geffon , Michal Hocko , Johannes Weiner , Shakeel Butt , John Dias Subject: Re: [PATCH 4/4] mm/madvise: allow KSM hints for remote API Date: Sat, 11 Jan 2020 08:42:59 +0100 Message-Id: <20200111074259.25577-1-sj38.park@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200110213433.94739-5-minchan@kernel.org> (raw) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Fri, 10 Jan 2020 13:34:33 -0800 Minchan Kim wrote: > From: Oleksandr Natalenko > > It all began with the fact that KSM works only on memory that is marked > by madvise(). And the only way to get around that is to either: > > * use LD_PRELOAD; or > * patch the kernel with something like UKSM or PKSM. > > (i skip ptrace can of worms here intentionally) > > To overcome this restriction, lets employ a new remote madvise API. This > can be used by some small userspace helper daemon that will do auto-KSM > job for us. > > I think of two major consumers of remote KSM hints: > > * hosts, that run containers, especially similar ones and especially in > a trusted environment, sharing the same runtime like Node.js; > > * heavy applications, that can be run in multiple instances, not > limited to opensource ones like Firefox, but also those that cannot be > modified since they are binary-only and, maybe, statically linked. > > Speaking of statistics, more numbers can be found in the very first > submission, that is related to this one [1]. For my current setup with > two Firefox instances I get 100 to 200 MiB saved for the second instance > depending on the amount of tabs. > > 1 FF instance with 15 tabs: > > $ echo "$(cat /sys/kernel/mm/ksm/pages_sharing) * 4 / 1024" | bc > 410 > > 2 FF instances, second one has 12 tabs (all the tabs are different): > > $ echo "$(cat /sys/kernel/mm/ksm/pages_sharing) * 4 / 1024" | bc > 592 > > At the very moment I do not have specific numbers for containerised > workload, but those should be comparable in case the containers share > similar/same runtime. > > [1] https://lore.kernel.org/patchwork/patch/1012142/ > > Signed-off-by: Oleksandr Natalenko > Signed-off-by: Minchan Kim Reviewed-by: SeongJae Park > --- > mm/madvise.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/mm/madvise.c b/mm/madvise.c > index eb42b2b7f49b..3aa9aec6bfd9 100644 > --- a/mm/madvise.c > +++ b/mm/madvise.c > @@ -1000,6 +1000,8 @@ process_madvise_behavior_valid(int behavior) > switch (behavior) { > case MADV_COLD: > case MADV_PAGEOUT: > + case MADV_MERGEABLE: > + case MADV_UNMERGEABLE: > return true; > default: > return false; > -- > 2.25.0.rc1.283.g88dfdc4193-goog