mirror of
https://github.com/rustfs/rustfs.git
synced 2026-07-26 16:28:15 +00:00
feat(get): SF07 - conditional metrics recording
Gate hot path metrics behind get_stage_metrics_enabled() to reduce overhead when metrics are not needed. Changes: - Conditional record_zero_copy_read - Conditional manager.record_disk_operation - Conditional manager.record_access - Conditional manager.record_transfer Expected impact: 20-50us reduction per GET request. Closes rustfs/backlog#772 Co-Authored-By: heihutu <heihutu@gmail.com>
This commit is contained in:
@@ -2207,11 +2207,14 @@ impl DefaultObjectUsecase {
|
|||||||
|
|
||||||
let info = reader.object_info;
|
let info = reader.object_info;
|
||||||
|
|
||||||
use rustfs_io_metrics::record_zero_copy_read;
|
|
||||||
let read_duration = read_start.elapsed();
|
let read_duration = read_start.elapsed();
|
||||||
record_zero_copy_read(info.size as usize, read_duration.as_secs_f64() * 1000.0);
|
|
||||||
|
|
||||||
manager.record_disk_operation(info.size as u64, read_duration, true).await;
|
// Conditional metrics recording to reduce overhead
|
||||||
|
if rustfs_io_metrics::get_stage_metrics_enabled() {
|
||||||
|
use rustfs_io_metrics::record_zero_copy_read;
|
||||||
|
record_zero_copy_read(info.size as usize, read_duration.as_secs_f64() * 1000.0);
|
||||||
|
manager.record_disk_operation(info.size as u64, read_duration, true).await;
|
||||||
|
}
|
||||||
|
|
||||||
check_preconditions(&req.headers, &info)?;
|
check_preconditions(&req.headers, &info)?;
|
||||||
|
|
||||||
@@ -2351,14 +2354,17 @@ impl DefaultObjectUsecase {
|
|||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
|
||||||
if let Some(range_spec) = rs
|
// Conditional metrics recording to reduce overhead
|
||||||
&& range_spec.start >= 0
|
if rustfs_io_metrics::get_stage_metrics_enabled() {
|
||||||
{
|
if let Some(range_spec) = rs
|
||||||
manager.record_access(range_spec.start as u64, response_content_length as u64);
|
&& range_spec.start >= 0
|
||||||
}
|
{
|
||||||
|
manager.record_access(range_spec.start as u64, response_content_length as u64);
|
||||||
|
}
|
||||||
|
|
||||||
if response_content_length > 0 {
|
if response_content_length > 0 {
|
||||||
manager.record_transfer(response_content_length as u64, permit_wait_duration);
|
manager.record_transfer(response_content_length as u64, permit_wait_duration);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let io_strategy =
|
let io_strategy =
|
||||||
|
|||||||
Reference in New Issue
Block a user