[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <94d62ba4-e203-408e-9200-b153ce97555d@redhat.com>
Date: Fri, 24 Oct 2025 17:32:52 +0200
From: David Hildenbrand <david@...hat.com>
To: Alex Markuze <amarkuze@...hat.com>, ceph-devel@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-mm@...ck.org
Cc: Liam.Howlett@...cle.com, akpm@...ux-foundation.org, bsegall@...gle.com,
dietmar.eggemann@....com, idryomov@...il.com, mingo@...hat.com,
juri.lelli@...hat.com, kees@...nel.org, lorenzo.stoakes@...cle.com,
mgorman@...e.de, mhocko@...e.com, rppt@...nel.org, peterz@...radead.org,
rostedt@...dmis.org, surenb@...gle.com, vschneid@...hat.com,
vincent.guittot@...aro.org, vbabka@...e.cz, xiubli@...hat.com,
Slava.Dubeyko@....com
Subject: Re: [RFC PATCH 0/5] BLOG: per-task logging contexts with Ceph
consumer
On 24.10.25 10:42, Alex Markuze wrote:
> Motivation: improve observability in production by providing subsystemsawith
> a logger that keeps up with their verbouse unstructured logs and aggregating
> logs at the process context level, akin to userspace TLS.
>
> Binary LOGging (BLOG) introduces a task-local logging context: each context
> owns a single 512 KiB fragment that cycles through “ready → in use → queued for
> readers → reset → ready” without re-entering the allocator. Writers copy the
> raw parameters they already have; readers format them later when the log is
> inspected.
>
> BLOG borrows ideas from ftrace (captureabinary data now, format later) but
> unlike ftrace there is no global ring. Each module registers its own logger,
> manages its own buffers, and keeps the state small enough for production use.
>
> To host the per-module pointers we extend `struct task_struct` with one
> additional `void *`, in line with other task extensions already in the kernel.
> Each module keeps independent batches: `alloc_batch` for contexts with
> refcount 0 and `log_batch` for contexts that have been filled and are waiting
> for readers. The batching layer and buffer management were migrated from the
> existing Ceph SAN logging code, so the behaviour is battle-tested; we simply
> made the buffer inline so every composite stays within a single 512 KiB
> allocation.
>
> The patch series lands the BLOG library first, then wires the task lifecycle,
> and finally switches Ceph’s `bout*` logging macros to BLOG so we exercise the
> new path.
>
> Patch summary:
> 1. sched, fork: wire BLOG contexts into task lifecycle
> - Adds `struct blog_tls_ctx *blog_contexts[BLOG_MAX_MODULES]` to
> `struct task_struct`.
> - Fork/exit paths initialise and recycle contexts automatically.
>
> 2. lib: introduce BLOG (Binary LOGging) subsystem
> - Adds `lib/blog/` sources and headers under `include/linux/blog/`.
> - Each composite (`struct blog_tls_pagefrag`) consists of the TLS
> metadata, the pagefrag state, and an inline buffer sized at
> `BLOG_PAGEFRAG_SIZE - sizeof(struct blog_tls_pagefrag)`.
>
> 3. ceph: add BLOG scaffolding
> - Introduces `include/linux/ceph/ceph_blog.h` and `fs/ceph/blog_client.c`.
> - Ceph registers a logger and maintains a client-ID map for the reader
> callback.
>
> 4. ceph: add BLOG debugfs support
> - Adds `fs/ceph/blog_debugfs.c` so filled contexts can be drained.
>
> 5. ceph: activate BLOG logging
> - Switches `bout*` macros to BLOG, making Ceph the first consumer.
Hi!
You CCed plenty of MM folks, and I am sure most of them observe "this
doesn't seem to touch any core-mm files" and wonder "what's hiding in
there that requires a pair of MM eyes".
Is there anything specific we should be looking at (and if so, in which
patch)?
--
Cheers
David / dhildenb
Powered by blists - more mailing lists