Merge "[Pure Storage] Enhance reported performance characteristics"

This commit is contained in:
Zuul 2025-03-07 11:56:38 +00:00 committed by Gerrit Code Review
commit 28789f0dd0
4 changed files with 41 additions and 3 deletions

View File

@ -625,7 +625,10 @@ PERF_INFO = {
'write_bytes_per_sec': 2827943, 'write_bytes_per_sec': 2827943,
'time': '2015-12-17T21:50:55Z', 'time': '2015-12-17T21:50:55Z',
'usec_per_read_op': 192, 'usec_per_read_op': 192,
'queue_depth': 4, 'queue_depth': 4, # Deprecated - to be removed in 2026.1 cycle
'queue_usec_per_mirrored_write_op': 1,
'queue_usec_per_read_op': 2,
'queue_usec_per_write_op': 3,
} }
PERF_INFO_RAW = [PERF_INFO] PERF_INFO_RAW = [PERF_INFO]
@ -5136,6 +5139,11 @@ class PureVolumeUpdateStatsTestCase(PureBaseSharedDriverTestCase):
'usec_per_read_op': PERF_INFO['usec_per_read_op'], 'usec_per_read_op': PERF_INFO['usec_per_read_op'],
'usec_per_write_op': PERF_INFO['usec_per_write_op'], 'usec_per_write_op': PERF_INFO['usec_per_write_op'],
'queue_depth': PERF_INFO['queue_depth'], 'queue_depth': PERF_INFO['queue_depth'],
'queue_usec_per_mirrored_write_op': PERF_INFO[
'queue_usec_per_mirrored_write_op'
],
'queue_usec_per_read_op': PERF_INFO['queue_usec_per_read_op'],
'queue_usec_per_write_op': PERF_INFO['queue_usec_per_write_op'],
'replication_capability': 'sync', 'replication_capability': 'sync',
'replication_enabled': False, 'replication_enabled': False,
'replication_type': [], 'replication_type': [],

View File

@ -21,6 +21,7 @@ import functools
import ipaddress import ipaddress
import math import math
import re import re
import time
import uuid import uuid
import distro import distro
@ -1071,7 +1072,11 @@ class PureBaseVolumeDriver(san.SanDriver):
"""Set self._stats with relevant information.""" """Set self._stats with relevant information."""
current_array = self._get_current_array() current_array = self._get_current_array()
space_info = list(current_array.get_arrays_space().items)[0] space_info = list(current_array.get_arrays_space().items)[0]
perf_info = list(current_array.get_arrays_performance().items)[0] perf_info = list(current_array.get_arrays_performance(
end_time=int(time.time()) * 1000,
start_time=(int(time.time()) * 1000) - 30000,
resolution=30000
).items)[0]
hosts = list(current_array.get_hosts().items) hosts = list(current_array.get_hosts().items)
volumes = list(current_array.get_volumes().items) volumes = list(current_array.get_volumes().items)
snaps = list(current_array.get_volume_snapshots().items) snaps = list(current_array.get_volume_snapshots().items)
@ -1135,7 +1140,14 @@ class PureBaseVolumeDriver(san.SanDriver):
# Latency # Latency
data['usec_per_read_op'] = perf_info.usec_per_read_op data['usec_per_read_op'] = perf_info.usec_per_read_op
data['usec_per_write_op'] = perf_info.usec_per_write_op data['usec_per_write_op'] = perf_info.usec_per_write_op
# TODO: Queue depth - deprecated - remove in 2026.1 cycle
data['queue_depth'] = getattr(perf_info, 'queue_depth', 0) data['queue_depth'] = getattr(perf_info, 'queue_depth', 0)
# Detailed I/O queuieing information
data['queue_usec_per_mirrored_write_op'] = (
perf_info.queue_usec_per_mirrored_write_op)
data['queue_usec_per_read_op'] = perf_info.queue_usec_per_read_op
data['queue_usec_per_write_op'] = perf_info.queue_usec_per_write_op
# Replication # Replication
data["replication_capability"] = self._get_replication_capability() data["replication_capability"] = self._get_replication_capability()

View File

@ -361,6 +361,9 @@ A large number of metrics are reported by the volume driver which can be useful
in implementing more control over volume placement in multi-backend in implementing more control over volume placement in multi-backend
environments using the driver filter and weighter methods. environments using the driver filter and weighter methods.
Performance metrics are provided based on an average over the previous
30 seconds.
Metrics reported include, but are not limited to: Metrics reported include, but are not limited to:
.. code-block:: text .. code-block:: text
@ -378,7 +381,9 @@ Metrics reported include, but are not limited to:
output_per_sec output_per_sec
usec_per_read_op usec_per_read_op
usec_per_read_op usec_per_read_op
queue_depth queue_usec_per_mirrored_write_op
queue_usec_per_read_op
queue_usec_per_write_op
replication_type replication_type
.. note:: .. note::

View File

@ -0,0 +1,13 @@
---
features:
- |
Pure Storage: Added additional IO queueing performance characteristics
``queue_usec_per_mirrored_write_op``, ``queue_usec_per_read_op`` and
``queue_usec_per_write_op``, to array statistics used by the scheduler.
- |
Pure Storage: Changed performance metrics to report average over the previous
30 seconds, rather than using point-in-time information.
deprecations:
- |
Pure Storage: Deprecation of ``queue_depth`` performance characteristic
return by array statistics. This will be fully removed in the 2026.1 release.