From patchwork Mon Apr 22 07:42:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhenwei pi X-Patchwork-Id: 13637843 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 20197C07E8F for ; Mon, 22 Apr 2024 07:43:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AFD6E6B0089; Mon, 22 Apr 2024 03:43:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AAE8B6B008C; Mon, 22 Apr 2024 03:43:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 94D976B0092; Mon, 22 Apr 2024 03:43:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 6ED2C6B0089 for ; Mon, 22 Apr 2024 03:43:08 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 206B4140AEF for ; Mon, 22 Apr 2024 07:43:08 +0000 (UTC) X-FDA: 82036376856.12.385C3F3 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by imf02.hostedemail.com (Postfix) with ESMTP id 448828000D for ; Mon, 22 Apr 2024 07:43:06 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=L9tKyMnn; spf=pass (imf02.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.214.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=1713771786; 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=8v4Ayhiua6xBQPRLdZqElV8SuuukGuSIp7AWQ+b83kM=; b=ppuPoPyJBoS/yx8UMvPs05YebQV6TRdj6HyI8Ic9KOawJAF7USprzxQbKJ7Bpg3SaGLsvV V+2e8sfrcdU0JiPsVpDmNcbSnJeCHakN8IIf5lbtDLtNK94t2STJQZTcbpqCXqF9p5RLww mKDgZ7wfGbjqXI4xL5hErtxDwhVH7OU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713771786; a=rsa-sha256; cv=none; b=r0X0dsruWW81QkD2Azrm/8BmJVMvAfFNfXPr7i2ubTb1WOQMxLx2D2jI5nkQJ7gLio6nLO Vh5drQ5CRXNE2j1OadoiCvuR1ClNainjeA1UYdWxVYXx7Ld61Q2uX3Ibbd8sObD5g57k11 N3LRdllqVu66aBGn61iTS3xzCrhnh6A= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=L9tKyMnn; spf=pass (imf02.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.214.179 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-1e2b137d666so31896865ad.2 for ; Mon, 22 Apr 2024 00:43:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1713771785; x=1714376585; 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=8v4Ayhiua6xBQPRLdZqElV8SuuukGuSIp7AWQ+b83kM=; b=L9tKyMnnHnO6Rj7HVTwfCIrB4QFLspUZ7L/aLPZ8TOq2K3x0x7H9Y1oc8f4gxJ8hT0 +RIMQl2lm4WNa6WMoCMcUOUNnPAzqwiJ8UBhm59CyY6vUfvbR5sAyNEpVGzoEx3DXYLP CdVv0rPBExKJqS79D0xhXoQBFikRTZWQDADp6A9sZrxKkY65Uo5dIQ86zuJOcvUI8TWT S6QjuNThuC7QfJXx8irG9zluzYN2bd4oIuVXPwkTmVckUOEl39sl0ov86L+3iHfyhzJM IYyVR1K6acfy5crkWI5QNv7wnApHHilgIOiuT82CCJfM+osT8Ym3rRJvrhBw9lo6f4XS hwlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713771785; x=1714376585; 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=8v4Ayhiua6xBQPRLdZqElV8SuuukGuSIp7AWQ+b83kM=; b=Bg+Jt2F70JxqQGv+qqllWeRKZIxDUqHvFrWviZwAKMq8QCNN1QlPs2JWFlEo7ZpSaJ C3KF1DMQIH/qFcYkSYgV1Rhvo/7k9uN+j1j37LmZbnEotmrPZQgJE5+Mgil2WTAq0rht aqGo6foTBHWBDqoTnHzAvUM0fqdJiYVJ6cBBF+NEU/MvRXDDzocegpihe0fBSyRwpnEz 11S+mOts4P1PM4j6HxOidgINO0MxwbRiUYuNdqmAZth45UbQcHRt51aaqyU7HmmvH1+x mT4v1QLXmHpv6W4Pi2WdwzrPYB8Fq+tD75Tg43bL1auaYDeegJA7il59E8jsG1jzw71H vJNA== X-Forwarded-Encrypted: i=1; AJvYcCUrtOieyCgHGKDRNOtrLDKb7m1/0XzMS4VQ3M6wENNHhfoMQmPRWewM5jy+bg8MQZTQNJtedqonQyPg8TyiQHPY8u4= X-Gm-Message-State: AOJu0Ywrqqip95ZbH82ozyQyGvW1x8f0VCO9o8vS3QHlFPH868cVAaR8 bMkMEA20mtR+7lyAi1I8GUA1zivWaOmoynPC1AhdD3/nYbTjbn8sBeIAe1fl+AM= X-Google-Smtp-Source: AGHT+IH5FapWr2NsqZRBiIrj5e5+IahI/4Uza3UkvKorGF9IdyGMaix/CVDPSu/65IlIfj7nO5mHKw== X-Received: by 2002:a17:902:c40c:b0:1e4:2b90:7282 with SMTP id k12-20020a170902c40c00b001e42b907282mr13198963plk.14.1713771785215; Mon, 22 Apr 2024 00:43:05 -0700 (PDT) Received: from libai.bytedance.net ([61.213.176.11]) by smtp.gmail.com with ESMTPSA id e11-20020a170902784b00b001e0bae4490fsm7595634pln.154.2024.04.22.00.43.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 00:43:04 -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 v2 1/4] virtio_balloon: separate vm events into a function Date: Mon, 22 Apr 2024 15:42:51 +0800 Message-Id: <20240422074254.1440457-2-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240422074254.1440457-1-pizhenwei@bytedance.com> References: <20240422074254.1440457-1-pizhenwei@bytedance.com> MIME-Version: 1.0 X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 448828000D X-Stat-Signature: 8m17rj7yyd7ocwu7b5f93q85sz67itn6 X-Rspam-User: X-HE-Tag: 1713771786-643609 X-HE-Meta: U2FsdGVkX18G/r/QuLsVWpnTXmzJs0qhCdGKFL15PjvDZRdALEXaaqkLjcnedHVLu1VnwT+Pd/FvWcXYsxPEjNghzDopL7ycWeZ/wUAA1MmjzM9jzu4C5SxGRZbI+t57a1iGPye1beZMgQZ9IHW3jUTc9Nsv88h1wEjDBcktP0iqS0v2Qv6UR8Xkfu1nzjjvdRZla7g50aoElLlJOqq6NBLwxxt0mEsImMMXFF+/B9XaSlwXlBUVIP/gA85j9rC039KZeRw/+OgknJlWM8aPsFsKhdSY9WMqr5eR3mptkG8wHc6TgL7/7ltqGCLqPruhI3FelvKyYEiJ+EmtYx5xVL6UT8pkIjb4XPlZh+/XgUlZzkWmT7zNw+x1faBR2xZhlMQ0pNNHqD77RAOMmoF/92tjulWqCk90ZkJ63IxZC+j4WCsgzJvRgzV78Mc4AF6mYAoT9A/zSm0i0DKS5AzdmAAuesi9dkU+JK6793Dafn/ep8qhJp1PqkCsXXK6bTqMjjK5jT2NerrrHnEAaJMrJO4+nHks5mVTBEYLJxfuU3tJ3C/BnoXQ0nWRuVm07h/zuVlamiCiWJ/1LCcRaA1jaYB4jBhzbUI114iiKQ2I9JOdc1No3ZGgFjabFEBQcRz43TtoyObU//XogCeaHni6tYHv5yl+R7WORDfCo7ZZcVoZxtWVRF/lkVTgKe+/mhi8QqW6Zr/ecDJePRObkyRWikq8+CnwHa9zkj7w4opmQ0x0hZKxQZbEhDBjYTQKoIcQpNapv4Fsn+jLeR7WxNhXNxEwWEpWTtl2rWKng9VAP5Gao7UkP00D5qihldZz7s6X7SbmoVO/MbNyTx+i2Z+RFoX4A9mDI3DBXIM62DX9KXhNkq3PZOZ9jd/fMjSVLAzRfTD2uy0Mm9cWvqyf5xvXrCFIQYgMMKICWbYIFVr4EyL0vmOB0am6emuv5FK+ZnLKUlzJUa0oAmRWsBFI8bE RsTOv87i y4U3iWsDNqz2RHsdcPhUh8oBQjhYX1HYnjCAUri+IuKMZ0IeiBpbQIoweD6LiKdFXusc8WGUedwLu0H/HSKp8DZWGTLK4fRIMfKSc5sDl0p1UfjcKv6CUxEQspUPVHTl/mX5VB+dYnDE1VIZf3KPSMOf84WB78iR8N7m1jpbX/iZvpRKpjjmjJ4tgQ0yRwmkZJ7vci/NOY13KdpWWXsm5QQb54bRRz5ORiytxc9aO6Ci1ekA8g5zXW/zyxaPNhOPWgNmoIB6Ej92VkICTGsfpSP5o++zLYu0ZgOOZNoXb3s1qPxoBw4eRFboP+ddSTqd6ieTru41bVg9G/6OwzNbiAPygOX6yYefiY4UTOwLIklRKjFWcCHEphVUkBFj/EAXpGWmac59QP4EpevdqdHIcuPhDN+hMq4hWy3BS10YLlfSGlg65nK/M6FbhckNrwy0LTqs0WcWSoVGSA6s= 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', once any stack variable is required by any VM events in future, we would have codes like: #ifdef CONFIG_VM_EVENT_COUNTERS unsigned long foo; #endif ... #ifdef CONFIG_VM_EVENT_COUNTERS foo = events[XXX] + events[YYY]; update_stat(vb, idx++, VIRTIO_BALLOON_S_XXX, foo); #endif Separate vm events into a single function, also remove 'CONFIG_VM_EVENT_COUNTERS' from 'update_balloon_stats'. Signed-off-by: zhenwei pi --- drivers/virtio/virtio_balloon.c | 44 ++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index 1f5b3dd31fcf..59fe157e5722 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -316,34 +316,48 @@ 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) +/* Return the number of entries filled by vm events */ +static inline unsigned int update_balloon_vm_stats(struct virtio_balloon *vb, + unsigned int start) { +#ifdef CONFIG_VM_EVENT_COUNTERS unsigned long events[NR_VM_EVENT_ITEMS]; - struct sysinfo i; - unsigned int idx = 0; - long available; - unsigned long caches; + unsigned int idx = start; 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 - start; +#else /* CONFIG_VM_EVENT_COUNTERS */ + + return 0; +#endif /* CONFIG_VM_EVENT_COUNTERS */ +} + +static unsigned int update_balloon_stats(struct virtio_balloon *vb) +{ + struct sysinfo i; + unsigned int idx = 0; + long available; + unsigned long caches; + + idx += update_balloon_vm_stats(vb, idx); + + 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 Mon Apr 22 07:42:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhenwei pi X-Patchwork-Id: 13637844 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 F3505C4345F for ; Mon, 22 Apr 2024 07:43:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7F0356B0092; Mon, 22 Apr 2024 03:43:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7A2A16B0093; Mon, 22 Apr 2024 03:43:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 669D66B0095; Mon, 22 Apr 2024 03:43:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 48D576B0092 for ; Mon, 22 Apr 2024 03:43:12 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id EB41640B02 for ; Mon, 22 Apr 2024 07:43:11 +0000 (UTC) X-FDA: 82036376982.23.2446E9B Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) by imf08.hostedemail.com (Postfix) with ESMTP id 20FE7160006 for ; Mon, 22 Apr 2024 07:43:09 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=WAA71+nz; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf08.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.210.182 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713771790; 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=9/EWE7HosrBQLSJgBRmTeatXRmpZ6JVLuxoFHN85xXc=; b=7DlDH3hyQ/4aEISEyUnbSGFfeUrCzbSrn358urooOsSzdvTLrvbY6j6SEwBCprj70RNgNe 4dqLYDGGfAWXAN0DmfOqDaKdE8QrgbRqbFLCkf/UkakxSKbsktE2htuMQvT59jFPgSRrEG tGYEMb85oMsDk/DXgkDWUFqV3Jf/G0I= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=WAA71+nz; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf08.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.210.182 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713771790; a=rsa-sha256; cv=none; b=SkE6V5TvdUJfsGffSrmG245t/U8H9a9PyZwuFKCCz2gaI7E7GR6BhQptN5wPzhrLgvpJdh IO4L9CKPO6IkNNeGc4jBxV8w01+Qq/uAkK/i+zqF0bmLcGar2uWmj/lN5iOIlYo3+/RQ49 R/PPk1hZf+kJVIOjaUD/ThYvMxqjOk4= Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-6edc61d0ff6so4069005b3a.2 for ; Mon, 22 Apr 2024 00:43:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1713771789; x=1714376589; 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=9/EWE7HosrBQLSJgBRmTeatXRmpZ6JVLuxoFHN85xXc=; b=WAA71+nzOtpU13VCRA4KY3ljBYA6zt+NawjRw0EJF/C3JmEjliHySRIzoEwULf9/Ob 1HjC9li2yWt1rvutKCGy6YVgWmtHcq5T3Xs6qtOBxbl4guaRl5n0+NvSSn0APXbu2yFg ANdASfm0hiSLueRrDWRwTBlwbqKwW14akP0X6izwvUgPOmn1Cx1kkxosGTF77G7+NQuc 2qtEwozTCSKd+bT6l4injDp793i9HvShUXXN5rJfzyRShQunOLAY6c7g0V3PEA/5A0zQ Odw06uPiij4Ymt0qLe8POCnVfzxUasnGOzRY9ljSHrV2oXmWbsuM+5zT3coDl4yH1hFR +HWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713771789; x=1714376589; 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=9/EWE7HosrBQLSJgBRmTeatXRmpZ6JVLuxoFHN85xXc=; b=U2kceFoYrkAC4DiyUPCqwemHNminVpgAk3V2j2IwxNoUAh3M8jIUXzFvVGVlWtj2yp n/+5IiwuMFqxFTlRnHwPNcncbZtc2bfNnrvePHFiCkvoBJQwFxixfxPAlnFvz3dbzUUy kJoWjtcPPfcnq2ozu7Vxr9nfz8RhT90geL0PTD0rejrs5rCzIHUdNhB9aVW71coThlQK AobGmGkJTC3S78tRlfCe5JjJK3wbNmVw/XAPVrhNUfZ90FpCwov9X3DXrsSuYUfSEmDl 0BWlyphrdSF5HMSYFnHuYwMeBHXVgiwcV4BUeTvfDY2+17uUo5Epo1u/Rb0RVh3bBXXC mHxg== X-Forwarded-Encrypted: i=1; AJvYcCXeNhtpUqHyibSL3aRcYo2aS/+GsPyrklaYX95H6i3X3n49p6PMcBASZEEctX+ze4Y34jlQYYLFKmHvycjcai2y8fs= X-Gm-Message-State: AOJu0YzRRdZ4xl3AebSflhBjyFB1u3+FvNQWLfzQnu8rt6ZqwsIA8yWG UVILyiY0dtqmETvt95RGYGshuv4GmRhdxmMgZ7/cDVusiWCwTvW7VyaDbeh7O50= X-Google-Smtp-Source: AGHT+IE2E7bgMyLmnmQSu1kHHGwGpjyE4p40kY0+jyTlKg2yf/aOeq6zrS4zsbnrUiBWDAWUZBb4Rw== X-Received: by 2002:a05:6a21:348b:b0:1ac:3a2c:b42 with SMTP id yo11-20020a056a21348b00b001ac3a2c0b42mr12591466pzb.9.1713771788742; Mon, 22 Apr 2024 00:43:08 -0700 (PDT) Received: from libai.bytedance.net ([61.213.176.11]) by smtp.gmail.com with ESMTPSA id e11-20020a170902784b00b001e0bae4490fsm7595634pln.154.2024.04.22.00.43.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 00:43:08 -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 v2 2/4] virtio_balloon: introduce oom-kill invocations Date: Mon, 22 Apr 2024 15:42:52 +0800 Message-Id: <20240422074254.1440457-3-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240422074254.1440457-1-pizhenwei@bytedance.com> References: <20240422074254.1440457-1-pizhenwei@bytedance.com> MIME-Version: 1.0 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 20FE7160006 X-Rspam-User: X-Stat-Signature: 9age3dpgg5chj73rhzdoheps5q5b8uei X-HE-Tag: 1713771789-329430 X-HE-Meta: U2FsdGVkX18Ktj8z8+Vk7kiWmsj5qEiWaPyUDHBVc1wv/ezCDKHpu7fYnetKnjzdCJTaWEpJXXmho3HlIUKlwJSCCMMCo+LXv7M8G03hsXM8vo1OyYV91pes9jiUDj551ylbZWOyEJKxXd4tzcItdm2CGaIWzBfarPS9XvUceA6B8pypuqAldayJogUwbIjVClMmoggkTRjG9FTiiIZjaIGO+oNHqpgav69HdbxRt8QOdi+Hra3UufWKIPDE0rGA8ipUpqpYNms8doRo73rO0J1mNCaZSvs/COBW5g5QY1fkRLDkDra98j73PS1BA33LyWesbjX/+gaU+GDeaTyXpUAiqWfPffgcmdccWevQwMltBVW08vBc+lAs7f0obEHXoayegdgeQ0nYyWxVoD/DsZ53R+vda1WgqVQ23D8YtBhBpOYZ58UhEiZDvfx7bVggaEkFytGVG7MUD8wBbS94dLVZ3mrj3poEC03yWnSp4RQNpD8Pf/ANSZZ9oHXlUvbWgh/lyr/FapONoRKJMzlZdmXqG38roYzLmwvSJKRGWIR+eYT6F4+Os4TJvBh6UEX4J5GxlWj6t2BECeEJ5Y9EQCJG2vWdUEz0V2jklaS/aF6rp/J6tRGjIz29s+g0uV9u/0YhoZUr+rfMrHNFgTnnQAmXp3MGtggmiV5FPJvoL7EWJjt0KIxeRhTegXyRaPncrN7f57KK6VbhOiKRD6b477X12KLsPmjmDi480safklAG7s2Ky866WwBV374kzYE73n2kv6sNFNVitls5Ib5S5tsB5ARuWD4LmH/bpi2F45KCUWmjFSTTVZaW9j7pE4hiiabThHf+ua+1b0GSxgLiVPznIRwDRYHGavQ/e6mjWPcGGUx5WGH63o28cc59CHe1le8I9aYjwkOJfFdrz4jxiMkv/BvLLG3dx3yMXpEx9pE7rGL0mQpBFtWYOM4IPUSNLZzUk0M8CdczmZ4137o E/K5i54B VIXJnf/7waYVjdHXo1MCh8QNVDA7qkZZV3N9NXZVseZi3qs656oi062zQ9jdyhCHSJCoWHGyxlp6BuPjOwUyzfuuCf409zpx6+WyED2okoglGNBBx4sMBp6QvW4v+WnA/jWt71kY8B8t/WqW3F0RbIOeWChC04DMnMu38ei7Xh/OUde9SkE7dVbFOOjNXGnF/np8IljmfErNTyBrJb0UohK8iUw8JQtrsgd7AmorTpXLCWYoQdCvdFrER7+HvOWw519qlG6M2JQFtQfHKF2IcG7YLNa3vlaSL7KlkJHsk5qFvl+qUVOiPXQss/NVPcvFtDzFsy7Gto/OfP5SMR44ck6dQMiHnssVRFZ4yhUKmTXFvOZaBDA+Do6gu1UDv/aOUrQdOFDA5yQ4eRYsxfEpExvf6sfgjreqn5MgGAJrbne0QCaw76s+XVlMulbGB/pmNmO8XmB5d51zxuqDSvKOFbQul1g85FOR5nQSzqvpi63ziH8E= 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 59fe157e5722..87a1d6fa77fb 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -331,6 +331,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 Mon Apr 22 07:42:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhenwei pi X-Patchwork-Id: 13637845 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 E6986C07E8F for ; Mon, 22 Apr 2024 07:43:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 72DC56B0093; Mon, 22 Apr 2024 03:43:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6DDF16B0095; Mon, 22 Apr 2024 03:43:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 557C06B0096; Mon, 22 Apr 2024 03:43:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 334006B0093 for ; Mon, 22 Apr 2024 03:43:15 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id E5D671C0AB9 for ; Mon, 22 Apr 2024 07:43:14 +0000 (UTC) X-FDA: 82036377108.30.0843750 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) by imf23.hostedemail.com (Postfix) with ESMTP id 1766A140011 for ; Mon, 22 Apr 2024 07:43:12 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=JloEebNZ; spf=pass (imf23.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.214.174 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=1713771793; 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=zrl4akKhVgEJxLJYwq5+gLRsb/mo5Xi0vTQ5EYuojH0=; b=3KQNIJE8XwMGpkX8vthWz+JvXl28JR0y1dSG+0YOhXZdk2d4Uai30peHNboMzV7vsJFCOf LBPtd1GKvcSKTktuz6oMEYmxQrzERpnw3FK9LdGh8AnfqEXAoH94qk0bLxFZEVTwVkkD+R 3o1DJ7TEgntK/P1TU/ex3keRE6xHyY4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713771793; a=rsa-sha256; cv=none; b=2peXcnx7C8NoKgcU6FGgeBqHmFwwWpzLYQ3jLVifE3m5ZDWzzm5oW79nB8TdyOlVHKzwhB tOStOOvqU5u1nzxKNgmiH3DbnONGOF3COnTXxfHrKV0zyJLZyr9/PrLZJ8hDizo1jO1kqu GWkRpLHmQOv6HmIAH3q/bnTUOGRWl8Y= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=JloEebNZ; spf=pass (imf23.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.214.174 as permitted sender) smtp.mailfrom=pizhenwei@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-1e3c3aa8938so27537995ad.1 for ; Mon, 22 Apr 2024 00:43:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1713771792; x=1714376592; 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=zrl4akKhVgEJxLJYwq5+gLRsb/mo5Xi0vTQ5EYuojH0=; b=JloEebNZTaLWg/SBl3UGoao4RgogC/3Smhg7KtEieelbPAe5/vsOfxyY0DmkQlVlYi AwlNxn6bHjl/yJfc3e08+xWqUQjgZEQjHIj5RPWTphxZ1LNKCS25yaW6ih6HX+gUNlQ/ WBIUGbPfd7dog6+EP3DiG6Fa39wA79rI9zZ1Eh9dneSRQFT3LcG0Eo20XsVd3eBwykgz mSU8twCE5uETecutKPO3e4DazNGYyDzI4JvuLgXPRgBPxh4QhCcNOyeyKcGydvJlebcA vp6XNkn3HNpTQ20BSFD11SjFqKP0p3ia1RbMwixVb9+8zGHXkG/CXhNL0Y7/GHWMlUY4 57rQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713771792; x=1714376592; 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=zrl4akKhVgEJxLJYwq5+gLRsb/mo5Xi0vTQ5EYuojH0=; b=KxRVBn2ophqk6jcXf2A/0HiF6TmPY7HxE+84RghYOVNksPFnQ2fDk5qqK0O5KHhIth oKJbg19T1Fe3UhZuSmyEh0WvMKBRgxH6pC1OoiAsXvPo4WnM/gAEOQjciKZS5sOjv1Kr d3CJOef/DGQFOhygPUJlMOiqH1OXjJvLaZ6l7iwfXxnIuGDXAPb0pKqkA6w2RyhPD98x La1RiGwV9Z0IISoPwFbqY9IVi5z5lvqf5Txj4IRiSPVW+gzeRPA3feXFq0oPSrp7Twi2 oerKxyVDgxlbseven1LE3/RlKdxTNQcOGRk0cb+G7p7AgqCJAhKDm5kfrg4VRSO1pBRs tlOA== X-Forwarded-Encrypted: i=1; AJvYcCUF/VXTSIopBmeAzfVou5NdZl8QwBVtNH8eq4l1xQOOOG/LYXwqhIGaqnH1RvsH3bWpFHTGK1xUBfzYi9W9puogA3Q= X-Gm-Message-State: AOJu0Yy9+yKL8JtBSTTRrFGQRbgVNj1VX/v1lQDcePIhDkezzPJWzbWX kOMf92foXO+932hDVd02raoMHS845JiOQLiFHbMKzG5JO3t0JZfSyfsb2Rgk7wo= X-Google-Smtp-Source: AGHT+IEc9oEJpvxbLzrOG8tkIAbOFSv29i67Gv0xrVCixugzuwunQk9IqJOdyb3sAb6X7Uc5rZD22A== X-Received: by 2002:a17:902:db07:b0:1e4:bd90:f1d4 with SMTP id m7-20020a170902db0700b001e4bd90f1d4mr11064583plx.40.1713771792141; Mon, 22 Apr 2024 00:43:12 -0700 (PDT) Received: from libai.bytedance.net ([61.213.176.11]) by smtp.gmail.com with ESMTPSA id e11-20020a170902784b00b001e0bae4490fsm7595634pln.154.2024.04.22.00.43.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 00:43:11 -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 v2 3/4] virtio_balloon: introduce memory allocation stall counter Date: Mon, 22 Apr 2024 15:42:53 +0800 Message-Id: <20240422074254.1440457-4-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240422074254.1440457-1-pizhenwei@bytedance.com> References: <20240422074254.1440457-1-pizhenwei@bytedance.com> MIME-Version: 1.0 X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 1766A140011 X-Stat-Signature: 9yf8ysbbzfoqt38amwiqi5hebb544jpc X-Rspam-User: X-HE-Tag: 1713771792-977845 X-HE-Meta: U2FsdGVkX1+9ng7STet9O0D3k4r4I0Ag9drz89cOXI2/rvMpVH4rQZ5IMuKx94MyZOrzxTXXtE4pLW0jU4boFdcUW2c+9hYKKMxp6VYLU46HO6w8E5BMEjmgaZuPWc3xUn/BlpeSsOoKueR6xilYrqpTBXdDbPjGCS/iKDIT6BineHyaNOCU3wzQEFcohJ3zQzHnm6ETLjkkQXh75FIK5LVRStnUdqXVBBj2DwXMLy/f5dwTYxbl5srA6QSYIvCgLx4/k2xnNkjiqghKbinguYXXSFSM2wZy2LkBK6pE8N6qRdNAU7aY9I3tUXSd95DVUWuzkpXz5AlkeJwuSyzkHZwJM+flpKuufxIM0rzxRlYCpBEcaNR65qfZbAP3ruf5BydesRA8cW9kKUM6qO63I+NUo4EpyuIw9FoUNyUxV+YJNphlVlW7MJXAJJKL5fjpVtGMyxAylVcmxPvCBJ9Cuhar4SdztKUBFgN0kpJxVFi8sh7Ns98qGEm0ikrw04FtHkia7m9eRMcT3xzJbS3nGCevt2AxvhVCIIvymdWztgXt+fwT0jD60SVRcmIX1qJXQZS3CdA3zodvefEZllFh0TGu1LoGt+ZcqZb1PBOXt6xNREaT8xhI2QaYaX9LBY/229CEdDjpYLkcNV47mq4su4cAz2clWeWtOlGBVceIXFGOTz4yHPDomwVQpZQ7JpBkTtParATTCNcCyo35p7iTRzRF4vLVEY7W4BTUDby7qh3qAnqUuppYyCmMUly2m3use7unX+iyYa6i/MeFRoiG+kWskm49UYjYdDM16eNcW0TUg2qxCc+JRiqbCTOKczS2uYYu5UG85+PxkVOwuVi8N0gn8ezEo8jJ0lbLVRrCWjPFTFU80BembZA+T0JnnCJ1HoWzybUPZjy0QVcuMTwoklVQvgcCWibcslJWmBVNi8jsg4fwfmqAJnw0APqpziuYDHG9laJH+tQ/DLV3gXv EnZd0yR1 jZRvKb3FDQjPCy5wJwJU7vrem5f06H4G0lA/LsofNTDU5S5lx89ipEoHMaptLYviYXsS12dccE0hSwXyMPMMW4dvm8sMR5osbcrLSRJSZIFx3lz920BRXNMyQqyN8kDiRhveibngcZ8e9fQJ8NVtHAZuSYaf2rnWTltHLngd8BQ1QMvJh7qsohMURrMFXG4+rlaXJAmr2F3zHP4zKl5fNc6CoaJHbIuUKohzxxHnqpu7drJrDKKZpDSAsHDeHpXRnxVHseyEoOaeuIjKax+cGeBBpsZym9Bm9Qwn06/pr49QTWy6f89jMkV6iCjHCCBHzdhoa0NHr8qaCSJJZ+pUS5DtA6d/qg/Y53bg3e/xag95s+crKoKU67Rty6HFcUaqcN515PXrmsPJ25hogrUg04rX0nXWcd0w5z8S6O2+BgzBv7KEZPHhKhXoLQkWr16iIxBnAQAKUqy0WKTE= 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. 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 87a1d6fa77fb..ab039e83bc6f 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -323,6 +323,8 @@ static inline unsigned int update_balloon_vm_stats(struct virtio_balloon *vb, #ifdef CONFIG_VM_EVENT_COUNTERS unsigned long events[NR_VM_EVENT_ITEMS]; unsigned int idx = start; + unsigned int zid; + unsigned long stall = 0; all_vm_events(events); update_stat(vb, idx++, VIRTIO_BALLOON_S_SWAP_IN, @@ -333,6 +335,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 Mon Apr 22 07:42:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: zhenwei pi X-Patchwork-Id: 13637846 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 97BCEC4345F for ; Mon, 22 Apr 2024 07:43:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 29C026B0095; Mon, 22 Apr 2024 03:43:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1FAC36B0098; Mon, 22 Apr 2024 03:43:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 075636B0099; Mon, 22 Apr 2024 03:43:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id DBB946B0095 for ; Mon, 22 Apr 2024 03:43:18 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 86D2CA18A4 for ; Mon, 22 Apr 2024 07:43:18 +0000 (UTC) X-FDA: 82036377276.21.9670FFA Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by imf26.hostedemail.com (Postfix) with ESMTP id BB0A214000B for ; Mon, 22 Apr 2024 07:43:16 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=PbZycXbB; spf=pass (imf26.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.214.172 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=1713771796; 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=bBFXolLQYa78XCdQIXx8hSsPDNH1h31ohatbB+q7SSA=; b=p3atDmANSB+zQ7p6kMqlQJwgmId+DrQaaSeI9cnirdd/H8wr4BH2sTSb/EPlw1dIO6cp8X 7CcBGeBZd3ZdqOgScyfBvEVKG8Yzdt50jeBSeaM7qMo6X1TkFSEzT+e9fvDI9ZCGVKWbkt ubmeg5T/RyNwGx/DL5tlpaf8rOfG6oQ= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=PbZycXbB; spf=pass (imf26.hostedemail.com: domain of pizhenwei@bytedance.com designates 209.85.214.172 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=1713771796; a=rsa-sha256; cv=none; b=GrC4pCJ3gYC2Qadu62MC6Wdsmy2FGpsb4JExRwzrLa2O4geVwMm72J7inHE71rY3HrIPI2 PJSr5wvs0HLZ40/o3RbI+n11LfvndC7xs3wHKvunzkOM5Stn8gYUq01Uv611KI8PaZ8YsA uEHytSx84iRYClcb8nj7CzM40gK8yxY= Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-1e9451d8b71so11142805ad.0 for ; Mon, 22 Apr 2024 00:43:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1713771795; x=1714376595; 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=bBFXolLQYa78XCdQIXx8hSsPDNH1h31ohatbB+q7SSA=; b=PbZycXbBzPhdLVifCq9xyW6JOroJVJCS6ZZTEpbUk08bBHkhq3sewLQ4fnIuB1Frmx Q/yxTOB7K29dAtBLUuh2KH2tGbqNJgipVfrBBA2MuYhdWY73fDtcTb9zmqBGOqnr1Vuf KihXq8lFqmzUDcQJ3WFpZQkL/GXSUdNl9vbPWLJy4fPCiKUzA2AxRUXj5VbSU8YoyGhD XmR3aILGK/gPVzd0R7POjJwykcovTzaEKlFzlo1o0DTwy6V3+rQ74qOhZErnoecHYz5b BWNC3iwmFSDTTZwyD+OKgzuPTm+zKSoPugyurZAiOpuZvMseSSymWB6un8Og8/Su/gcD mUgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713771795; x=1714376595; 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=bBFXolLQYa78XCdQIXx8hSsPDNH1h31ohatbB+q7SSA=; b=kquoL9vhPJ0sN/S7eYR2EoX2Ek3qQVQB/252yfw7Sg5fxeySBSvrssFTq8PbBYebr8 JBhZQqf83VUaJL55n6Pe9DlPafq99dMuMbv68Nov9OXFwlF37XHYn7naQp6ZdXhjasUe 2bR2JZ6zgaHfZP0WTuLk/faRQk4oB6OwuRQYA0iWEidV7JKs4cy0PqEJO/YQmhZbDX8u /k1WoQzmpWWvByacQU/TgBPt8K6FvEnoHvL2gcanDMfYKRy2coSmNPXv2HdwiXSpmwjx IPZoSHwKQJaR31oVQiFEj0ev9V0gOVao+6LlcxXacUk9M67TWOw87UmLquUsMPDRabxL NJmA== X-Forwarded-Encrypted: i=1; AJvYcCVBf2enMsq3dPVHtFe8F9w7tXcRJketfF9ft/Y+YW9WZSozfExZzrIfTSUrGTMydtVchudRZlGx8KUbf+6WPsRAhbM= X-Gm-Message-State: AOJu0Yx5zxKYEjQZFnKzSqcuRx0ov/T7rk8UNC+JA/z/mEbzM2g+2R21 XgEsXcuvCj97dSanfw0b9YbFsm7zWUPG/y5PoRfAeLW02HARYaO1q14d5e75YHY= X-Google-Smtp-Source: AGHT+IEvHT3XYAnqbJeBRBtYXwHjzJuRWUr3q0IHkM4UWpx7JR4+gVdQqRx7dbo9nSIw0pAVB8jXbw== X-Received: by 2002:a17:902:784f:b0:1e4:d548:818f with SMTP id e15-20020a170902784f00b001e4d548818fmr9126943pln.58.1713771795591; Mon, 22 Apr 2024 00:43:15 -0700 (PDT) Received: from libai.bytedance.net ([61.213.176.11]) by smtp.gmail.com with ESMTPSA id e11-20020a170902784b00b001e0bae4490fsm7595634pln.154.2024.04.22.00.43.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Apr 2024 00:43:15 -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 v2 4/4] virtio_balloon: introduce memory scan/reclaim info Date: Mon, 22 Apr 2024 15:42:54 +0800 Message-Id: <20240422074254.1440457-5-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240422074254.1440457-1-pizhenwei@bytedance.com> References: <20240422074254.1440457-1-pizhenwei@bytedance.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: BB0A214000B X-Stat-Signature: 1oadizbqfwpowjw6c774i4poa69mgazr X-Rspam-User: X-Rspamd-Server: rspam07 X-HE-Tag: 1713771796-272314 X-HE-Meta: U2FsdGVkX1/5RqkDoOvLtdgtvy/ATky30c9oLNRnAOK6oH76XZ/B+aSQTOwdGNsK++Myzlo3QSwbIfz8IGXs/iSqZJ2AOx017roiHOJGwgo+dUQCgexHnfEs29BFurdRNjnnGgzBciAWhqRWNWPUXNauv7ziu0Q6j3E07//5cU6vzHoDIUfMKHujXHqd9f/OeMekGTWR5kNxO9LR/SJ2YDkXPMMeux/9WN/D+pLOWwyfPLqZ14SbjE7iM/xc2/gMMj4BBcANtjALWl0qVNGO9svqC9mva+nVwKvCECbyyeQ/sA/d/7mGE7ipk6J2Kk0x9SAogwov1va+t5dUj4R5DjcV+nDyvj8SgctD6KrSNN+qVNiYEQn0lU/r4oqVm/+adnT3gWyhPWIa/ePERXXDUwc63BQUeflH3XF+Shqk7/wg6nVBIMa6tMBXBprbtNvZjbbHqgJl2tzifaQuAI0Or5rAKkE4sE4tE7bsSBFFoRZRq8GAwtywRwXbYnF6yMig9yAFLVFTHG73RM1Lm2nJYnArHd/HwiMuy3BXrvxUGQMsVx/NdMVi+q4j1l73BS8ul7Rr+xQvu4hAVA8K/3wb9a3Dj9mivGeU/vqAcchql36pzkKIhU5VMvqhBKdotY2IU0RNxOQQQ2EMTox6ZWhvqoDK8/M/bHHIwpq/uDEWmEVhPABXC+pA2WVgGPW0NL2Yk0l/3tG+voYCGvRQJd3BjKWzRA4uvvpbkBLU8D+ES2IU8Ehtl4bUzT31FLprLXHXS1REg8rWvQyx8ODmTex9Eg/oYUMo+F0JOeLb8UOoaS1oWKipRx3E8yt4xwDYzobT1kaydbo+rjc/XzNlovgJgyKhsXRGZ2dJ/RYC/KizmPPi471Pf/0e+aIAT6/BCKX7g+uW/GLDem/0RIckLgoI8aLNoqQbVlhM617SAc+kuMWNAf1ykSHu4mYxeZ7hK5pHIMUomg+wurf80S5YTiV /59cGqvD Almt0pM8vERezvgtkkx5h52+DYUavf8tYMSfIuYsdZDCbkJ7TjSHSKWaLWdZdzq0dribimxOEVUVmQcyrS0oYvceMGQmwsdeQ7zJtmTsC34ojDl5Y1pHv12jCamwRGqb0EYdMJ4yLmu55flAxPiKdv/Hykxc3es3Gw6jwTjnsVPUI2IEcLYEmbPjhOGYsMu9niahJOtQqqRQbTSw9nkKXoTXOCHja6qZQrF1MHwPDQFI+PZgyIN6NMj+P9KUaoIos0vbdPdmsO5gEdTr/Ohq9THHAe9qHZ8JhIQc/983Zxlnyuw1dyBetjy87sqbp1ijVgTUSL+GcGcJ7wkKa59xR+Jk8REdE8YVG8paXLaKa2l4XOMFXqg0BkAdeJye27CZwL0JiZFPnZiRYx46l2fUYf084Ix7o8gSOHi+78xRXmumjbk9zfTjju1ByL1z8v/7Nzfryt1c/Vcn8gsq0WazFW+2xSxIkrTlcEfB+bISJLaxao6Q= 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 ab039e83bc6f..e45146fde164 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c @@ -341,6 +341,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("")