From patchwork Tue Apr 23 03:41:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhenwei pi X-Patchwork-Id: 13639273 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 EA665C10F16 for ; Tue, 23 Apr 2024 03:41:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4735A6B0087; Mon, 22 Apr 2024 23:41:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4229E6B0088; Mon, 22 Apr 2024 23:41:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 29C6E6B0089; Mon, 22 Apr 2024 23:41:23 -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 11C726B0087 for ; Mon, 22 Apr 2024 23:41:23 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id C57B71404B0 for ; Tue, 23 Apr 2024 03:41:22 +0000 (UTC) X-FDA: 82039396404.14.D00B8D6 Received: from mail-ot1-f44.google.com (mail-ot1-f44.google.com [209.85.210.44]) by imf06.hostedemail.com (Postfix) with ESMTP id 213CD180010 for ; Tue, 23 Apr 2024 03:41:20 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=BscZvZue; spf=pass (imf06.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.210.44 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713843681; a=rsa-sha256; cv=none; b=Kr5mARXEyshHoSffIFaSJHJ0zsa4a3bBHxoW95PfNmSfxsMhdizy6J5JC4Mfe+whKrovl8 XWSF3D5GlMZ+X7CzcwACT3SL/dKxfPDwHjlXQTlTjeqqhTMsxcApCIdT2r/aPqWRrNEwsl szKxg46OB2M1ZtsHu3T5oIJGUrpe/Ds= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=BscZvZue; spf=pass (imf06.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.210.44 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713843681; 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:in-reply-to:references:references:dkim-signature; bh=KkBGMpzb7Zyfmx1ZstJgk5Op8ktl/5dFs5p8PlYlyX8=; b=nJ+83/SPCaIGM0RQhKIG0dJrbOWeJwBFdMl4XY3+hIhIAC+Rdq48YoOM0GM0mry/REHz9V beNHODdNpSEPzgELA+A5kd2ObLVdlUF7LbZxgpefyXaGtFgl6Nf4ncM6QbgABmcGBIUze4 ciVjwAm63ouJd9vYFaWDXjfy1mXjWsA= Received: by mail-ot1-f44.google.com with SMTP id 46e09a7af769-6eb658ca1ceso3900910a34.2 for ; Mon, 22 Apr 2024 20:41:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1713843680; x=1714448480; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KkBGMpzb7Zyfmx1ZstJgk5Op8ktl/5dFs5p8PlYlyX8=; b=BscZvZueAO1CqTiadI08O3+S6WOfn8QDkf6XvWHi9Aqzb2NKAVCs+dH+/X+ftZDqUu sTE3J7k3YNG3k+8pBLB1tddrmoyZ+3UAg88A0vtQ+/0PC1FHE9VTVBwvGXFqQcxBMoSw mP+YldWFgdrfmdXDiTDM5PyhsgXRCTiUF5oRcygSDO1a56TZPzjlrmrrsNvQdD8AzsZP 772pOJnUu09WInK/TkKbqX1vz8zxQao7J07P54eRx1UHP5hapgrocEGe6scqnDiVAp5t dh2NNVZojLBuDTFX1+Vyiehszr9M9g+j14EeNLVP2veAvvatmbZ7lZ1b7trte9uOa9Rs IXUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713843680; x=1714448480; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KkBGMpzb7Zyfmx1ZstJgk5Op8ktl/5dFs5p8PlYlyX8=; b=oVvr6mC68Vuw0rdjwv3IIWG3SS+rJu3+fzH3QHI/hKT1YO3IZe/9iNAOvkYsiIfXE7 rKS5pxuah63c9oqkOKIsaHWY0oKIl6yY7FCvAxdDLIbGTigVlGcYlgKztWcjLQuq0DPZ bvRYjGEAJaAkvBpCs788NqLesYp4lYGwTgEB9qGiU6MwUjmrtWBfi0lwGrCLs0myjk09 iE265Z1t7izOJNHhlUcGySf1hlQFxG5c38WE7LNWBNOm9awyXYXwvAG3VdBZesr8CMyJ 6Azd7m/a1AvGjPmY2MLJwzw5AHK6irJ291nIPFL9wT+R0n9jK90JwnmFScVCtoJxWFbZ rwRQ== X-Forwarded-Encrypted: i=1; AJvYcCWKDReiEGXyK0gomXQX5TRREz34WTz4bKktaACoZc2G6ZjrKnkkwg839Pip3R97k5H2QDJateotMPTzhBhjwYo0CIY= X-Gm-Message-State: AOJu0Yx4spDcAszgDFe4pULsDSya9FbOPPk6bmhujlVne2s1UCXElBXq DAlnMWoNg8dqbWfp7bj9C+ly/KK+JIUTDhrzq6rIahuckggDMnwpHk78FcDo+hs= X-Google-Smtp-Source: AGHT+IFPWbPsOAgDjqPCg7khKs3ioBh3D8C//sMkXvFal/sejW6ukQN3/LZM7rjAVP3UsOTPrF/iBA== X-Received: by 2002:a05:6830:4392:b0:6ed:686:b43 with SMTP id s18-20020a056830439200b006ed06860b43mr9633062otv.17.1713843680244; Mon, 22 Apr 2024 20:41:20 -0700 (PDT) Received: from libai.bytedance.net ([61.213.176.11]) by smtp.gmail.com with ESMTPSA id b16-20020a63d810000000b005e438fe702dsm8266980pgh.65.2024.04.22.20.41.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 20:41:19 -0700 (PDT) From: zhenwei pi To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, virtualization@lists.linux.dev Cc: mst@redhat.com, david@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, akpm@linux-foundation.org, zhenwei pi Subject: [PATCH v3 1/4] virtio_balloon: separate vm events into a function Date: Tue, 23 Apr 2024 11:41:06 +0800 Message-Id: <20240423034109.1552866-2-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240423034109.1552866-1-pizhenwei@bytedance.com> References: <20240423034109.1552866-1-pizhenwei@bytedance.com> MIME-Version: 1.0 X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 213CD180010 X-Stat-Signature: 9izpawt7ep6znu4amkajztgjy3s1fdo5 X-Rspam-User: X-HE-Tag: 1713843680-589735 X-HE-Meta: U2FsdGVkX1+hrByw0G2OTBlCNj7tHDLwOESskN67CQOw51Wj+ZOHtR1sRpBzsHMurSi/kF64ZpO1XDCT6N8X0eQn5r8YV9F+7bXb/oqir1nZpC1RZsyk+7aj19MKsemGfyZjICYYApqyZqcn0djRAO3h4z9VUhrD8+JEt+OXaVmb9DfrMlwfLIZNXhc0xbpGNg4U5DHPwo0U/mzCv9PxRdVFFhGMglszz73Nd/coNR/H77wolmRl9nZE04I3g20OioZMY2HYhxHsuxr8GcGQacJqG8FziRd3eyUA8eU7MviRUMtj+br5/JOs3zvPJfc+gA7K9rs+DlYOf6Lhm5x/m69acdIWT5e1nl6+s06AiW4fI2fy2hplOpvpF+F0+BxDQmxQKrPfcAYxuLj6ABRa/rQ6awXiNJ4Abmgpjs5PslMjD+wJDFuS+W4ufg8ga3qpewxYdPlobTtRx0JpWtqjDPRqz9yNIZ8mhg2AlyjRQGpU/G3wnyTk7wmIsEQTfob9aJsBlOMkniZTwD5z1Kq7vgtXBxUggPLkQ+YPcFQeqG76EgQttQ7QUm4wQvJtH7S7YSTFganBvIli/eCHJM+4VITY0X2dPjDR+afR6KgmEOZDdKFsaXYl0ZDdjGBkt7E3tcbNvhIKfEYYmBFn+abOwSBELUsrZT+rTfbHXVokcsiMFDvBJko7FDOcE4CmAStHi2PoPCI2KmE0PEHalHk3JcaD/Z9gjKuOio/bSIK/kVKrqjkeXwcg891IIRnKyqtBTbMlvoeGV83D0G06/U6Pu3qeEkGy9SLjYt6ZF6g6xraFAPkultvfmwK/ZWloYz2aE+4Ft6ipDnNHTCdjd2te26rWzZwHuuoWfoLnJPOAzC7VECpo3jXApi/nTg3tbu7XMrzY7vV0RuWW5p9OPlwLZmCGuMkFJBTfvkfWeoBpqaC8fJUSgNi6+4Cir6Gu5bfmxGOxgXPI50MfxAlLdBG mo0ViG8j 4o1G0suJljPQdO4CsuIw+DyKTIw3zh3psORPLlmJY+vhQugTjEXQAfCFmEPiQQyxOFH+P9lda/e6Row8eMXZVI82e2kv66YZIF1y3QeCtKJCd0m1vTrRnVH6p81etPtK5BMr8uUrxB3Jfk/HMGiEPqbYMdqcLRdq9ULNkx/TDRBpcSis= 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: List-Subscribe: List-Unsubscribe: All the VM events related statistics have dependence on 'CONFIG_VM_EVENT_COUNTERS', separate these events into a function to make code clean. Then we can remove 'CONFIG_VM_EVENT_COUNTERS' from 'update_balloon_stats'. Signed-off-by: zhenwei pi Reviewed-by: David Hildenbrand --- drivers/virtio/virtio_balloon.c | 43 ++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 1f5b3dd31fcf..1710e3098ecd 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -316,34 +316,49 @@ static inline void update_stat(struct virtio_balloon *vb, int idx, #define pages_to_bytes(x) ((u64)(x) << PAGE_SHIFT) -static unsigned int update_balloon_stats(struct virtio_balloon *vb) +#ifdef CONFIG_VM_EVENT_COUNTERS +/* Return the number of entries filled by vm events */ +static inline unsigned int update_balloon_vm_stats(struct virtio_balloon *vb) { unsigned long events[NR_VM_EVENT_ITEMS]; - struct sysinfo i; unsigned int idx = 0; - long available; - unsigned long caches; all_vm_events(events); - si_meminfo(&i); - - available = si_mem_available(); - caches = global_node_page_state(NR_FILE_PAGES); - -#ifdef CONFIG_VM_EVENT_COUNTERS update_stat(vb, idx++, VIRTIO_BALLOON_S_SWAP_IN, - pages_to_bytes(events[PSWPIN])); + pages_to_bytes(events[PSWPIN])); update_stat(vb, idx++, VIRTIO_BALLOON_S_SWAP_OUT, - pages_to_bytes(events[PSWPOUT])); + pages_to_bytes(events[PSWPOUT])); update_stat(vb, idx++, VIRTIO_BALLOON_S_MAJFLT, events[PGMAJFAULT]); update_stat(vb, idx++, VIRTIO_BALLOON_S_MINFLT, events[PGFAULT]); + #ifdef CONFIG_HUGETLB_PAGE update_stat(vb, idx++, VIRTIO_BALLOON_S_HTLB_PGALLOC, events[HTLB_BUDDY_PGALLOC]); update_stat(vb, idx++, VIRTIO_BALLOON_S_HTLB_PGFAIL, events[HTLB_BUDDY_PGALLOC_FAIL]); -#endif -#endif +#endif /* CONFIG_HUGETLB_PAGE */ + + return idx; +} +#else /* CONFIG_VM_EVENT_COUNTERS */ +static inline unsigned int update_balloon_vm_stats(struct virtio_balloon *vb) +{ + return 0; +} +#endif /* CONFIG_VM_EVENT_COUNTERS */ + +static unsigned int update_balloon_stats(struct virtio_balloon *vb) +{ + struct sysinfo i; + unsigned int idx; + long available; + unsigned long caches; + + idx = update_balloon_vm_stats(vb); + + si_meminfo(&i); + available = si_mem_available(); + caches = global_node_page_state(NR_FILE_PAGES); update_stat(vb, idx++, VIRTIO_BALLOON_S_MEMFREE, pages_to_bytes(i.freeram)); update_stat(vb, idx++, VIRTIO_BALLOON_S_MEMTOT, From patchwork Tue Apr 23 03:41:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhenwei pi X-Patchwork-Id: 13639274 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 99143C4345F for ; Tue, 23 Apr 2024 03:41:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 277256B008A; Mon, 22 Apr 2024 23:41:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 226CC6B008C; Mon, 22 Apr 2024 23:41:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0C8A76B0092; Mon, 22 Apr 2024 23:41:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id DBC7E6B008A for ; Mon, 22 Apr 2024 23:41:26 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 8CCA3A0C51 for ; Tue, 23 Apr 2024 03:41:26 +0000 (UTC) X-FDA: 82039396572.05.A5686CC Received: from mail-il1-f179.google.com (mail-il1-f179.google.com [209.85.166.179]) by imf02.hostedemail.com (Postfix) with ESMTP id C262980002 for ; Tue, 23 Apr 2024 03:41:24 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=AjdzroZF; spf=pass (imf02.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.166.179 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713843684; a=rsa-sha256; cv=none; b=kGTi/paky+Gb0lAFNUZ24wVgHxZPD3cIT5t3tDtq06ZMkVul9tcG63Xw37jKH7D21hPv9O 8IALqurkFwOAqfdFdiB+pWB9rMwc9vgUU+Pw8bccIdtQ+wFO3pxepKivZJHko+aSdhm7CE CoytYQZAy30Q85vxLY0NVNwrHC1BozI= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=AjdzroZF; spf=pass (imf02.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.166.179 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713843684; 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:in-reply-to:references:references:dkim-signature; bh=Zk8sHHlFZ5yMas0e7wt0QxJKNRueI84ut/8EKgUk1gU=; b=68O8+esFUfe8v+5uULWGFyD5HhdWqsSAqZUM2j89LVLRccPTY+LZ6PPe5OAAiIBCFpQxcq TE306Q1nqlVCKUf6ULRE+eo5ijzaqru/jSw/0OT6bR5YKGroYnMiQ6Fx/FteO+Ch32fBMm LaAKNFZBGFoUvbNQhQaZcrL3TCtWmuk= Received: by mail-il1-f179.google.com with SMTP id e9e14a558f8ab-36b309dd33bso20533905ab.1 for ; Mon, 22 Apr 2024 20:41:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1713843683; x=1714448483; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Zk8sHHlFZ5yMas0e7wt0QxJKNRueI84ut/8EKgUk1gU=; b=AjdzroZFh02q7/ND8poQcaxDNtSVjUqiErffPJDYDFSl8VHwjEBy3diNR0S6/Xt0uc zGgdawZ3158h6MkQNjb/mDKiTY1WusDCzGweUQYgdY9oYsEIuZMW5Sw4rkgWsBv3Na71 k7hv1jqk9sKjg69FYVarLFJ5xiXWCearCNvG69mf4Ds9qu3p4DZboX3fryDSo5SOhn77 7s/N6SwMngroQJe9LMfYx2VDTpR7KyonDBcvEbCfzFo1ecXiDGukdjPznIhzDVrzsMTF IFKxVgcQnemI+aHl2IBv1q6mnzIzmwV0Ez4/LHohipndQ/PJ0LyIh6+Vz5OebllqB9v2 rMYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713843683; x=1714448483; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Zk8sHHlFZ5yMas0e7wt0QxJKNRueI84ut/8EKgUk1gU=; b=T02X37ajZDpdxFTtk9AAc0L71bY2X5JDxmf1Y3xfGh+oWAOV15hFbEcou3YyBLRfnv 8wF11wYzTRbmxnblCibPeYMD9eUGSJskMptc/1IoWox4sG/AfRO9UpP5kZ4WfVnkkHES ZefTiyjwj4NSl/o736QbGHd/+k3xwg3O+lzwgzwUqCAqQJLbZ+qa+9CCEPp0bl19pJuc cAISbIp6i+9CIml1i5knIdbDtV9iW/yyPKpWg4PxHOmilPwLonBC6l3M0lCbNmvsyK/j MmGHkobleEFy+PQFEg0F48E5TqI7L5mX34VAGQOcd7/uSDVugC2x77oOR4mZzETzQYGV meOQ== X-Forwarded-Encrypted: i=1; AJvYcCVQbWwgUvi1B305ffRZ1hhwZ4oCH0MiKhRwC/0CDyS6Y+Bg03EeKfPeMxdXWsT1bbojq7A/g9VNbtKphyO+YdPwJyM= X-Gm-Message-State: AOJu0YxaBX87bksdVhOtgE5AASDsbPlUWPqSJqrI+lP00Obvt14vLgdz 2BWDPlIY49R7HwphAAWPOKCX7BvnCnqCaUMb4AMIDWl7zhssHHIO+lJtjl18m2I= X-Google-Smtp-Source: AGHT+IGK5wXI7LkTDRk5nDef0rXFGK962Vq/MSDSyQakfWBHz0PVFwhhTJdfJ5JmoY+i8cpaYiedhg== X-Received: by 2002:a92:c267:0:b0:36a:fe86:5fcc with SMTP id h7-20020a92c267000000b0036afe865fccmr16168240ild.0.1713843683557; Mon, 22 Apr 2024 20:41:23 -0700 (PDT) Received: from libai.bytedance.net ([61.213.176.11]) by smtp.gmail.com with ESMTPSA id b16-20020a63d810000000b005e438fe702dsm8266980pgh.65.2024.04.22.20.41.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 20:41:23 -0700 (PDT) From: zhenwei pi To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, virtualization@lists.linux.dev Cc: mst@redhat.com, david@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, akpm@linux-foundation.org, zhenwei pi Subject: [PATCH v3 2/4] virtio_balloon: introduce oom-kill invocations Date: Tue, 23 Apr 2024 11:41:07 +0800 Message-Id: <20240423034109.1552866-3-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240423034109.1552866-1-pizhenwei@bytedance.com> References: <20240423034109.1552866-1-pizhenwei@bytedance.com> MIME-Version: 1.0 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: C262980002 X-Stat-Signature: ij9g4dpc9h15sahqiuqjdu45u7nsdzkz X-Rspam-User: X-HE-Tag: 1713843684-505305 X-HE-Meta: U2FsdGVkX1/qWWKWmGS6qjQHRMxOFbcgEfMU0CPEq1Orgi3oQRnRHS225RvDB3O9wju3DhTTjCeruVI4u10nwJ8uA6A+wqT4U3eWDEeNNpvR0ADpGDTTGIGcGA8DoLnH3bWBKk6SPBwT9Sihxx4x2nREt9UwEdPAfFP2gT7jhaAgkVdmI1b3TMgg7wT4gPTs68UgFWO6daIpfKhmEDaq3RPtXUqY8giyAuCMWURepPnR0w9fgC517F7kKP1EI7lx2raiUhvUa0Jol80fq+Ph4wf4v8vwPoQee4s3C40gLIxv3Y7KkMR766+gmE+hDuT+6Dy5exHK5q2O79VAnZ8iykyEfmekaqsw9D/8VOAAqLolVjUA6g/85b+DmGuG+7odYLMOGmSbC2AK9SdId6rZjVg5KTnFgacD4cx1bicDmxY4y1Hd0fMkVJBW6cYyDzsCenkVj6r6Fjx9/5xPbKcdaXv0BAAz4LKWLoqwqRGtoGCLCe0qr1PDIsEkr0qkpss9K609Ru3PDPYQ5cTi/5bY4qEcs4e/uR4Bwweeh6Zjl56zD9yv3et6PhP5rgweNGSuRQXo3J1BEe3q3oyqJkGwlKLmxbm0gxiUPRiE1ijqA+Ul5dRdU1/GMhSXdcor/M3qMbEH/d6cDpKQVyAvz28TmadlCIyY/PjIOmDBPIVlSk4e76JXFYsojBik0b+F3tpWw1u42KJ2paJSHAJeWiVPNg4DfZQ0ZNsKKfjYkkNgavqxwaNF2MuREBdOKKwfABQoPyKO3mWnA9NJaxN4F9yGKOOCSj/Xc0AC5vyF6DplGBwGJ+wAUb8WcLBf5V9F7iPysH5NlqEK/wVjVQPb2lYiuEcPsyTo30aJiUgTAB7x/PXdwfzE0QM/qWAMFwFsBn86fHWV78lOVkvJQcI3m/9i65TqW2M7a2ZJE9KsDO7pIZxxL7MiC/wrcRaYD6RWCqEsUkH38kEbhLq9SaLQCsc kEa9d5pF +m1C2DjmMskN1R5u1pAnXRw7/N5X7F702ZCZuz3ahoGBNrWX/rtqFlxg8UXiqgIGmZK5nvRChi/jEsGOpGDu9+OO/ChodlYtXdkSvaBIQ1ooE9LTJ/vf0dq1Gk0HOUnttXeZnyUlOw+YtUfUkfEsS6Zzdq+SPOBqlJ+9FZmq+k0eVl1Ivwiyar2+SvKyGxPx/SPW+r/29czJwLHAeBCrhWwfFcH+tnR4DVm0KeceVXy+8aHsICoyHMAP/v4cSvrbwvzxoRvLAaB8fdiogpuXTXWKPAl81kdyL39EQAb38NoW9qEvic0fF4S5ZyLBCRV8dyw34hrmsnwXD5ZXNbyN5FUFMrLRT1kV4K84nY0/zFfAS+zkzE3x41mWn7/iU2Ijf1v1SqzJl7TNZmeK7h1l7dFEC3zDj2PSxKy+PXjq/F01Y+GkblNIRl38mE390EpYPRDbOEmZkjLhgmdGdefGjsrDIegss99G95ZpMWMwMgCPH+J4= 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: List-Subscribe: List-Unsubscribe: When the guest OS runs under critical memory pressure, the guest starts to kill processes. A guest monitor agent may scan 'oom_kill' from /proc/vmstat, and reports the OOM KILL event. However, the agent may be killed and we will loss this critical event(and the later events). For now we can also grep for magic words in guest kernel log from host side. Rather than this unstable way, virtio balloon reports OOM-KILL invocations instead. Acked-by: David Hildenbrand Signed-off-by: zhenwei pi --- drivers/virtio/virtio_balloon.c | 1 + include/uapi/linux/virtio_balloon.h | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 1710e3098ecd..f7a47eaa0936 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -330,6 +330,7 @@ static inline unsigned int update_balloon_vm_stats(struct virtio_balloon *vb) pages_to_bytes(events[PSWPOUT])); update_stat(vb, idx++, VIRTIO_BALLOON_S_MAJFLT, events[PGMAJFAULT]); update_stat(vb, idx++, VIRTIO_BALLOON_S_MINFLT, events[PGFAULT]); + update_stat(vb, idx++, VIRTIO_BALLOON_S_OOM_KILL, events[OOM_KILL]); #ifdef CONFIG_HUGETLB_PAGE update_stat(vb, idx++, VIRTIO_BALLOON_S_HTLB_PGALLOC, diff --git a/include/uapi/linux/virtio_balloon.h b/include/uapi/linux/virtio_balloon.h index ddaa45e723c4..b17bbe033697 100644 --- a/include/uapi/linux/virtio_balloon.h +++ b/include/uapi/linux/virtio_balloon.h @@ -71,7 +71,8 @@ struct virtio_balloon_config { #define VIRTIO_BALLOON_S_CACHES 7 /* Disk caches */ #define VIRTIO_BALLOON_S_HTLB_PGALLOC 8 /* Hugetlb page allocations */ #define VIRTIO_BALLOON_S_HTLB_PGFAIL 9 /* Hugetlb page allocation failures */ -#define VIRTIO_BALLOON_S_NR 10 +#define VIRTIO_BALLOON_S_OOM_KILL 10 /* OOM killer invocations */ +#define VIRTIO_BALLOON_S_NR 11 #define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIRTIO_BALLOON_S_NAMES_prefix) { \ VIRTIO_BALLOON_S_NAMES_prefix "swap-in", \ @@ -83,7 +84,8 @@ struct virtio_balloon_config { VIRTIO_BALLOON_S_NAMES_prefix "available-memory", \ VIRTIO_BALLOON_S_NAMES_prefix "disk-caches", \ VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-allocations", \ - VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures" \ + VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures", \ + VIRTIO_BALLOON_S_NAMES_prefix "oom-kills" \ } #define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("") From patchwork Tue Apr 23 03:41:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhenwei pi X-Patchwork-Id: 13639275 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 76F85C4345F for ; Tue, 23 Apr 2024 03:41:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B9FE96B0092; Mon, 22 Apr 2024 23:41:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AFFF36B0093; Mon, 22 Apr 2024 23:41:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9528C6B0095; Mon, 22 Apr 2024 23:41:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 70B2C6B0092 for ; Mon, 22 Apr 2024 23:41:30 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id DF5DB12041E for ; Tue, 23 Apr 2024 03:41:29 +0000 (UTC) X-FDA: 82039396698.19.6919869 Received: from mail-oa1-f54.google.com (mail-oa1-f54.google.com [209.85.160.54]) by imf04.hostedemail.com (Postfix) with ESMTP id 1C6FB40002 for ; Tue, 23 Apr 2024 03:41:27 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=jx3L+oyf; spf=pass (imf04.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.160.54 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713843688; 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:in-reply-to:references:references:dkim-signature; bh=F5+no2YCmidvNin275LSwR8pI0Tp0FoxLTpLeIvaXuY=; b=DJCBzk3GjsLZC4VFT2d+BWCbR0tsDwsmnie0GYJlFTz718tKeJvyHzG/Y4d+Ko2lzlG8T8 ldJd+t7BwU2gZCUbb/aBqi/8V1xtgOcFvxgUVyk1k2OFrOO2PxCeROVI+jJsmR4zDSCcWH db/TjjupjT90oyHPg477lTzIWaI8ARM= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=jx3L+oyf; spf=pass (imf04.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.160.54 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713843688; a=rsa-sha256; cv=none; b=nXbyGOy6PMp73voo9U4hKAAZoB1zc4Sgmw//l7qKGk4UHFn71llchZkz3fcv04HycQT8YV 4q6dpMw88qILXwmHXSJUU7HPMCjKMkPyI3MtxxJ8fraExxRqKQsKpx5GykLgnFVMLnCymY n4LOnR4RzkjxPvSuxLD8Bi35xrmjNpk= Received: by mail-oa1-f54.google.com with SMTP id 586e51a60fabf-2330f85c2ebso3130797fac.1 for ; Mon, 22 Apr 2024 20:41:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1713843687; x=1714448487; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=F5+no2YCmidvNin275LSwR8pI0Tp0FoxLTpLeIvaXuY=; b=jx3L+oyfxSj4cSMsb7D47AmxWz9/7Ex0XgYUaLzV6Nwhpy4OJxGsqN2HK86ZEavFsN AC4jYLqfMrnt7RzR3Ngdm34w5Z3BC9V3IyiqIqzWe19skHby5CqHn2InrfBf0dcwJRTi O3IPRErfce9g0zth/B/G9E6QZqqG0uUvwEV8efBIIRU25C8LlV0gp3mHWH8zR+KxAFC8 l3Hx5eHBC8FVKqfA/nv2ZRlgzd47i6TP0MtGdKNNCDnzwrdrv/iBXQi9kI1tiwPT4Rfi 4WVVmjdyUAjlH+lK3QAsVaBC+51qkAAdp1feH1uEq6GF3YJJP+QKlM7aab+mCgqHdvW3 mWFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713843687; x=1714448487; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=F5+no2YCmidvNin275LSwR8pI0Tp0FoxLTpLeIvaXuY=; b=ShrYWRjsf2rq7Tz/2sD35hzV+DaiRmcpY76tuGdVaQo29/QShbd9UopKy/h1wWUhq1 ZfR5rDmcO4pScHbXo+cWIQk5QNtvAG+NRlECbD2YvpxS+S85gy1L4wwbxrOkavDjn7rd XvGngB+7+TQWsHUoGYcP25WNRz/TVOIJBlGn2ybQHP8oR/Vb2Fc/1Rw2uj5GgULQ2G1F 8Fn2UbPlircBGmJv15koZXQZbGa/NkOYtSbP2qJLs4/QtQmdJ/u8tMCq1gS47sEkf981 D8WQBlqwtq/q9RKtEcBFgSPqK/MHbQGwST6PcJYIK+drv1A7ZqH+4p8Ue5QUp6x/Boh9 zpkw== X-Forwarded-Encrypted: i=1; AJvYcCWGZiZ1OX2hnII9tECehG+3MsHccp+a7zv7o0R9twwhhCpuweOK/Q2Y9XqwJQhYQEZKANa8dxVAFi7f/Uz7JrUyApQ= X-Gm-Message-State: AOJu0YzuR9ROdkkyMgF1MVsBL4xsnnIvsmTtPxzIztMJNpt+eLdxn2Y5 66ZMK1dchJ23EOQrPSjpoZkRLcE7wuWUIxbE8RoN4Ha/8YsIZbtMXSOwYrASKEY= X-Google-Smtp-Source: AGHT+IEk5ynVvllFpoDAECg8nh7BfbCqfpMIzwNakNzM2tHibdMZWatAJwp62coEKbLv8SpF4bdD4A== X-Received: by 2002:a05:6871:7a11:b0:22a:7899:37c4 with SMTP id pc17-20020a0568717a1100b0022a789937c4mr14499731oac.20.1713843686932; Mon, 22 Apr 2024 20:41:26 -0700 (PDT) Received: from libai.bytedance.net ([61.213.176.11]) by smtp.gmail.com with ESMTPSA id b16-20020a63d810000000b005e438fe702dsm8266980pgh.65.2024.04.22.20.41.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 20:41:26 -0700 (PDT) From: zhenwei pi To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, virtualization@lists.linux.dev Cc: mst@redhat.com, david@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, akpm@linux-foundation.org, zhenwei pi Subject: [PATCH v3 3/4] virtio_balloon: introduce memory allocation stall counter Date: Tue, 23 Apr 2024 11:41:08 +0800 Message-Id: <20240423034109.1552866-4-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240423034109.1552866-1-pizhenwei@bytedance.com> References: <20240423034109.1552866-1-pizhenwei@bytedance.com> MIME-Version: 1.0 X-Stat-Signature: hoeji9ge3wyiccfnw89d4h9h3e7dmpeq X-Rspamd-Queue-Id: 1C6FB40002 X-Rspamd-Server: rspam02 X-Rspam-User: X-HE-Tag: 1713843687-343019 X-HE-Meta: U2FsdGVkX1/98DnC4trk/IjJhmSw7Y+XnBsz/z/0EJqHpyaMtukKNxeIfJUVXy4b+T3eak9QTk6iOUF5HuwLw6stSIws9g5Sw69sQ7uvQijNKJhIKeMjX5geB72+je9VKtT0Q6lNyMA7QdPSjwugLkgF+Bftl5M2GfgAj5DspyCQH0E6Zn27qA8MQlcqIegqpCvrvWwNd9UOtKzZJz8+jng0UyHqBXlU149Dvvm6JV6G+rvtlpniDoaShkayeYoH2IRI76PNBedAOtyywcB0Mj7GGlwldocUfGncLw9pAj3Xm8P1WBakLHEAh51Wh7PI7r7etU43VdmN0/7AYLdZY2MsIni+FdA/TY+6SyRVf1I+DHRMwVnur9sBWsvTeyL0hc52ETZIiXsINk+VpY0HjVDxNKqkbBEPgq7C/Fn6t1nzNyEiJOo/zaY4B/CeAZ3IXTPoTVXinMI8iCNWfpVczXNrTrEpRSUN33gHsMPfCgO0hLX98uTvQAUc4PoLnpSMSQo3M0q2LgXmQvYvKI/aXwhTmreNKyps57XPX5pvCfmqTp30rnoufVUlptVU/tnP8uRGYZD1hmXX4jKs+6m4/VdhxwkB38DUYVUlStq2xMv6NUjz171FOsF3lJ/d6ZU+sA6MG/y8hSB5QK/BLnxTL99LmngM75IRLE810Ux8BhJLEZ0Hglnz00RTyP7Q3oNx7S8Y/2hhNFxLgyZ8+aRRx88WPVYJgHj2s+aqLI1Pk2t5SQL58N6f/y4LVBrXstEAr3umHAEGdXZcGdS/BajZqr4YRTGqrUllUBZybm5pmFMrT6/w/3uKlWH9YBmXpescNX+KTTCyvptg4SF3bnEufXLSw3Ie6sJg0X1qWqPwO7CEyaeUBEtudYBKYmEAswShSWTzmnOXKSBSBDLJXeyauJc9Ghc5bK7KLjA5I4627M7eztn7AtYcieRErQZyCrEGIkqMMmzVqTPKN7B2WAc Hc/EC3fZ JklXP3J7dO8vQVfGnnTS+y7rGas5HRtrIhqHBaIY2Ivd/iXwkJBgpI48tgxklpLos4D1xJR/R0DzeENas2tZiPa1mzeZw/rqOUoKz5fyCvJP/SviRISGi+0J0J1Ei4q9gK8EofliVjieQB6pKgmIdN5SCF3FC/CJ4tSRShDiebyOz60mWR60a9y6eZYIuXOeLAcB/lZyvmdpKaxbkSza6hj0A6O3eWPdGtjbwwi0833V8RbJtWl7mXsxojoHacuyRlMP2l4AYgXO5L0G/JJ0xH1W2EFXM0vqDA7WZgHSQpUpmojunFBtoTzVdn1w099+rNby5UwgODt7BqAPWzkG31EK5h8vZuzu4H16yVNLUru5CGyQaayxQ4SAFCWfpbOQykjnXBGaobjStWz6Osznr/l9AIVZfkrKUpe6cEYtbL+HXnEU9bIso4NV2shfZRROrKfm3ne5s54UZYCI8fR1RobbyqNrPjU40twkd 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: List-Subscribe: List-Unsubscribe: Memory allocation stall counter represents the performance/latency of memory allocation, expose this counter to the host side by virtio balloon device via out-of-bound way. Acked-by: David Hildenbrand Signed-off-by: zhenwei pi --- drivers/virtio/virtio_balloon.c | 8 ++++++++ include/uapi/linux/virtio_balloon.h | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index f7a47eaa0936..e6229e548832 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -322,6 +322,8 @@ static inline unsigned int update_balloon_vm_stats(struct virtio_balloon *vb) { unsigned long events[NR_VM_EVENT_ITEMS]; unsigned int idx = 0; + unsigned int zid; + unsigned long stall = 0; all_vm_events(events); update_stat(vb, idx++, VIRTIO_BALLOON_S_SWAP_IN, @@ -332,6 +334,12 @@ static inline unsigned int update_balloon_vm_stats(struct virtio_balloon *vb) update_stat(vb, idx++, VIRTIO_BALLOON_S_MINFLT, events[PGFAULT]); update_stat(vb, idx++, VIRTIO_BALLOON_S_OOM_KILL, events[OOM_KILL]); + /* sum all the stall events */ + for (zid = 0; zid < MAX_NR_ZONES; zid++) + stall += events[ALLOCSTALL_NORMAL - ZONE_NORMAL + zid]; + + update_stat(vb, idx++, VIRTIO_BALLOON_S_ALLOC_STALL, stall); + #ifdef CONFIG_HUGETLB_PAGE update_stat(vb, idx++, VIRTIO_BALLOON_S_HTLB_PGALLOC, events[HTLB_BUDDY_PGALLOC]); diff --git a/include/uapi/linux/virtio_balloon.h b/include/uapi/linux/virtio_balloon.h index b17bbe033697..487b893a160e 100644 --- a/include/uapi/linux/virtio_balloon.h +++ b/include/uapi/linux/virtio_balloon.h @@ -72,7 +72,8 @@ struct virtio_balloon_config { #define VIRTIO_BALLOON_S_HTLB_PGALLOC 8 /* Hugetlb page allocations */ #define VIRTIO_BALLOON_S_HTLB_PGFAIL 9 /* Hugetlb page allocation failures */ #define VIRTIO_BALLOON_S_OOM_KILL 10 /* OOM killer invocations */ -#define VIRTIO_BALLOON_S_NR 11 +#define VIRTIO_BALLOON_S_ALLOC_STALL 11 /* Stall count of memory allocatoin */ +#define VIRTIO_BALLOON_S_NR 12 #define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIRTIO_BALLOON_S_NAMES_prefix) { \ VIRTIO_BALLOON_S_NAMES_prefix "swap-in", \ @@ -85,7 +86,8 @@ struct virtio_balloon_config { VIRTIO_BALLOON_S_NAMES_prefix "disk-caches", \ VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-allocations", \ VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures", \ - VIRTIO_BALLOON_S_NAMES_prefix "oom-kills" \ + VIRTIO_BALLOON_S_NAMES_prefix "oom-kills", \ + VIRTIO_BALLOON_S_NAMES_prefix "alloc-stalls" \ } #define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("") From patchwork Tue Apr 23 03:41:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhenwei pi X-Patchwork-Id: 13639276 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 B74C6C4345F for ; Tue, 23 Apr 2024 03:41:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0A4236B0093; Mon, 22 Apr 2024 23:41:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 02A8E6B0095; Mon, 22 Apr 2024 23:41:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D72DC6B0096; Mon, 22 Apr 2024 23:41:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id AF57E6B0093 for ; Mon, 22 Apr 2024 23:41:33 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 6FEE6A0C06 for ; Tue, 23 Apr 2024 03:41:33 +0000 (UTC) X-FDA: 82039396866.25.B7C0B46 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) by imf16.hostedemail.com (Postfix) with ESMTP id 9409A18000E for ; Tue, 23 Apr 2024 03:41:31 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=VwS5b+qW; spf=pass (imf16.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.210.182 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713843691; 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:in-reply-to:references:references:dkim-signature; bh=P0uuoQxJ0kINjaQgEP7wqVGQ+5rr3s87tkW4G+81Ziw=; b=K2CtcF1JTGQGoLaMgPc1bes6UConNPw/wujrbn5Ln/i/gaGANlXuiZ+5/kTiVPOZ1QWZNM UjCSRbG8QzKsUy8G/vsa6es4+r/w5ona8IkvkWOBdnSyFjv+oRGoa+vbhCsX9A0x9JIuYz OeSqXNcUssqPV77YWQGM6V2vcGBpNVQ= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=VwS5b+qW; spf=pass (imf16.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.210.182 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713843691; a=rsa-sha256; cv=none; b=lPDkljXkHW0CcxWFCJry0dFHNdm4AjN4ZMdKRFXXvJ9/CWVqcjMXWe23I3FlCC3xVGxqaX s5zNLSYDBYl1vDxE+BmqivmY3ptHl1pC2nSBMyPRg6qm5nmx7l1kDGuJ6FyqJgRCFYBEmz mIuRA4aP+QMKwC8D2C2E8RDSPM1rR7g= Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-6ee0642f718so4301843b3a.0 for ; Mon, 22 Apr 2024 20:41:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1713843690; x=1714448490; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=P0uuoQxJ0kINjaQgEP7wqVGQ+5rr3s87tkW4G+81Ziw=; b=VwS5b+qW+gb5cERq64RzuvjIrRL+ElmmO6Tz9sEKTfdnrwYo3IqWeg4AHTgXU49XXd JXlamDrD1PaneY4UyUBKjnV5JcxWiUz59C5LefbhLPjeODtvdPIDKTVSAxSKHlqLtSAr v/XMNxPVbiuH6JoxzwyE+Qj3WfrP04h5g5047GxSyojNOq9vKScBBQONux2dZypoPJkU 1P5ydcYYfzRHF3cuh/GfuFhn5JdEpjFM1LLt6gU44lESF1htYjXGDkJ9Yhs1hGaZtZuG CtksX310BDLYF8xw+edcuebFCs9ZhkG+gJnZYS3GyIBbH2YBpA/hbuo+G1e8U9dljSeb vN1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713843690; x=1714448490; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P0uuoQxJ0kINjaQgEP7wqVGQ+5rr3s87tkW4G+81Ziw=; b=gdKqwFsMJYEp5tOVPDnR8n29Gc+vpgdROzEkR3BadRvhFs50Vhq2PniEoytR7+iNHS Vbpt/EQJej5MthwGSicwSJnatEC/ela3cmiy/vpmSn7PjHFPYeWdjCEhTIXSHtzxWax4 055u/47fcVB5tI9QLlX5AEp4vuXYf4it3QbSBlcz1zXZsYNP+h9yqOqG0QFx2DO+9lV0 yQpF+61wAHjt0Pil8/fdsvqnw/35g7CCCFeHyz+HHYcd7W3yK3di0IgLqYaU5l113xfI LP8vL+UmuXA37mbutdYtVyxFTRGMg0Oj7uCMPusMYkzqGvqkd0/vLtI59FdIx+x9WU2V daPw== X-Forwarded-Encrypted: i=1; AJvYcCWyi4WT14Rh24TB2NO7LIZengmi7qRCkmPf9xXOSPcigraqpNy5ZuDpWjdvY/OFB4AASVyhVfvloCx3u7KLoQWKwRA= X-Gm-Message-State: AOJu0YyYKaRkJr15Bib5bCgMBE/WH0ITqxqloSFFXB00gT00zqgWOwQD ZQFGYeHGeJvAGOPfPDGewra/Ke1nfeRT1tQqj0RMfkBnnSMcvKc1si5keXWbn7U= X-Google-Smtp-Source: AGHT+IH3OpN2sFYi3GvJfqyxhabzuW3WUwrv+oQUG4aXzn7ZEeGp3bOQixCyYcifZfO95/rYrfTxJA== X-Received: by 2002:a05:6a20:841b:b0:1a9:54fe:b9b7 with SMTP id c27-20020a056a20841b00b001a954feb9b7mr2176395pzd.21.1713843690300; Mon, 22 Apr 2024 20:41:30 -0700 (PDT) Received: from libai.bytedance.net ([61.213.176.11]) by smtp.gmail.com with ESMTPSA id b16-20020a63d810000000b005e438fe702dsm8266980pgh.65.2024.04.22.20.41.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 20:41:30 -0700 (PDT) From: zhenwei pi To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, virtualization@lists.linux.dev Cc: mst@redhat.com, david@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, akpm@linux-foundation.org, zhenwei pi Subject: [PATCH v3 4/4] virtio_balloon: introduce memory scan/reclaim info Date: Tue, 23 Apr 2024 11:41:09 +0800 Message-Id: <20240423034109.1552866-5-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240423034109.1552866-1-pizhenwei@bytedance.com> References: <20240423034109.1552866-1-pizhenwei@bytedance.com> MIME-Version: 1.0 X-Stat-Signature: d5wiioc6oifgw669pdkbe16kdhrmtxg5 X-Rspamd-Queue-Id: 9409A18000E X-Rspamd-Server: rspam02 X-Rspam-User: X-HE-Tag: 1713843691-255086 X-HE-Meta: U2FsdGVkX1+FcQRo9YqicvD55MsXl+DWeDwefxl1LdcDokgT5ojNHC315dbGrH93/VgNE4HgD9VzeTBk2WJEq/nraj45LAU4WcA0RJmv44t73D7UpY9vPxneTRQ3WtLuYzshB9eYzM8UcA3nsHEvXHzMrlvqCO+hkKpK5imQCN8nC56H4W9VAhe6I+v/6hkRVXFBY/1DWZZwjUFrjTxOzmEDKLXwmTLi+MXbq9OcunkFWILJixoAjbbvRndvfoQiCHaAz7lrW9dCFHJwPECfumxZw4QYoqfauVb94nQeVhrl/cA92uX70PVcLVxOmmSqtGT4y26jEdq0BMSMdNFGVSMBVJKr9JjbmRF6cjfvP5gWzWUHeoXKO/O74vo7DH/MPc6TNWp4yrqb2S1LUsEUskygEk5URk+FtnjzpdcJ7IvBYMKYWk0zA8h4x5obmAoNcwlS9Bh4rLe07rB5Gzx/vDic3Jr6UlWXqKwqUcULEN14WkL0zZkkJWi7ULXTCRXHdgTmt1Zb3uNr2pkcEhZJ1swJ8WyBpKHM8EffzisRNTqaJecBUQPPQVmcSWNgRo/q9wEyb3u8Z6VQjc6a4m8yM6PIYffasTNxEIuN3Xj41V9SYrNQu8rddkUHAJkJpo+ZhJA37xJnqDur7KlTyrvVR5XKnRuyQkY01HszdURsesGa+tZ9yQqlq8+4PD1IFdw5SgstP3QYuSqmvtBIVMUOxUHeAK9TGflU/7Hcg4aZ2spR8qLtYRfYtDF8KxX3pXOozlq++Og6+Bdx4FRsgSitAMaX1aNi5WPWOEm68HezAGF5Rmyu11w1iIPjWeQphMXdtHCkFDBR6RU/tFxK3/6oXbloCFx8dEidHIZ0qTzrA6b8a+/3QBEAQ4kNLsuSiSgX+IObRCokaAQ6Vdr785lrgPP34wOqn9S7HDBNcvl8UknGescx3MioCJHwFuYyu662/zSiSDXl255NZdhRMon dQLMDNki I+JGcwr1hyk8rITalQHuurLpx8AFPFbR317ZfDnPjv0UoVErAvQDU054xot1pSKkmtm0TooyXg3LwdycAAaXTY6l5EsfXeP+7Im0HdYMsLtD3TplGqTs/wJPY6x/iT8GwWQh9fEjRH+NsiQVMolLHobaCE1tHJml2N6PmU9dXRe2Rsw8q27lySXSKkuQJmHbDMiOljn309mc+Yh+o9yM4ZyMM0XAG2cxgSd4/HrWNaLlntrIkqnmiiq1ENfhIMSHFgD4thAb1F8uYxkOTqO9Haoo7TDJrOLejwKrvg9EElHWwequTOlFq6RuqHCvx6WhcFPR8wxw2qk39t1hySD0XQNdlH1po0NgrR/ytrinDIZ5jv8W2hmaWH1OyDAGjRSaYHmqU5bAmtdfbpb2j3pggh+YidRj1zXSq4Y77tYr3QDJuNt/GOvBFXBEVqxEy3A+Db5/1IbqB9lMUwf599hUsp98DrrMeadB4fWzmWNu4eKNgJQY= 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: List-Subscribe: List-Unsubscribe: Expose memory scan/reclaim information to the host side via virtio balloon device. Now we have a metric to analyze the memory performance: y: counter increases n: counter does not changes h: the rate of counter change is high l: the rate of counter change is low OOM: VIRTIO_BALLOON_S_OOM_KILL STALL: VIRTIO_BALLOON_S_ALLOC_STALL ASCAN: VIRTIO_BALLOON_S_SCAN_ASYNC DSCAN: VIRTIO_BALLOON_S_SCAN_DIRECT ARCLM: VIRTIO_BALLOON_S_RECLAIM_ASYNC DRCLM: VIRTIO_BALLOON_S_RECLAIM_DIRECT - OOM[y], STALL[*], ASCAN[*], DSCAN[*], ARCLM[*], DRCLM[*]: the guest runs under really critial memory pressure - OOM[n], STALL[h], ASCAN[*], DSCAN[l], ARCLM[*], DRCLM[l]: the memory allocation stalls due to cgroup, not the global memory pressure. - OOM[n], STALL[h], ASCAN[*], DSCAN[h], ARCLM[*], DRCLM[h]: the memory allocation stalls due to global memory pressure. The performance gets hurt a lot. A high ratio between DRCLM/DSCAN shows quite effective memory reclaiming. - OOM[n], STALL[h], ASCAN[*], DSCAN[h], ARCLM[*], DRCLM[l]: the memory allocation stalls due to global memory pressure. the ratio between DRCLM/DSCAN gets low, the guest OS is thrashing heavily, the serious case leads poor performance and difficult trouble shooting. Ex, sshd may block on memory allocation when accepting new connections, a user can't login a VM by ssh command. - OOM[n], STALL[n], ASCAN[h], DSCAN[n], ARCLM[l], DRCLM[n]: the low ratio between ARCLM/ASCAN shows that the guest tries to reclaim more memory, but it can't. Once more memory is required in future, it will struggle to reclaim memory. Acked-by: David Hildenbrand Signed-off-by: zhenwei pi --- drivers/virtio/virtio_balloon.c | 9 +++++++++ include/uapi/linux/virtio_balloon.h | 12 ++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index e6229e548832..225662358221 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -340,6 +340,15 @@ static inline unsigned int update_balloon_vm_stats(struct virtio_balloon *vb) update_stat(vb, idx++, VIRTIO_BALLOON_S_ALLOC_STALL, stall); + update_stat(vb, idx++, VIRTIO_BALLOON_S_ASYNC_SCAN, + pages_to_bytes(events[PGSCAN_KSWAPD])); + update_stat(vb, idx++, VIRTIO_BALLOON_S_DIRECT_SCAN, + pages_to_bytes(events[PGSCAN_DIRECT])); + update_stat(vb, idx++, VIRTIO_BALLOON_S_ASYNC_RECLAIM, + pages_to_bytes(events[PGSTEAL_KSWAPD])); + update_stat(vb, idx++, VIRTIO_BALLOON_S_DIRECT_RECLAIM, + pages_to_bytes(events[PGSTEAL_DIRECT])); + #ifdef CONFIG_HUGETLB_PAGE update_stat(vb, idx++, VIRTIO_BALLOON_S_HTLB_PGALLOC, events[HTLB_BUDDY_PGALLOC]); diff --git a/include/uapi/linux/virtio_balloon.h b/include/uapi/linux/virtio_balloon.h index 487b893a160e..ee35a372805d 100644 --- a/include/uapi/linux/virtio_balloon.h +++ b/include/uapi/linux/virtio_balloon.h @@ -73,7 +73,11 @@ struct virtio_balloon_config { #define VIRTIO_BALLOON_S_HTLB_PGFAIL 9 /* Hugetlb page allocation failures */ #define VIRTIO_BALLOON_S_OOM_KILL 10 /* OOM killer invocations */ #define VIRTIO_BALLOON_S_ALLOC_STALL 11 /* Stall count of memory allocatoin */ -#define VIRTIO_BALLOON_S_NR 12 +#define VIRTIO_BALLOON_S_ASYNC_SCAN 12 /* Amount of memory scanned asynchronously */ +#define VIRTIO_BALLOON_S_DIRECT_SCAN 13 /* Amount of memory scanned directly */ +#define VIRTIO_BALLOON_S_ASYNC_RECLAIM 14 /* Amount of memory reclaimed asynchronously */ +#define VIRTIO_BALLOON_S_DIRECT_RECLAIM 15 /* Amount of memory reclaimed directly */ +#define VIRTIO_BALLOON_S_NR 16 #define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIRTIO_BALLOON_S_NAMES_prefix) { \ VIRTIO_BALLOON_S_NAMES_prefix "swap-in", \ @@ -87,7 +91,11 @@ struct virtio_balloon_config { VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-allocations", \ VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures", \ VIRTIO_BALLOON_S_NAMES_prefix "oom-kills", \ - VIRTIO_BALLOON_S_NAMES_prefix "alloc-stalls" \ + VIRTIO_BALLOON_S_NAMES_prefix "alloc-stalls", \ + VIRTIO_BALLOON_S_NAMES_prefix "async-scans", \ + VIRTIO_BALLOON_S_NAMES_prefix "direct-scans", \ + VIRTIO_BALLOON_S_NAMES_prefix "async-reclaims", \ + VIRTIO_BALLOON_S_NAMES_prefix "direct-reclaims" \ } #define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("")