Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp972000pxb; Fri, 22 Apr 2022 15:40:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyaGwZ/QtVsUd7rvrqhMrzqV8E1oei2QuyUgJWCaqpcaCxXu0dFdIdni8NEzKKQjLpnWYbY X-Received: by 2002:a17:902:b590:b0:153:a243:3331 with SMTP id a16-20020a170902b59000b00153a2433331mr6989881pls.129.1650667230104; Fri, 22 Apr 2022 15:40:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650667230; cv=none; d=google.com; s=arc-20160816; b=gbDiCYqaH1rSW8n34FCX8API5hoYfcj1XkWnfzwReRQ0+avbJQ0eIpQN8jV94xUe1m RvKP4RuE8FW6Y7tIlto0dBt3nKcSIfyzzJBAND2hTg73/yyHoD7hMAUYI1aadyjLqNEd Fn3Jh8nqGdNGxT7C9D5gOsHW5FVTtcYNVPeDxoOX9UOYo/ozEXuFZUsUzacuGo/RLUdv sBth1FQfKwbIOJCE3mPxI0yQ55GrkTIqj8vCSmqm7BCoL37bjx+VXoU0zdHb7QJ5YJWu 563/ZL5RDB5ji3s0PSfdpdCSUSNBDe37BGyshrvmJnJj3lkh93UUJqys7blAxNNIG4mD u6AQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=ko8zqzAqB5d7Fp7/0nrVZqCAzIhr0lHUR/A88GtSC5Y=; b=TM0sTxaqYXMjMBTslD/5kUdoJlrd+XkxfxcZhnJmqG8R6kVxKbv1UHh/g9ndda8qdU +jYO9479hWFFNyEVNit2/Nc1PcdmouFyywn2MQ+yMr7arIgunXMEz7V9vHNozIQSzPrR lLeQdpofiY/QCO4IhL93VXK+hq+DA7an2b8i3xr6G4UJw20j39iiZbYwc26zo+NIY49a ocMsKiZ2xgP5/aNoxNu67ZAla1Ti9eyU3HICJjBLdF0R0dnih9GgSmQY/l08kcNPOMou JgIWGAV18WLzhVaqPsmH4UgK/m79puF5Dqy4v+gAWE7dj2dyfgus47/PhqblUHUpEgvT 8ceQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="l/ioLSQ7"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id t127-20020a635f85000000b003816043ee95si9645759pgb.138.2022.04.22.15.40.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Apr 2022 15:40:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="l/ioLSQ7"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 7DFD027A1BA; Fri, 22 Apr 2022 13:28:17 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442772AbiDUXvg (ORCPT + 99 others); Thu, 21 Apr 2022 19:51:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382719AbiDUXvf (ORCPT ); Thu, 21 Apr 2022 19:51:35 -0400 Received: from mail-qk1-x72a.google.com (mail-qk1-x72a.google.com [IPv6:2607:f8b0:4864:20::72a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C358142A1E; Thu, 21 Apr 2022 16:48:44 -0700 (PDT) Received: by mail-qk1-x72a.google.com with SMTP id b68so4762427qkc.4; Thu, 21 Apr 2022 16:48:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ko8zqzAqB5d7Fp7/0nrVZqCAzIhr0lHUR/A88GtSC5Y=; b=l/ioLSQ7oxcjJ9u8NsnHiqZPtzEN+z8iGG+o0oNfhiiMiOXiAuZzcp7vQnEePNJvC+ w/1gcURYIodnzeYoD1kJKdI2E7pOPxGi1va15M8dqAY4QEBmmqVmcpHuWsi08au3mkDh hQSvOp6j2c5lKyQC0aot6CozNEgkASj6T+3gz5oT3Z9DLMzIo2+wh5KDW6bMHRJZq5j3 8X7BScCJYwqmQVMbeQqf8kAVPG5N+Hp2uAD/0tno65hdX/MDv+OFx9vWsrUvsz2Eerw8 IJuUDW+0j1gSbv3eCX+5wbbHD4egps6W+ZQ02zLqJX0fvm3ZWnmwYItO0fGtTd+oG1YT 1nhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ko8zqzAqB5d7Fp7/0nrVZqCAzIhr0lHUR/A88GtSC5Y=; b=KXOLk1ysfUZo34g3vf+QrhUy83luo3tQ5wC3qO9ZgjONLU6vYILy1/i186Pl3Ikcft qbZoqpZ3eiCU+40s912yIQ8cokWJoOy3zjjfVkbGtB371U6yQnGq3JLSRGIl2o55D5Zt HIvbU9qWQ3LyJE2qptMe6fyUcHmm+WbzKsFoXdnb4/bWODcN28/cDJy3WOgwy5lPkNuX b3pT5IcfoYV+gMNHrmaya63Vv1TFbOA3BlNqRvrikbfHXxzNriqA6jK4pt+j+YDPCOKM Gc+doEM7lXhK9ZPhybVi1U9EoU84GyCuXBIFfEwfKu/iZBQNewAKpv/QUk7lbfM5/nKi uj1w== X-Gm-Message-State: AOAM532P9JIjZXQBK0ziHU9m0cW2CDlESnrzjxhJzGjG7krkk0vLOSo4 7rcWWQCjrGj/C2Guf19RejW5ytGFtbbT X-Received: by 2002:a05:620a:4256:b0:67e:87a1:ffdd with SMTP id w22-20020a05620a425600b0067e87a1ffddmr1130019qko.647.1650584923406; Thu, 21 Apr 2022 16:48:43 -0700 (PDT) Received: from moria.home.lan (c-73-219-103-14.hsd1.vt.comcast.net. [73.219.103.14]) by smtp.gmail.com with ESMTPSA id a1-20020a05622a02c100b002f342ccc1c5sm287372qtx.72.2022.04.21.16.48.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Apr 2022 16:48:42 -0700 (PDT) From: Kent Overstreet To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Cc: Kent Overstreet , roman.gushchin@linux.dev, hannes@cmpxchg.org Subject: [PATCH 0/4] Printbufs & shrinker OOM reporting Date: Thu, 21 Apr 2022 19:48:24 -0400 Message-Id: <20220421234837.3629927-1-kent.overstreet@gmail.com> X-Mailer: git-send-email 2.35.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Debugging OOMs has been one of my sources of frustration, so this patch series is an attempt to do something about it. The first patch in the series is something I've been slowly evolving in bcachefs for years: simple heap allocated strings meant for appending to and building up structured log/error messages. They make it easy and straightforward to write pretty-printers for everything, which in turn makes good logging and error messages something that just happens naturally. We want it here because that means the reporting I'm adding to shrinkers can be used by both OOM reporting, and for the sysfs (or is it debugfs now) interface that Roman is adding. This patch series also: - adds OOM reporting on shrinkers, reporting on top 10 shrinkers (in sorted order!) - changes slab reporting to be always-on, also reporting top 10 slabs in sorted order - starts centralizing OOM reporting in mm/show_mem.c The last patch in the series is only a demonstration of how to implement the shrinker .to_text() method, since bcachefs isn't upstream yet. Kent Overstreet (4): lib/printbuf: New data structure for heap-allocated strings mm: Add a .to_text() method for shrinkers mm: Centralize & improve oom reporting in show_mem.c bcachefs: shrinker.to_text() methods fs/bcachefs/btree_cache.c | 18 ++- fs/bcachefs/btree_key_cache.c | 18 ++- include/linux/printbuf.h | 140 ++++++++++++++++++ include/linux/shrinker.h | 5 + lib/Makefile | 4 +- lib/printbuf.c | 271 ++++++++++++++++++++++++++++++++++ mm/Makefile | 2 +- mm/oom_kill.c | 23 --- {lib => mm}/show_mem.c | 14 ++ mm/slab.h | 6 +- mm/slab_common.c | 53 ++++++- mm/vmscan.c | 75 ++++++++++ 12 files changed, 587 insertions(+), 42 deletions(-) create mode 100644 include/linux/printbuf.h create mode 100644 lib/printbuf.c rename {lib => mm}/show_mem.c (78%) -- 2.35.2