Skip to main content

VsanPerfDiagnosticResult

Struct VsanPerfDiagnosticResult 

Source
pub struct VsanPerfDiagnosticResult {
    pub exception_id: String,
    pub recommendation: Option<String>,
    pub aggregation_function: Option<String>,
    pub aggregation_data: Option<VsanPerfEntityMetricCsv>,
    pub exception_data: Vec<VsanPerfEntityMetricCsv>,
}
Expand description

This data object type stores a performance diagnostic exception, relevant performance data, with a goal to help root cause a performance issue in a vSAN cluster.

A performance diagnostic exception points to a possible reason due to which the vSAN cluster may be seeing poorer performance during the queried time interval. We raise an independent performance diagnostic exception for each issue that we find, and do _not_ group similar types of performance exceptions currently. It is left to the user (such as the UI), to do the grouping.

This structure may be used only with operations rendered under /vsan.

§How to access

  • VsanPerformanceManager::get_vsan_perf_diagnosis_result()
  • VsanPerformanceManager::vsan_perf_diagnose()

Fields§

§exception_id: String

The exception Id identifying a cause of poor performance.

Use GetSupportedDiagnosticExceptions to get more details for the particular exceptionId

§recommendation: Option<String>

The recommendation message explaining what can be done to avoid this performance exception.

§aggregation_function: Option<String>

In case an aggregation is applied to raw performance service data, this field denotes the aggregation function.

Examples are: spread, max, min, sum, compare, etc. If an aggregation is not applied, this field is empty.

§aggregation_data: Option<VsanPerfEntityMetricCsv>

A time series data that identifies the result of the aggregation applied to raw data returned by performance service.

When this field is empty, it implies that no aggregation operation was performed for this exception. The entityRefId captures the unique entity type being aggregated. This could either be a single entity type, such as, capacity-disk, or it could be denoting a comparison between two entities, such as, cluster-domclient/diskgroup. The value field (VsanPerfMetricSeriesCSV) will contain the unique metricIds for which the aggregation is computed. Just like entityRefId, this could be a single metric, e.g. latencyRead, or a comparison between two metrics, such as throughputRead/iopsRead. The values field will contain the result of the aggregation operation in CSV.

§exception_data: Vec<VsanPerfEntityMetricCsv>

An array of time series data that identifies why this performance exception was raised.

When this array has multiple elements, aggregatedFunction will identify the aggregation function applied on the raw data to get the end result which identifies a performance exception. Each time series is of type VsanPerfEntityMetricCSV and is an independent cause of the performance exception. The entityRefId in VsanPerfEntityMetricCSV would refer to an entity type which is limiting performance, such as, a diskgroup. The values in VsanPerfEntityMetricCSV (VsanPerfMetricSeriesCSV) contain the metricId for which the exception was raised, and the values corresponding to the queried time.

Trait Implementations§

Source§

impl Debug for VsanPerfDiagnosticResult

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deserialize for VsanPerfDiagnosticResult

Source§

fn begin(out: &mut Option<Self>) -> &mut dyn Visitor

The only correct implementation of this method is: Read more
Source§

impl Serialize for VsanPerfDiagnosticResult

Source§

fn begin(&self) -> Fragment<'_>

Source§

impl VimObjectTrait for VsanPerfDiagnosticResult

Source§

impl DataObjectTrait for VsanPerfDiagnosticResult

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AsAny for T
where T: 'static,

Source§

fn as_any_ref<'a>(&'a self) -> &'a (dyn Any + 'static)

Cast a reference to Any trait.

Source§

fn as_any_box(self: Box<T>) -> Box<dyn Any>

Cast to a boxed reference to Any trait.

Source§

fn type_id(&self) -> TypeId

Get the underlying type identifier.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<To, T> CastInto<To> for T
where To: CastFrom<T> + ?Sized, T: 'static + ?Sized,

Source§

fn into_ref<'a>(&'a self) -> Option<&'a To>

Casts a reference to a trait object. If the cast fails, std::option::Option::None is returned.
Source§

fn into_box(self: Box<T>) -> Result<Box<To>, Box<dyn Any>>

Casts a boxed trait object to another trait object. If the cast fails, the original boxed trait object is returned in std::result::Result::Err.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,