Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1779870yba; Fri, 10 May 2019 00:33:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqzGm/kUbV3omcekIfne/b0G6lNAK7zrNyVMKsGO66wyWJF7qB/TVHITUPsjG9qUqqAcZbqH X-Received: by 2002:a63:2cc9:: with SMTP id s192mr11853736pgs.24.1557473624735; Fri, 10 May 2019 00:33:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557473624; cv=none; d=google.com; s=arc-20160816; b=U3YoQZObD48GE68MZw3QG5f6li2+Y5zHT0rC5x5xo6QGI+bmcd9uduF8EpLtL9IOaU pJoPtohKYQBcTt3tt8MyPH6gjUu4b+FUBH/yNtQA2x0NvEVMRou4IV11EqLJEXsdqbl9 dfqZIP+ygUwHQR9eyo/GQ1qa6dVQUSd2YgtGQozx+OKNMN18AnBIIbjE+eMeZeIPZZrI 4keoiqEqhT0aYFCEdz6m3D0GdIT0zJlM1K3jXvc4HhAVZnFpkd2ruFTVggq33P44xsjA d5Rj0cWkLrZ/Fo4A6uoMVbrAGcj7W1pHG9ZFcQ0ox0Uziww2x8A6OCLG4MKnt1XeLPWB WaWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=qkp3uN3JmIP+V4STFBMw4M1itzMyk7qqDLAq1F6TTQI=; b=iwFGvWqgZ596AW/LGai0za1JOsAqDcUuAgvopQQkVL6Fn03pwYhShJ3L2GPYIbaZSm IwQeiQBH1iugRivUsHhZywrsFmLWvNaDwO9iwV2VK86wCqy9oO9ZNzE+6uFyxJpAfhEf t3+fRFID0ZE3NE2QWjdY4twdgAIR1Z9wng4Dq6PknsvXSoHa6RaZbkbs/O0EOyWc1BWy PXMmLt5ypFZ2pjeCkqpaMqDY5XW/sfzBLka4THzPojAif81zfkL54AOLtWjINtjnrqQm J0gyCv82oLJ//Wzf98Z9cHCv0E4vqUSKiWGF8mY6KQtrnWD80xz+rLPOez3L+OneOMyM cFoA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l6si1427210pgp.382.2019.05.10.00.33.27; Fri, 10 May 2019 00:33:44 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727119AbfEJHV3 (ORCPT + 99 others); Fri, 10 May 2019 03:21:29 -0400 Received: from mail-qk1-f195.google.com ([209.85.222.195]:37010 "EHLO mail-qk1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726855AbfEJHV2 (ORCPT ); Fri, 10 May 2019 03:21:28 -0400 Received: by mail-qk1-f195.google.com with SMTP id c1so1749589qkk.4 for ; Fri, 10 May 2019 00:21:28 -0700 (PDT) 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:mime-version :content-transfer-encoding; bh=qkp3uN3JmIP+V4STFBMw4M1itzMyk7qqDLAq1F6TTQI=; b=GjkLfSJVj2Ed4Dth/vTbrupIdXHvfVxVbpZsi+q6L2SQP0bd/fR4RkKnU7bYDUQLHL tYK+nwMHpCVEKVGcceqizz11yWTfW7DF2LgxylD8NoocJ6oDZQBuO1mIP5lRYeVgT6Fk jyNluntZ+PPzKYS57wszdjggejYD6RmlGDe0B2mlzsqCzGQf4BHS7sO+yndRjMp8MgKt avLes4GhWwQ4W4lw//9hkuLm3YIv5c+lpTFDsdk1z+BTWFPgleqCDKRA8jFRbMOD+xtH r8seWpVOTmB2h6CGyWvH+zDZCgo+pWnG/lZbDnqJi319bzZihhPI3sUfVxWFMlMlxv0y pGXw== X-Gm-Message-State: APjAAAUfpQG83saWBVa37vPBW+pDqKavIvHHiWI0Ia9fHkOeSiG09qyD IznFLpfvZjqmRVh63U9ZS/cVH9aeqBT1ZA== X-Received: by 2002:a37:a216:: with SMTP id l22mr7397641qke.282.1557472887500; Fri, 10 May 2019 00:21:27 -0700 (PDT) Received: from localhost (nat-pool-brq-t.redhat.com. [213.175.37.10]) by smtp.gmail.com with ESMTPSA id t57sm521405qtt.7.2019.05.10.00.21.26 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 10 May 2019 00:21:26 -0700 (PDT) From: Oleksandr Natalenko To: linux-kernel@vger.kernel.org Cc: Kirill Tkhai , Vlastimil Babka , Michal Hocko , Matthew Wilcox , Pavel Tatashin , Timofey Titovets , Aaron Tomlin , linux-mm@kvack.org Subject: [PATCH RFC 0/4] mm/ksm: add option to automerge VMAs Date: Fri, 10 May 2019 09:21:21 +0200 Message-Id: <20190510072125.18059-1-oleksandr@redhat.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org By default, 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. Instead, lets implement a so-called "always" mode, which allows marking VMAs as mergeable on do_anonymous_page() call automatically. The submission introduces a new sysctl knob as well as kernel cmdline option to control which mode to use. The default mode is to maintain old (madvise-based) behaviour. Due to security concerns, this submission also introduces VM_UNMERGEABLE vmaflag for apps to explicitly opt out of automerging. Because of adding a new vmaflag, the whole work is available for 64-bit architectures only. This patchset is based on earlier Timofey's submission [1], but it doesn't use dedicated kthread to walk through the list of tasks/VMAs. For my laptop it saves up to 300 MiB of RAM for usual workflow (browser, terminal, player, chats etc). Timofey's submission also mentions containerised workload that benefits from automerging too. Open questions: * once "always" mode is activated, should re-scan of all VMAs be triggered to find eligible ones for automerging? Thanks. [1] https://lore.kernel.org/patchwork/patch/1012142/ Oleksandr Natalenko (4): mm/ksm: introduce ksm_enter() helper mm/ksm: introduce VM_UNMERGEABLE mm/ksm: allow anonymous memory automerging mm/ksm: add automerging documentation .../admin-guide/kernel-parameters.txt | 7 + Documentation/admin-guide/mm/ksm.rst | 7 + fs/proc/task_mmu.c | 3 + include/linux/ksm.h | 5 + include/linux/mm.h | 6 + include/trace/events/mmflags.h | 7 + mm/ksm.c | 142 ++++++++++++++---- mm/memory.c | 6 + 8 files changed, 157 insertions(+), 26 deletions(-) -- 2.21.0