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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id BB78AC4332F for ; Wed, 12 Oct 2022 08:15:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4BE506B0071; Wed, 12 Oct 2022 04:15:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 46E11900002; Wed, 12 Oct 2022 04:15:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3370A6B0074; Wed, 12 Oct 2022 04:15:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 21E2D6B0071 for ; Wed, 12 Oct 2022 04:15:55 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id E7DDC141241 for ; Wed, 12 Oct 2022 08:15:54 +0000 (UTC) X-FDA: 80011589028.25.5D33641 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) by imf11.hostedemail.com (Postfix) with ESMTP id 7D74D40020 for ; Wed, 12 Oct 2022 08:15:53 +0000 (UTC) Received: by mail-pj1-f48.google.com with SMTP id h12so8915072pjk.0 for ; Wed, 12 Oct 2022 01:15:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=ofda32LPZu7lWSl20UKRGtfT8GE9G8KpQ50I/r7L2UI=; b=50kRz2RseqZqhVkCNVfryDTOcVDlb78vcfTZRWtKliNsYLIpHMkQVFWQiUkUk8+VfL UJkpVl/VO7qi0d7YNYY49uYm+RPbsEu4AJk2UCmciWYHQ+8bLYUVecTxX98wp8REPF0h muSZEhT70wNOWxYBCcFReMkfQBmqp5e0KFWlRoVPvDKUVEUIpuhHD7zSgv69v5bawY9u WQCGPUyta1n53toSYZufxWQCicBF4MSkp/aBw0RkR1zvZ9qiA7El7gdSN7Gc1VTCPfqB mcB6MatzXzSVdjgwWN7kJyeGmNRhOa7Uc/48Zz+AdpdH0whV2FJwY8iOXbU9i+Sr8VHX 07HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ofda32LPZu7lWSl20UKRGtfT8GE9G8KpQ50I/r7L2UI=; b=YhxcB2I9/yDd5kSmymXpBeEbq5imWai3VAEcORDPC6fhF6nUP+YN6EIsIxjvW4DYGr KULTIqsJxQWAby2kRkugOLoRd/urZAwA0KJgm2BIbNkBax16NP1HC9y4bXzMLrnNuwJk DsjOML4uT8gIwju6azPMo8K1qBZMVtFtfDQ0xN7K6dkSnbYPGuSYp40A+knfke5MKPll zTe4AFvXggexIvPK6lX8RihpLIvE+18U3HETNy/gJsa2gn2WO1YiGpUcinBWIShI/By9 CRFCrtpPS+vJp9SgK8aWba0hRYQjZhnwqIwwXYtkhbJXWjtRjSMY7zN3Onpwn2Zzbucr BO8A== X-Gm-Message-State: ACrzQf30SfyNHrxJ8trlMXXOPjZoTRvEZ3xPUo4aCbcvTxHcT5giPxxn eV3Wmn5v6gnpXBNBUn0ZZk8dzw== X-Google-Smtp-Source: AMsMyM73y4yvEpl2fqOEISK2r+hxSqUI6/frXGpX7FvzZS+Pautcan6/4Py1TGhC5o/9n0xQj6xRtg== X-Received: by 2002:a17:90b:4c48:b0:20d:5c55:b8a8 with SMTP id np8-20020a17090b4c4800b0020d5c55b8a8mr3793626pjb.207.1665562552127; Wed, 12 Oct 2022 01:15:52 -0700 (PDT) Received: from C02FG34NMD6R.bytedance.net ([139.177.225.254]) by smtp.gmail.com with ESMTPSA id b8-20020a170903228800b0016c9e5f291bsm10211618plh.111.2022.10.12.01.15.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Oct 2022 01:15:51 -0700 (PDT) From: Albert Huang To: songmuchun@bytedance.com Cc: "huangjie.albert" , Mike Kravetz , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH] mm: hugetlb: support get/set_policy for hugetlb_vm_ops Date: Wed, 12 Oct 2022 16:15:25 +0800 Message-Id: <20221012081526.73067-1-huangjie.albert@bytedance.com> X-Mailer: git-send-email 2.37.0 (Apple Git-136) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=50kRz2Rs; spf=pass (imf11.hostedemail.com: domain of huangjie.albert@bytedance.com designates 209.85.216.48 as permitted sender) smtp.mailfrom=huangjie.albert@bytedance.com; dmarc=pass (policy=none) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1665562554; a=rsa-sha256; cv=none; b=cJKx1LPb4lwkBG5UQF8vHubhXuKrzVRN6UUC2ClYVvhXqveR5J7JnSJQsT6WrwWWGLfGfJ EIQW5X2MH/VS4v2C1RNVrj3ajStxRAK3+z2yNSuXMbu9WvzQrYRUBGQJguarI1Sve5DLmK ovnWl4omaDZW3WzRrH+3l2ZRJTLrC9M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1665562554; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=ofda32LPZu7lWSl20UKRGtfT8GE9G8KpQ50I/r7L2UI=; b=mxRE4Rbba2U08rM0XVNgLq1QDmRiXYKys5l30zC0Y/UUGnNJw9p2F3xX+eCfv73Rzkr5Jx TJJ3x41i9IZWMO2elYVkBirc22DrVAz7jLn5dh9uPW2J8tKycrYCoB0cDseGIUP7JNhetk Oi/Q4MCni/jCCUaBnY+Zwy685WYkPiA= X-Rspamd-Queue-Id: 7D74D40020 X-Rspam-User: Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=50kRz2Rs; spf=pass (imf11.hostedemail.com: domain of huangjie.albert@bytedance.com designates 209.85.216.48 as permitted sender) smtp.mailfrom=huangjie.albert@bytedance.com; dmarc=pass (policy=none) header.from=bytedance.com X-Rspamd-Server: rspam04 X-Stat-Signature: bcp6a376xubpy7pyhn61dftqy37gb5e4 X-HE-Tag: 1665562553-464756 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: From: "huangjie.albert" implement these two functions so that we can set the mempolicy to the inode of the hugetlb file. This ensures that the mempolicy of all processes sharing this huge page file is consistent. In some scenarios where huge pages are shared: if we need to limit the memory usage of vm within node0, so I set qemu's mempilciy bind to node0, but if there is a process (such as virtiofsd) shared memory with the vm, in this case. If the page fault is triggered by virtiofsd, the allocated memory may go to node1 which depends on virtiofsd. Signed-off-by: huangjie.albert --- mm/hugetlb.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 0ad53ad98e74..ed7599821655 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -4678,6 +4678,24 @@ static vm_fault_t hugetlb_vm_op_fault(struct vm_fault *vmf) return 0; } +#ifdef CONFIG_NUMA +int hugetlb_vm_op_set_policy(struct vm_area_struct *vma, struct mempolicy *mpol) +{ + struct inode *inode = file_inode(vma->vm_file); + + return mpol_set_shared_policy(&HUGETLBFS_I(inode)->policy, vma, mpol); +} + +struct mempolicy *hugetlb_vm_op_get_policy(struct vm_area_struct *vma, unsigned long addr) +{ + struct inode *inode = file_inode(vma->vm_file); + pgoff_t index; + + index = ((addr - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff; + return mpol_shared_policy_lookup(&HUGETLBFS_I(inode)->policy, index); +} +#endif + /* * When a new function is introduced to vm_operations_struct and added * to hugetlb_vm_ops, please consider adding the function to shm_vm_ops. @@ -4691,6 +4709,10 @@ const struct vm_operations_struct hugetlb_vm_ops = { .close = hugetlb_vm_op_close, .may_split = hugetlb_vm_op_split, .pagesize = hugetlb_vm_op_pagesize, +#ifdef CONFIG_NUMA + .set_policy = hugetlb_vm_op_set_policy, + .get_policy = hugetlb_vm_op_get_policy, +#endif }; static pte_t make_huge_pte(struct vm_area_struct *vma, struct page *page, -- 2.31.1