From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F27803446C3 for ; Fri, 9 Jan 2026 08:31:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767947506; cv=none; b=a/PXgrBaZLTvnLzicZxGx8G2S5jU4RrBTSNmjgVElhwk2xzAXbQ6TxeA4Ph3gOffuVA/+gWziS8gUx3rwBXK9rKLsHqDiw/FlnuhLerN44stwwfhry+gzL2deMNGJ0m5IpdSTXKsEKE6SPD4JuOAsp7SfCMC3KqETr96u5AJHzs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767947506; c=relaxed/simple; bh=GTtO/f6Gg1BUQZcIDWwRLdPXbDYINj8mhDCa9OsjIT4=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=RIBehKSg/Zaj2JfhpUZOZdpFfllrWarmBoKHzaGPHB/L18Usgdp+hwaJeVstIP0Od/k9vlLW96ykAyIPjNts9hyiauUxUpvrxfNI1g/OVVsexW8WZqyPZVdVNVkggXUeeXqHX8CAupnzlreccv2n0drREo28aIP1xOLzJlCxxIU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=h5FXvsPY; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="h5FXvsPY" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2a12ebe4b74so40739265ad.0 for ; Fri, 09 Jan 2026 00:31:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767947498; x=1768552298; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=Yi575HxEPqYdzs3ik6olGUPaDRMTDb+C8GKNLy0BrpI=; b=h5FXvsPYHKqLkHD3C7cE64abRwBS0/vSZeXgW11prS/WlI2oYTA6IQ4MMjS+BMxxDn TUgvew1l+4QcfWexpJtUFn3ixFyeayTqR4mdSkmDuajQF/vzz3MGNYa5/yHYdZvNe1U5 mm1tQo9kNdfxC+qbS0c09xOt0dn6NCkkKsXddFPQduRdfwJl+EzgISQc9d8fsCpO0cEp k2wSxiVzsPErklltYZHuFzbMKtfcgSyZ6w2ZS8UziP7gOMZp9rEfhvjOYM2RRKvZwHNG RWOEfdFoVGcBp8RNmV4iDzaSl0AVauUjpWHGvablkQoaG59etHt2naRaSbwRF7rMspNz 1uFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767947498; x=1768552298; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Yi575HxEPqYdzs3ik6olGUPaDRMTDb+C8GKNLy0BrpI=; b=CfyjTIgx5+hyNV/BbQxwl3Cc1jMzn5att0Is6Noi9ndnKKPZ2Cz7aBkCEIdkmyom+6 RWfejnM+m1AdNCjAN+cLC2U1/DH/xgCgN0sTUZnrFRQXwlhNEYOD7BnyRv76n+gtC81s nAp476A1NP6XXAQZ1Xe1Z90mot9E2XhYUJDj60JjhgfuSPLh9LjP/jbi+Vg+HITpt2pH 34laQlG+M7BjEBDwBdr+SBxFD/UAf/3GpSannEmWuDnhIhx0Z/t9kPg5etEOlY3f3qgX UkvPih/3q45EyhjKomeeTZkkIkQch6zKwLpgQiC7ug6u/fo943vpmtcUT2HYEL/4bKbk a7IA== X-Forwarded-Encrypted: i=1; AJvYcCXmZJlkVSuSsgi1waOCYeLBOsuEKp4EgcxjDGWSkEtiAByIXrGj6wkgzod76tAIdx9CWwR57FK5kSZKH0A=@vger.kernel.org X-Gm-Message-State: AOJu0YzOj/677kF5/OA/+D70md3DjN5JFooDUgNrLJ33EQuHzOXVzdOe j1FxNK2J0sd8y43nLOIeDuL1/4y3DGZy7LjzH+W/ZaL3fObf4oMvkeJM X-Gm-Gg: AY/fxX6uCkeqPPLb2oh3Siwx5kE52kYD46oLprp1IeMn+ja7LLrjq9vyTgUZASQ+4TN vDd4yYo3I4SLGdq/xA0SWXcDvVdoojWgT89WS9T9tMgb+MY7uC7jFgnEoeuhM5D4tjAa/yZChcZ jPXrGxsZ6/4saBJFazfvFCyQmqLlFIQb5udTPpaN5D7YCp4f4s3gERv+0pVmlwhgYCNJaGqLxBS QBivvPIrWZeXrF90y4bQQI4Q3CxIbVb260WM728f455ytOG0qh7KDOVnmd2q6Z0vzO3NvCVgc67 wT7WjjUxHjScfyuEI0W8pD5T1vfyCnMtIrJVRmcIxSbZPt394rfEtR8iDPVRJTCq27HNHRf/dxV nyuEv6TAGjZdhr/cKPzIYZHqbBCP2HB6Us60FEa53AQ6ImR5x1xg4WP937IuxbtWzwZs+5gKj1r y7hJnY1qyxso9hNLq1weJ3htIxM0ClSB2eQ8ZGF4twpgI= X-Google-Smtp-Source: AGHT+IEA9vFPUsUgsZQ7c06U37ax/UVHT0vzORq7l720noPVJNq7+H3JQw9qKDIWz6oNqgVKYDpWaw== X-Received: by 2002:a17:903:1b68:b0:2a3:e7fe:646e with SMTP id d9443c01a7336-2a3ee413991mr93535125ad.5.1767947498187; Fri, 09 Jan 2026 00:31:38 -0800 (PST) Received: from L9HW65VV5R.bytedance.net ([101.126.56.83]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2a3e3cc793fsm99474095ad.72.2026.01.09.00.31.35 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 09 Jan 2026 00:31:37 -0800 (PST) From: Diangang Li X-Google-Original-From: Diangang Li To: axboe@kernel.dk Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, changfengnan@bytedance.com, Diangang Li Subject: [RFC 0/1] block: export windowed IO P99 latency Date: Fri, 9 Jan 2026 16:31:25 +0800 Message-Id: <20260109083126.15052-1-lidiangang@bytedance.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Production environments occasionally run into elevated tail latencies. The source can be the underlying device, but it can also be higher in the stack (filesystem contention/journaling, memory reclaim, writeback, etc.). Existing block IO statistics only provide throughput and average latency, which fail to capture the critical tail end of the latency distribution that often causes user-visible performance problems. This patch adds windowed P99 latency tracking for block IO operations, exposing the 99th percentile latency in /proc/diskstats and /sys/block//stat. System administrators can now monitor tail latency trends over time using tools like iostat, enabling quick validation or elimination of disk hardware as the source of latency issues. Implementation uses per-CPU sliced ring histograms (21 buckets, 8us..~8s range) with minimal overhead. P99 values are computed by aggregating recent 1-second slices when reading statistics, reported in microseconds using bucket midpoints. The added work on the IO path is intentionally small (bucket selection and a per-CPU counter update, with occasional per-slice reset), and in our testing it does not have a measurable impact on IO performance. Diangang Li (1): block: export windowed IO P99 latency block/blk-core.c | 5 ++- block/blk-flush.c | 6 ++- block/blk-mq.c | 5 ++- block/genhd.c | 50 ++++++++++++++++++++++++- include/linux/part_stat.h | 79 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 139 insertions(+), 6 deletions(-) -- 2.39.5