Automated Workload Pattern Recognition in Kubernetes: A Time Series Detection Framework for Microservice Resource Characterization | Research Square window.SnipcartSettings = { analytics: { enabled: false } }; (function() { var accessVector = localStorage.getItem('access_vector') || ''; window.dataLayer = window.dataLayer || []; if (accessVector) { window.dataLayer.push({ user: { profile: { profileInfo: { snid: accessVector } } } }); } })(); (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-K279D39R'); Browse Preprints In Review Journals COVID-19 Preprints AJE Video Bytes Research Tools Research Promotion AJE Professional Editing AJE Rubriq About Preprint Platform In Review Editorial Policies Our Team Advisory Board Help Center Sign In Submit a Preprint Cite Share Download PDF Research Article Automated Workload Pattern Recognition in Kubernetes: A Time Series Detection Framework for Microservice Resource Characterization Amirullah Amirullah, Ahmad Saikhu, Royyana Muslim Ijtihadie This is a preprint; it has not been peer reviewed by a journal. https://doi.org/ 10.21203/rs.3.rs-9189120/v1 This work is licensed under a CC BY 4.0 License Status: Under Revision Version 1 posted 17 You are reading this latest preprint version Abstract Accurate characterization of CPU workload patterns in Kubernetes microservices is essential for informed autoscaling and resource management decisions. Existing approaches predominantly apply fixed-window analysis that classifies the entire observation window as a single pattern, failing to detect transitions between workload behaviors that commonly occur in production deployments. This paper proposes an automated framework for workload pattern recognition that combines binary segmentation change point detection (CPD) with a shape-based, scale-invariant classifier. The framework identifies four fundamental patterns (SEASONAL, TREND, STABLE, and SPIKE) and their transitions, providing a quantifiable transition point estimate. All classification features are expressed as dimensionless ratios or rank-based statistics, ensuring generalizability across microservices with different CPU use baselines. The framework was evaluated across two deployment environments: a single-service pod baseline with three temporal repetitions (21 experiments) and Google Online Boutique, a multi-service application tested under two conditions (with and without the built-in load generator, 14 experiments). On the pod-baseline, the framework achieves a pure pattern accuracy of 100.0%, transition detection rate of 88.9%, overall accuracy of 95.2% ± 6.7%, and mean detection latency of 2.1 ± 0.4 minutes, significantly outperforming the three baseline methods (p = 0.0078 vs. B1, p = 0.0078 vs. B2, p = 0.0078 vs. B3; McNemar exact test, n = 21). Cross-environment validation on Online Boutique yields 57.1% accuracy under both conditions, revealing that inter-service CPU interference attenuates individual pattern signals, a finding that informs future adaptive threshold designs. Kubernetes Workload pattern recognition Change point detection Time series classification Microservices Scale-invariant features CPU resource characterization Figures Figure 1 Figure 2 Figure 3 Figure 4 Figure 5 1 Introduction Kubernetes has become the actual platform for deploying containerized microservices, managing over 330,000 production workloads across hundreds of organizations as of 2024 [ 1 ]. A core challenge in Kubernetes resource management is predicting future CPU demand accurately enough to trigger proactive horizontal pod autoscaling (HPA) before performance degradation occurs. Reactive HPA, which responds only after CPU thresholds are exceeded, consistently introduces cold-start delays of 30–120 seconds, leading to SLA violations during workload surges [ 2 , 3 ]. Predictive autoscaling addresses this limitation by forecasting future CPU consumption and scaling preemptively; recent work on auto-scaling approaches for microservices demonstrates that workload-aware scaling significantly outperforms threshold-based reactive approaches [ 25 ]. However, a critical prerequisite, often overlooked, is that no single forecasting model performs optimally across all workload behaviors. ARIMA excels on monotonic TREND workloads, SARIMA on SEASONAL workloads, and LSTM-family models on SPIKE and complex non-linear patterns [ 4 , 5 ]. Selecting the wrong model for the workload pattern can increase forecasting error by 20%–50% compared to the pattern-optimal model [ 6 ]. This motivates an automated, prior step: workload pattern recognition, which classifies the current CPU time series into a fundamental pattern category before a prediction model is selected. Despite the practical importance of workload pattern recognition, the problem remains poorly characterized in the Kubernetes context. Most existing approaches either (1) apply fixed-window statistical decomposition that cannot detect within-window pattern transitions [ 7 , 8 ], (2) rely on machine learning classifiers that require labeled training data from the target deployment environment [ 9 ], or (3) use features that implicitly assume a specific CPU utilization scale, failing when applied across microservices with different baselines, a limitation extensively documented in recent surveys on cloud workload prediction [ 10 ]. A workload pattern transition (for example, a service shifting from STABLE to SPIKE behavior as user activity increases) is precisely the scenario in which a misclassification has the highest operational cost. This paper proposes a framework for automated workload pattern recognition in Kubernetes that addresses these limitations through three design principles. First, ‘scale-invariance’: all seven classification features are dimensionless ratios, rank-based statistics, or variance ratios, ensuring that the framework operates correctly regardless of a pod’s absolute CPU utilization baseline. Second, ‘transition-awareness’: The framework applies binary segmentation change point detection (CPD) to identify structural breaks in the CPU time series before classifying each resulting segment independently, enabling the detection of pattern transitions with a quantifiable detection latency. Third, ‘calibration-free deployment’: decision thresholds are fixed from an initial calibration dataset and applied unchanged across environments. The framework classifies four fundamental workload patterns (SEASONAL, TREND, STABLE, and SPIKE) and three transition patterns (P1–P7). It was evaluated on a real Kubernetes cluster under two deployment scenarios: a single-service pod baseline (3 repetitions × 7 patterns = 21 experiments) and Google Online Boutique, a representative 11-microservice application (2 conditions × 7 patterns = 14 experiments). The main contributions of this paper are as follows: A scale-invariant, transition-aware workload pattern recognition framework for Kubernetes CPU time series based on binary segmentation CPD and a shape-based classifier with seven dimensionless features. A half_ratio feature (mean of the second half divided by the first half) disambiguates directional drift (STABLE) from genuine TREND. While this ratio form exists in time series analysis broadly, its specific application to STABLE/TREND disambiguation in Kubernetes CPU characterization is not present in catch22 [ 20 ] or related feature libraries. Comprehensive empirical evaluation on 35 experimental runs across two deployment environments, demonstrating 95.2% overall accuracy and 100% pure pattern accuracy on the primary evaluation dataset. Analysis of cross-environment generalizability failure modes, identifying inter-service CPU interference in multi-microservice deployments as a fundamental signal attenuation mechanism that sets a practical ceiling for fixed-threshold classifiers. The remainder of the paper is organized as follows. Section 2 reviews related work. Section 3 describes the proposed framework. Section 4 presents the experimental results. Section 5 discusses the findings and limitations. Section 6 concludes. 2 Related Work 2.1 Workload Characterization in the Cloud and Kubernetes Workload characterization is a foundational discipline in computer performance engineering concerned with modeling the temporal and statistical properties of computational demand. Recent work has proposed hierarchical characterization frameworks with adaptive prediction models tailored to cloud workload types [ 11 ]. In cloud computing, workload characterization has been applied to identify diurnal patterns, bursty behavior, and structural shifts in production microservice deployments [ 12 ], Alibaba cluster traces [ 13 ], and large-scale first-party workloads at Microsoft cloud platforms [ 14 ]. Jiang et al. [ 7 ] demonstrated that pattern-aware workload prediction for container-based microservices consistently outperforms pattern-agnostic approaches, confirming that workload pattern type is the primary determinant of prediction model performance. Masdari and Khoshnevis [ 6 ] surveyed workload forecasting methods and taxonomized workload patterns into periodic, trend-based, and spike patterns, noting that most forecasting models are designed for a single pattern type. For Kubernetes-specific workloads, Saxena et al. [ 4 ] conducted a comprehensive performance analysis of machine learning models for cloud workload prediction, demonstrating that the choice of model significantly impacts accuracy depending on the workload type. Toka et al. [ 2 ] developed machine learning-based scaling management for Kubernetes edge clusters, using workload classification as a pre-processing step for model selection. Mondal et al. [ 3 ] proposed LIBRA, a load prediction framework for Kubernetes that distinguishes between workload regimes for improved autoscaling. However, none of these works formally define a classification taxonomy for Kubernetes workload patterns or provide a validated, automated detection mechanism. 2.2 Change Point Detection in Time Series Change point detection (CPD) is the problem of identifying time points at which the statistical properties of a signal change abruptly [ 16 ]. The binary segmentation algorithm [ 17 ], implemented in the Python ‘ruptures’ library [ 18 ], is a widely used approach that recursively finds the most significant break in a time series segment. Truong et al. [ 18 ] provide a comprehensive review of offline CPD methods organized by cost function, search method, and constraint type. Aminikhanghahi and Cook [ 19 ] demonstrated real-time CPD for smart home time series data, illustrating the broad applicability of CPD across diverse sensing domains. Despite these advances, applying CPD specifically to Kubernetes microservice workload pattern recognition has not been previously investigated. Most existing workload analysis approaches do not employ CPD, instead treating the observation window as a single homogeneous segment [ 6 , 7 ]. This assumption fails when workload patterns transition mid-window, a common scenario in production deployments where user activity abruptly shifts. This work is the first, to our knowledge, to apply CPD as the primary segmentation step in a Kubernetes workload pattern classification framework. 2.3 Time Series Classification for Workload Analysis Time series classification methods relevant to workload analysis include feature-based approaches, distance-based approaches (e.g., dynamic time warping), and deep learning approaches. Feature-based methods extract statistical descriptors from the time series and apply a classifier, whereas distance-based methods compare time series shapes directly. Catch22 [ 20 ] extracts 22 canonical features from time series for general classification tasks, providing a comprehensive inventory of interpretable time series statistics. ROCKET [ 15 ] achieves state-of-the-art time series classification accuracy using random convolutional kernels but produces non-interpretable features incompatible with rule-based workload characterization. In the cloud workload context, frequency-domain features (FFT power, ACF peaks) and trend-strength measures have been used to characterize workload behavior [ 7 , 8 ]. Deep learning approaches, including LSTM [ 5 ], Bi-LSTM [ 21 ], and Transformer-based models [ 22 ], have been applied to workload forecasting with strong results on individual pattern types. However, these models require labeled training data from the target environment and do not provide interpretable pattern classification. The proposed framework uses a rule-based classifier on top of seven interpretable, scale-invariant features, providing both classification accuracy and decision transparency without requiring environment-specific training. 2.4 Research Gaps The existing literature reveals a clear gap: there is no validated, automated framework for workload pattern recognition in Kubernetes that is (1) scale-invariant across pods with different CPU baselines, (2) capable of detecting within-window pattern transitions, and (3) evaluated on a real Kubernetes cluster with multiple microservice environments. Fixed-window approaches cannot detect transitions [ 6 , 7 ]; supervised classifiers require labeled training data [ 4 , 9 ]; and existing scale-dependent approaches degrade when deployed across services with different utilization levels [ 10 ]. The present work addresses all three limitations. 3 Methodology This section describes the proposed framework for automated workload pattern recognition in Kubernetes microservices. The framework takes CPU usage time series data from Prometheus as input and produces a workload pattern label, either a pure pattern (SEASONAL, TREND, STABLE, or SPIKE) or a transition pattern (e.g., SEASONAL → TREND), along with a confidence score and an estimated transition point τ̂ where applicable. 3.1 Framework Overview The framework comprises four sequential modules: (1) data collection, (2) change point detection, (3) scale-invariant feature extraction, and (4) shape-based classification. Figure 1 illustrates the architecture. Scale-invariance is a key design principle: all features are dimensionless ratios, rank-based statistics, or variance ratios that are mathematically independent of absolute CPU use. Transition-awareness is the second key principle: CPD segments the time series before classification, enabling the detection of within-window pattern changes. 3.2 Experimental Environment Experiments were conducted on a Kubernetes cluster comprising one master node and two worker nodes (Ubuntu 22.04, Kubernetes v1.28), monitored via Prometheus and Grafana. Workload injection used k6 v0.49 from a Windows host. Table 1 summarizes the infrastructure. Table 1 Experimental infrastructure configuration Component Specification Role Master node Ubuntu 22.04, Kubernetes v1.28 Cluster management Worker nodes (×2) Ubuntu 22.04, 4 vCPU, 8 GB RAM Pod execution Monitoring Prometheus v2.x + Grafana Metric collection Load generator k6 v0.49 (Windows host) Workload injection Target 1: pod-baseline Single microservice (NGINX) Primary evaluation Target 2: Online Boutique Google OB, 11 microservices Cross-environment test LG: load generator; OB: online boutique. CPU usage was queried via PromQL: cpu(t) = sum(rate(container_cpu_usage_seconds_totalpod="P", container!=""[1m])). Each run lasted 60 minutes (≈ 60–65 data points). Three repetitions on different dates (10, 13, 14 March 2026) were conducted for pod-baseline; one repetition (15 March 2026) under two conditions (OB + LG and OB − LG) for Online Boutique. Total: 35 experimental runs. 3.3 Workload Pattern Definition Seven patterns cover the principal temporal behaviors in microservice deployments [ 6 , 11 ]. Four are pure patterns (P1–P4); three are transition patterns (P5–P7) with ground-truth transition point τ = 30 min. Table 2 defines each pattern. Figure 2 shows example CPU traces from the pod-baseline environment. Table 2 Workload pattern definitions and synthetic generation formulas. ID Pattern Formula Parameters P1 SEASONAL Y(t)=µ + A·sin(2πt/P)+ε(t) µ = 50 VU, A = 20, P = 12 min, σ = 2 P2 TREND Y(t)=β₀+β₁·t + ε(t) β₀=30 VU, β₁=0.5 VU/min P3 STABLE Y(t)=µ + ε(t) µ = 50 VU, σ = 2 P4 SPIKE Y(t)=µ + A·Σδ(t,tₖ)+ε(t), tₖ∈{7,14,...} µ = 20 VU, A = 50, interval = 7 min P5 SEASONAL→TREND P1 if t ≤ τ, P2 if t > τ τ = 30 min P6 STABLE→SPIKE P3 if t ≤ τ, P4 if t > τ τ = 30 min P7 TREND→SEASONAL P2 if t ≤ τ, P1 if t > τ τ = 30 min ε(t) ~ N(0,σ²). δ(t,tₖ) = 1 if t = tₖ, 0 otherwise. VU: Virtual users. τ: ground-truth transition point. 3.4 Change point detection Binary Segmentation [ 17 , 18 ] with a mean-shift cost function identifies structural breaks in the CPU time series. Given Y=(y₁,...,yₙ), the algorithm minimizes: min_{ τ } { C(Y₁: τ ) + C(Y τ ₊₁:n) + β } (1) where C(·) is the sum of squared deviations from segment mean and β = 0.10 (default) controls sensitivity. A minimum segment length of 12 minutes is enforced. Section 4.3 provides sensitivity analysis over β∈[0.02, 0.30]. 3.5 Scale-invariant feature extraction Seven scale-invariant features are extracted per segment. Table 3 summarizes each feature. Table 3 Scale-invariant features for workload pattern classification Feature Formula Scale-invariant property Role seas_str max(0,1 − Var(R)/Var(S + R)) Variance ratio ∈[0,1] SEASONAL periodicity fft_power power(f*)/Σpower(f) Spectral ratio ∈[0,1] Dominant frequency spearman |ρₛ(rank(t),rank(Y))| Rank-based ∈[0,1] TREND monotonicity trend_ratio max(ȳ_w)/min(ȳ_w) Ratio of means Mean movement half_ratio mean(Y_{n/2:n})/mean(Y_{1:n/2}) Ratio, scale-free Directional shift † skewness E[(Y − µ)³]/σ³ Standardized moment SPIKE asymmetry max_mean_ratio max(Y)/mean(Y) Ratio, scale-free SPIKE impulse height † half_ratio is a simple and interpretable feature proposed in this work. Ratio-based temporal features appear broadly in time series analysis, but none of catch22’s 22 canonical features [ 20 ] compute a direct half-window mean ratio: FC_LocalSimple fits local means to a sliding window rather than comparing fixed halves, and tsfresh’s ratio_beyond_r_sigma operates on distributional tails. The specific use of half_ratio for STABLE/TREND disambiguation in Kubernetes CPU characterization has not been previously reported. seas_str follows [ 23 ]. Spearman preferred over Pearson R² for non-linear monotonicity. max_mean_ratio threshold (1.5) calibrated from pod-baseline and validated on OB + LG (1.871) and OB − LG (1.791). 3.6 Shape-Based Pattern Classifier A hierarchical decision procedure assigns labels SEASONAL, TREND, STABLE, SPIKE to each segment. Table 4 defines the four rules. Table 4 Hierarchical decision rules of the shape-based classifier Priority Label Condition Justification 1 SPIKE skewness > 0 AND max_mean_ratio > 1.5 Zero overlap with non-SPIKE across all 35 runs. Threshold 1.5 covers all three environments. 2 SEASONAL (seas_str > 0.45 AND fft > 0.15) OR (fft > 0.25) AND spearman 1.50 AND spear ≥ 0.30 → TREND] Periodicity was confirmed by the STL variance ratio and FFT power ratio independently. 3 TREND (spearman > 0.30 AND trend_ratio > 1.20 AND |half_ratio − 1|>0.12) OR (trend_ratio > 1.50). AND spearman > 0.20) Monotonic movement with directional half ratio confirmation. 4 STABLE Fallback No dominant temporal signature. Thresholds were calibrated from pod-baseline Repetition 1 and validated unchanged on Repetitions 2–3 and both Online Boutique conditions. The complete detection pipeline is summarized in Algorithm 1 . An ablation experiment quantifies the contribution of post-processing: disabling both steps reduces overall accuracy from 95.2% to 81.0% (− 14.3 percentage points), with all three discordant cases involving the trailing-STABLE correction of P2 TREND segments. 3.7 Evaluation Protocol 3.7.1 Metrics Five metrics are reported: (1) accuracy: correctly classified datasets / total; (2) pure pattern accuracy: accuracy on P1–P4 only; (3) transition detection rate: proportion of P5–P7 where both the transition and both segment labels are correct; (4) Detection Latency (DL): |τ̂−τ| in minutes for correctly detected transitions; (5) confidence score (CS), defined as: CS = score_dominant / (score_SEASONAL + score_TREND + score_SPIKE + score_STABLE), where score_SEASONAL = (seas_str + fft_power) / 2, score_TREND = (spearman + min(trend_ratio − 1, 1)) / 2, score_SPIKE = (max(skewness, 0) + min((max_mean_ratio − 1)/2, 1)) / 2, score_STABLE = 1 − max(score_SEASONAL, score_TREND, score_SPIKE). For multi-segment outputs, CS = mean(CS_per_segment). Mean CS across 21 pod-baseline runs = 68.3% ± 13.0%. Pod-baseline results are reported as mean ± SD across three repetitions. Statistical significance vs. each baseline is assessed via McNemar’s exact binomial test [ 24 ] on n = 21 paired binary outcomes (correct/incorrect per dataset per repetition). The result is unambiguous without post-hoc power analysis: the proposed method correctly classified 20/21 cases, whereas all baselines were limited to ≤ 12/21; all 8 discordant pairs unanimously favor the proposed method (b = 8, c = 0). For completeness, under the exact binomial null distribution Bin(n_disc = 8, p = 0.5) that underlies McNemar’s test, the two-sided critical region at α = 0.05 requires b ≥ 7, which is unconditionally satisfied when b = 8, c = 0 (p = 2×(0.5)^8 = 0.0078 < α). 3.7.2 Cross-Environment Protocol The framework was applied unchanged to the Online Boutique frontend pod under two conditions: OB + LG (load generator active, simulating realistic background traffic) and OB − LG (load generator disabled, isolating k6-injected patterns). One repetition per condition was conducted (7 patterns each). The purpose of this study is to assess the generalizability boundary of the framework under a fundamentally different deployment context, not to provide statistically confirmatory evaluation. With n = 7 per condition, formal hypothesis testing would be underpowered (estimated power = 0.53 for the observed 42.9-percentage-point accuracy gap), so no McNemar test is applied to the OB results; findings are reported as exploratory evidence only. 3.8 Comparison Baselines Three baselines are evaluated on the pod-baseline dataset (21 runs): B1: Fixed-window STL + threshold: full-window STL decomposition followed by threshold rules on seas_str and spearman [ 7 ]. B2: Fixed-window ACF + FFT: full-window ACF peak values and FFT power ratios [ 8 ]. B3: Shape-based without CPD (ablation): identical to the proposed framework except that CPD is disabled, isolating the contribution of change point detection. Contemporary deep learning classifiers, such as ROCKET [ 15 ] and InceptionTime, are intentionally excluded: they require labeled training data from the target deployment environment, produce non-interpretable feature vectors incompatible with actionable workload categories, and contradict the calibration-free, interpretable design goal of this framework. The three chosen baselines represent fixed-window statistical approaches that currently dominate Kubernetes workload monitoring practice [ 7 , 8 ]. 4 Experimental Results 4.1 Pod-baseline Evaluation Table 5 reports the results for all three repetitions on the pod-baseline. The proposed framework achieves 100% accuracy in Repetitions 1 and 3 and 85.7% in Repetition 2 (one missed transition). The single failure in Repetition 2 (P7: TREND→SEASONAL) is attributable to a weaker TREND signal in that repetition’s first segment (Spearman = 0.182 vs. threshold 0.30), caused by natural variation in k6 traffic injection timing. Table 5 Per-repetition results for pod baseline (7 patterns per repetition) Metric Rep-1 Rep-2 Rep-3 Mean ± SD Accuracy 7/7 = 100% 6/7 = 85.7% 7/7 = 100% 95.2% ± 6.7% Pure pattern accuracy 4/4 = 100% 4/4 = 100% 4/4 = 100% 100.0% ± 0.0% Transition detection rate 3/3 = 100% 2/3 = 66.7% 3/3 = 100% 88.9% ± 15.7% Detection latency (min) 1.7 2.0 2.7 2.1 ± 0.4 Repetition dates: 10 March 2026 (Rep-1), 13 March 2026 (Rep-2), 14 March 2026 (Rep-3). Detection latency computed only for correctly detected transitions. Mean confidence score across all 21 runs: 68.3% ± 13.0% (formula: see Section 3.7.1 ). Pure pattern accuracy of 100.0% across all three repetitions demonstrates that the scale-invariant features and classifier correctly separate all four pure pattern types regardless of repetition-specific CPU fluctuations. This is a particularly strong result given that the same threshold values were used in all three repetitions without adjustment. 4.2 Comparison with Baseline Methods Table 6 compares the proposed framework against three baselines. Figure 3 visualizes the comparison. Table 6 Comparison of the proposed framework with three baseline methods (pod-baseline, mean ± SD) Method Accuracy PPA TDR Trans. capability B1: STL + threshold 54.0%±2.2% 91.7% 0.0% No B2: ACF + FFT 42.9%±0.0% 75.0% 0.0% No B3: Shape (no CPD) 57.1%±0.0% 100.0% 0.0% No Proposed (CPD+Shape) 95.2%±6.7% 100.0%±0.0% 88.9%±15.7% Yes PPA: pure pattern accuracy; TDR: transition detection rate; CS: confidence score (proposed only). McNemar exact binomial test [ 24 ]: proposed vs. B1: p = 0.0078; vs. B2: p = 0.0078; vs. B3: p = 0.0078 (n = 21 paired outcomes per comparison; b = 8, c = 0 in all cases). Mean CS for the proposed = 68.3% ± 13.0%. The proposed framework achieves 95.2% overall accuracy compared to 57.1%, 54.0%, and 42.9% for B3, B1, and B2, respectively. The improvement over B3 (the ablation variant without CPD) was statistically significant at p = 0.0078 (McNemar’s exact test, n = 21). Comparisons vs. B1 and B2 yield identical p-values (p = 0.0078) since all three baselines share the same 8 discordant pairs (b = 8, c = 0; McNemar’s exact test), confirming that CPD contributes substantially beyond the shape-based classifier alone. All baselines achieve 0% TDR since they operate on fixed windows without segmentation. The B3 comparison isolates the specific contribution of CPD: adding CPD to the shape-based classifier increases accuracy by 38.1 percentage points. 4.3 Sensitivity Analysis Figure 4 shows the framework accuracy as a function of the penalty parameter β over the range [0.02, 0.30] for all three repetitions. Accuracy is constant across the full range for every repetition: Rep-1 = 100% (7/7) at all values; Rep-2 = 85.7% (6/7) at all values; Rep-3 = 100% (7/7) at all values. Mean accuracy is 95.2% ± 6.7% at every sampled β, confirming that the single failure in Rep-2 (P7 TREND→SEASONAL, weak Spearman = 0.182) is independent of the penalty parameter. This robustness arises because the minimum segment length constraint (12 minutes) prevents pathological over-segmentation at small β, and the signal magnitudes in all three repetitions exceed any penalty threshold in this range. 4.4 Cross-Environment Validation Table 7 and Fig. 5 present the results for the Google Online Boutique cross-environment test. The framework achieves 4/7 = 57.1% accuracy under both OB + LG and OB − LG conditions. Notably, all four pure patterns are correctly detected under both conditions, demonstrating that the scale-invariant features generalize to the multi-service environment. The three failures are concentrated in the transition patterns (P5, P7) and P2 TREND under OB + LG. Table 7 Pattern detection results for Google Online Boutique (one repetition per condition) ID Ground Truth OB + LG OB − LG Notes P1 SEASONAL ✓ ✓ Correct in both cases P2 TREND ✗ ✓ False CPD under LG noise P3 STABLE ✓ ✓ Correct in both cases P4 SPIKE ✓ ✓ Correct in both cases P5 SEASONAL→TREND ✗ ✗ Seg2 TREND signal weak. P6 STABLE→SPIKE ✓ ✓ Correct in both cases P7 TREND→SEASONAL ✗ ✗ CPD at t = 13 (outlier t = 11) Total 4/7 = 57.1% 4/7 = 57.1% Consistent across conditions ✓: correctly detected; ✗: misclassified. OB + LG: Online Boutique with load generator active. OB − LG: load generator disabled. 5 Discussion 5.1 Framework effectiveness and scale-invariance The 100% pure pattern accuracy across all three repetitions and both Online Boutique conditions is the most significant finding of this evaluation. It demonstrates that the seven scale-invariant features collectively provide sufficient discriminative power to separate the four fundamental workload pattern types regardless of CPU utilization scale (pod-baseline mean ≈ 0.014 cores vs. Online Boutique mean ≈ 0.22 cores, a 15× difference). The Spearman rank correlation for TREND and the skewness-max_mean_ratio combination for SPIKE show zero interclass overlap across all 35 experimental runs, confirming the theoretical basis of the scale-invariance design. The McNemar test result (p = 0.0078 for proposed vs. B3) confirms that CPD contributes significantly beyond the shape-based classifier alone. The B3 comparison is particularly important because it has identical features and classifier rules; the only difference is the presence of CPD. This controlled ablation demonstrates that the 38.1 percentage point accuracy improvement is attributable specifically to the ability to segment the time series before classification, not to the features or thresholds. 5.2 Cross-environment Failure Modes The 57.1% accuracy on Online Boutique, consistent across both LG conditions, reveals an important fundamental limitation of fixed-threshold, rule-based classifiers when applied to multi-service environments. Three failure modes were identified through a detailed analysis: Signal attenuation in TREND segments: The Online Boutique frontend pod receives CPU load from 10 downstream microservices, creating high-frequency oscillations (fft_power ≈ 18% higher than pod-baseline) that interfere with TREND detection. The Spearman correlation for TREND segments under OB averages 0.160 vs. 0.550 for pod-baseline, well below the 0.30 threshold. False change point from pod events: Dataset P7 contains an outlier at t = 11 (0.023 cores, vs. segment mean of 0.176), likely caused by a brief pod event or scheduling pause. This outlier causes CPD to detect a spurious change point at t = 13 instead of the ground truth at t = 30, producing an incorrect TREND→STABLE output rather than TREND→SEASONAL. Transition SEASONAL→TREND: the TREND segment after transition (t = 31–61) has mean_ratio = 1.285, below the 1.50 threshold for the secondary TREND rule because the multi-service CPU load levels off quickly due to buffering in downstream services. The consistency of 57.1% accuracy between OB + LG and OB − LG conditions is particularly informative: it demonstrates that the performance limitation is not due to load generator traffic but rather to the inherent characteristic of multi-microservice CPU coupling. This finding has implications for future work on adaptive threshold calibration. 5.3 Practical Implications The proposed framework is most directly applicable as a preprocessing step in predictive autoscaling pipelines. By classifying the current workload pattern, the framework enables the selection of the pattern-optimal prediction model (for example, SARIMA for SEASONAL, LSTM for SPIKE, and ARIMA for TREND patterns) [ 4 , 5 , 6 ]. On pod-baseline workloads, the 95.2% classification accuracy directly translates to model selection accuracy; on multi-microservice workloads, the 57.1% accuracy reflects the practical performance ceiling of a calibration-free, fixed-threshold approach. For production deployment, we recommend using the framework as-is for single-service pods and incorporating environment-specific threshold calibration for multi-service applications. The 2.1-minute mean detection latency for pattern transitions is acceptable for most autoscaling contexts where the minimum scaling response time is 30–120 seconds. The sensitivity analysis demonstrates that the framework is robust to β variation across a 15-fold range (0.02–0.30), eliminating the need for hyperparameter tuning in deployment. 5.4 Limitations and Future Work This study has several limitations. First, the experimental evaluation uses synthetic workload patterns injected via k6, which may not capture all real-world workload characteristics, including long-range dependencies and non-stationary behavior. Future work should evaluate the framework on real production traces, such as the Alibaba cluster trace [ 13 ] or Google cluster data [ 12 ]. Second, the framework is evaluated on CPU usage only; memory, network, and I/O patterns may provide complementary classification signals. Third, the fixed-threshold design limits generalizability to multi-microservice environments, as demonstrated by the 57.1% OB accuracy. An adaptive threshold mechanism that estimates environment-specific scaling factors from initial observations (analogous to normalization by median absolute deviation) is a promising direction. Future work also includes extending the framework to real-time (online) operation, where only a partial time window is available at classification time, and integrating the pattern classifier with the downstream prediction model selection step to evaluate end-to-end forecasting accuracy improvement. 6 Conclusion This paper presents an automated workload pattern recognition framework for Kubernetes microservices that combines binary segmentation change point detection with a shape-based, scale-invariant classifier. The framework addresses three key limitations of existing approaches: dependence on absolute CPU scale, inability to detect within-window pattern transitions, and requirement for environment-specific training data. On the primary evaluation dataset (pod-baseline, 21 experiments over three temporal repetitions), the framework achieves 95.2% overall accuracy, 100.0% pure pattern accuracy, 88.9% transition detection rate, and 2.1-minute mean detection latency, significantly outperforming three baseline methods, including an ablation variant without CPD (p = 0.0078, McNemar test). Cross-environment validation on Google Online Boutique (35 total experiments across two conditions) demonstrates 100% pure pattern accuracy but 57.1% overall accuracy, revealing that inter-service CPU coupling in multi-microservice applications attenuates individual pod pattern signals, a limitation that defines a practical ceiling for fixed-threshold classifiers and motivates adaptive threshold designs as future work. The framework is publicly available as a Python implementation with documented APIs and reproducible experimental data, supporting integration into Kubernetes autoscaling pipelines as a preprocessing step for prediction model selection. Abbreviations ACF Autocorrelation Function CPD Change Point Detection CPU Central Processing Unit FFT Fast Fourier Transform HPA Horizontal Pod Autoscaler K8s Kubernetes LG Load Generator MAD Median Absolute Deviation OB Online Boutique PPA Pure Pattern Accuracy PromQL Prometheus Query Language STL Seasonal-Trend decomposition using Loess TDR Transition Detection Rate VU Virtual Users. Declarations Availability of data and materials The datasets (35 experimental CPU time series), k6 load testing scripts, synthetic workload CSV files, and framework source code (detect.py) will be deposited in a public repository upon acceptance. The framework is implemented in Python 3. x under an open-source license. Competing interests The authors declare that they have no competing interests. Funding This work was supported in part by the Indonesian Education Scholarship [Beasiswa Pendidikan Indonesia (BPI)], in part by the Center for Higher Education Funding and Assessment [Pusat Pendanaan dan Asesmen Pendidikan Tinggi (PPAPT)], and in part by the Indonesian Endowment Fund for Education [Lembaga Pengelola Dana Pendidikan (LPDP)]. Authors' contributions A: Conceptualization, methodology, software, experiments, data analysis, and writing: original draft and revision. AS: Supervision, conceptual guidance, and writing: review and editing. RMI: Co-supervision, writing: review, and editing. All authors approved the final manuscript. Acknowledgements The authors gratefully acknowledge the Indonesian Education Scholarship (BPI) for supporting the first author's doctoral study and publication. Ethics approval and consent to participate Not applicable. Consent for publication Not applicable. References Fairwinds (2024) 2024 Kubernetes Benchmark Report. Cloud Native Computing Foundation. https://www.cncf.io/blog/2024/01/26/2024-kubernetes-benchmark-report . Accessed March 16, 2026 Toka L, Dobreff G, Fodor B, Sonkoly B (2021) Machine learning-based scaling management for Kubernetes edge clusters. IEEE Trans Netw Serv Manage 18(1):958–972. 10.1109/TNSM.2021.3052837 Mondal SK, Wu X, Kabir HMD, Dai HN, Ni K, Yuan H, Wang T (2023) Toward optimal load prediction and customizable autoscaling scheme for Kubernetes. Mathematics 11(12):2675. 10.3390/math11122675 Saxena D, Kumar J, Singh AK, Schmid S (2023) Performance analysis of machine learning centered workload prediction models for cloud. IEEE Trans Parallel Distrib Syst 34(4):1313–1330. 10.1109/TPDS.2023.3240567 Yan M, Liang X, Lu Z, Wu J, Zhang W (2021) HANSEL: adaptive horizontal scaling of microservices using Bi-LSTM. Appl Soft Comput 105:107216. 10.1016/j.asoc.2021.107216 Masdari M, Khoshnevis A (2020) A survey and classification of the workload forecasting methods in cloud computing. Cluster Comput 23(4):2399–2424. 10.1007/s10586-019-03010-3 Jiang Y, Hwang CS, Liu Z (2022) Pattern-aware workload prediction for container-based microservices. IEEE Trans Serv Comput 15(4):1612–1625. 10.1109/TSC.2020.3036316 Bi J, Ma H, Yuan H, Zhang J (2023) Accurate prediction of workloads and resources with multi-head attention and hybrid LSTM for cloud data centers. IEEE Trans Sustain Comput 8(3):375–384. 10.1109/TSUSC.2023.3259522 Shallaw MA, Kecskemeti G (2023) Cloud workload categorization using data preprocessing and clustering techniques. In: Proc. IEEE/ACM UCC 2023. ACM, New York. 10.1145/3603166.3632131 Feng B, Ding Z (2025) Application-oriented cloud workload prediction: a survey and new perspectives. Tsinghua Sci Technol 30(1):34–54. 10.26599/TST.2024.9010024 Seshadri K, Sindhu K, Bhattu SN, Kollengode C (2024) Design and evaluation of a hierarchical characterization and adaptive prediction model for cloud workloads. IEEE Trans Cloud Comput 12(2):712–724. 10.1109/TCC.2024.3393114 Luo S, Xu H, Lu C, Ye K, Xu G, Zhang L, He J, Xu C (2022) An in-depth study of microservice call graph and runtime performance. IEEE Trans Parallel Distrib Syst 33(12):3906–3921. 10.1109/TPDS.2022.3160799 Luo S, Xu H, Lu C, Ye K, Xu G, Zhang L, Ding Y, He J, Xu C Characterizing microservice dependency and performance: Alibaba trace analysis. In: Proc. ACM SoCC 2021. ACM, Seattle WA (2021) 10.1145/3472883.3486974 Parayil A, Khemka B, Kunjir M, Gupta S, Ramjee R, Bansal S (2025) Toward cloud efficiency with large-scale workload characterization. In: Proc. ACM/SPEC ICPE 2025. ACM, New York. 10.1145/3676151.3722008 Dempster A, Petitjean F, Webb GI (2020) ROCKET: exceptionally fast and accurate time series classification using random convolutional kernels. Data Min Knowl Discov 34(5):1454–1495. 10.1007/s10618-020-00701-z Page ES (1954) Continuous inspection schemes. Biometrika 41(1/2):100–115. 10.1093/biomet/41.1-2.100 Bai J (1997) Estimating multiple breaks separately. Econom Theory 13(3):315–352. 10.1017/S0266466600005831 Truong C, Oudre L, Vayatis N (2020) Selective review of offline change point detection methods. Signal Process 167:107299. 10.1016/j.sigpro.2019.107299 Aminikhanghahi S, Wang T, Cook DJ (2019) Real-time change point detection with application to smart home time series data. IEEE Trans Knowl Data Eng 31(5):1010–1023. 10.1109/TKDE.2018.2850347 Lubba CH, Sethi SS, Knaute P, Schultz SR, Fulcher BD, Jones NS (2019) catch22: Canonical time-series CHaracteristics. Data Min Knowl Discov 33(6):1821–1852. 10.1007/s10618-019-00647-x Hochreiter S, Schmidhuber J (1997) Long short-term memory. Neural Comput 9(8):1735–1780. 10.1162/neco.1997.9.8.1735 Wen Q, Zhou T, Zhang C, Chen W, Ma Z, Yan J, Sun L (2023) Transformers in time series: a survey. In: Proc. IJCAI 2023. pp 6778–6786. 10.24963/ijcai.2023/759 Hyndman RJ, Athanasopoulos G (2021) Forecasting: Principles and Practice, 3rd edn. OTexts, Melbourne. https://otexts.com/fpp3/ . Accessed March 16, 2026 McNemar Q (1947) Note on the sampling error of the difference between correlated proportions or percentages. Psychometrika 12(2):153–157. 10.1007/BF02295996 ZargarAzad M, Ashtiani M (2023) An auto-scaling approach for microservices in cloud computing environments. J Grid Comput 21(4):73. 10.1007/s10723-023-09713-7 Additional Declarations No competing interests reported. Cite Share Download PDF Status: Under Revision Version 1 posted Editorial decision: Revision requested 13 Apr, 2026 Reviewers agreed at journal 09 Apr, 2026 Reviewers agreed at journal 09 Apr, 2026 Reviewers agreed at journal 08 Apr, 2026 Reviewers agreed at journal 08 Apr, 2026 Reviews received at journal 07 Apr, 2026 Reviewers agreed at journal 07 Apr, 2026 Reviewers agreed at journal 07 Apr, 2026 Reviews received at journal 01 Apr, 2026 Reviews received at journal 28 Mar, 2026 Reviewers agreed at journal 28 Mar, 2026 Reviewers agreed at journal 26 Mar, 2026 Reviewers agreed at journal 26 Mar, 2026 Reviewers invited by journal 26 Mar, 2026 Editor assigned by journal 26 Mar, 2026 Submission checks completed at journal 25 Mar, 2026 First submitted to journal 22 Mar, 2026 You are reading this latest preprint version Research Square lets you share your work early, gain feedback from the community, and start making changes to your manuscript prior to peer review in a journal. As a division of Research Square Company, we’re committed to making research communication faster, fairer, and more useful. We do this by developing innovative software and high quality services for the global research community. Our growing team is made up of researchers and industry professionals working together to solve the most critical problems facing scientific publishing. Also discoverable on Platform About Our Team In Review Editorial Policies Advisory Board Help Center Resources Author Services Accessibility API Access RSS feed Manage Cookie Preferences © Research Square 2026 | ISSN 2693-5015 (online) Privacy Policy Terms of Service Do Not Sell My Personal Information {"props":{"pageProps":{"initialData":{"identity":"rs-9189120","acceptedTermsAndConditions":true,"allowDirectSubmit":false,"archivedVersions":[],"articleType":"Research Article","associatedPublications":[],"authors":[{"id":612783140,"identity":"6867fd36-2793-4d2a-a91d-3bfafd5403a1","order_by":0,"name":"Amirullah Amirullah","email":"","orcid":"","institution":"Institut Teknologi Sepuluh Nopember","correspondingAuthor":false,"prefix":"","firstName":"Amirullah","middleName":"","lastName":"Amirullah","suffix":""},{"id":612783141,"identity":"3a9ca481-0eb9-442b-9ea1-0a9eeca5e4b3","order_by":1,"name":"Ahmad Saikhu","email":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAAyAQMAAABI0h/eAAAABlBMVEX///8AAABVwtN+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAu0lEQVRIiWNgGAWjYFACxmZmBgYbHihPgrGBSC1pPDwkaGFgBmo5zACzhrAW+fbDzcaFbedl7PkPMH74wWAhS1CLwZnE5uSZbbd5eCQSmCV7GCSMCWthSGw+zAvWwsAgDfRLImGH9T8EaTnHw8N/gPk3UVoYbgAdxtt2ABhiCWzE2WJw42GzMc+5ZB6eG4ltlj0GRPhFvj/9sTRPmZ09e//hwzd+VNQRDjEkAIoRAxLUj4JRMApGwSjADQBXxTPAh4tT/AAAAABJRU5ErkJggg==","orcid":"","institution":"Institut Teknologi Sepuluh Nopember","correspondingAuthor":true,"prefix":"","firstName":"Ahmad","middleName":"","lastName":"Saikhu","suffix":""},{"id":612783142,"identity":"f92179a2-8c44-4ca0-8733-4779b44bd771","order_by":2,"name":"Royyana Muslim Ijtihadie","email":"","orcid":"","institution":"Institut Teknologi Sepuluh Nopember","correspondingAuthor":false,"prefix":"","firstName":"Royyana","middleName":"Muslim","lastName":"Ijtihadie","suffix":""}],"badges":[],"createdAt":"2026-03-22 05:08:12","currentVersionCode":1,"declarations":"","doi":"10.21203/rs.3.rs-9189120/v1","doiUrl":"https://doi.org/10.21203/rs.3.rs-9189120/v1","draftVersion":[],"editorialEvents":[],"editorialNote":"","failedWorkflow":false,"files":[{"id":105555165,"identity":"b6a1a725-4eda-4d7c-b3b7-586c9abcb00b","added_by":"auto","created_at":"2026-03-27 10:53:08","extension":"png","order_by":1,"title":"Figure 1","display":"","copyAsset":false,"role":"figure","size":156456,"visible":true,"origin":"","legend":"\u003cp\u003eFramework architecture: four sequential processing modules from raw CPU time series to pattern label output.\u003c/p\u003e","description":"","filename":"1.png","url":"https://assets-eu.researchsquare.com/files/rs-9189120/v1/ad44c76974fdb54cc2ebdc78.png"},{"id":105555168,"identity":"472fb0c4-ed7f-4abf-968d-c4f10dfb8d51","added_by":"auto","created_at":"2026-03-27 10:53:09","extension":"png","order_by":2,"title":"Figure 2","display":"","copyAsset":false,"role":"figure","size":224753,"visible":true,"origin":"","legend":"\u003cp\u003eCPU usage time series for all seven workload patterns (pod-baseline, Repetition 3). Dashed vertical lines mark ground-truth transition points τ=30 min (P5–P7).\u003c/p\u003e","description":"","filename":"2.png","url":"https://assets-eu.researchsquare.com/files/rs-9189120/v1/381b17a27ce74d867c87fdc4.png"},{"id":105555164,"identity":"1991c53d-b47f-42c8-9fa6-2e56cc5133ca","added_by":"auto","created_at":"2026-03-27 10:53:08","extension":"png","order_by":3,"title":"Figure 3","display":"","copyAsset":false,"role":"figure","size":70616,"visible":true,"origin":"","legend":"\u003cp\u003eAccuracy comparison: proposed framework vs. three baseline methods. Error bars show standard deviation across three repetitions. All three baselines achieve 0% transition detection rate by design (no CPD).\u003c/p\u003e","description":"","filename":"3.png","url":"https://assets-eu.researchsquare.com/files/rs-9189120/v1/d011589530869501b9c629de.png"},{"id":105555166,"identity":"c7178b67-b3b1-443f-9635-bad0d8c4f5d1","added_by":"auto","created_at":"2026-03-27 10:53:08","extension":"png","order_by":4,"title":"Figure 4","display":"","copyAsset":false,"role":"figure","size":91672,"visible":true,"origin":"","legend":"\u003cp\u003eFramework accuracy as a function of CPD penalty parameter β across all three repetitions. Rep-1 and Rep-3 achieve 100% at every sampled β; Rep-2 achieves 85.7% at every sampled β (the single failure is independent of β). Mean ± SD across repetitions is 95.2% ± 6.7% throughout β∈[0.02, 0.30]. Default value β=0.10 is marked with a dashed line.\u003c/p\u003e","description":"","filename":"4.png","url":"https://assets-eu.researchsquare.com/files/rs-9189120/v1/eaa94f1bfa5c46e7e486d722.png"},{"id":105555167,"identity":"e6baa3de-0aff-46da-b9d3-d1e17ce0ff66","added_by":"auto","created_at":"2026-03-27 10:53:09","extension":"png","order_by":5,"title":"Figure 5","display":"","copyAsset":false,"role":"figure","size":81343,"visible":true,"origin":"","legend":"\u003cp\u003ePattern detection results across the three deployment environments. Filled bars indicate correct detection; empty bars indicate misclassification. Pod-baseline and both OB conditions show identical pure pattern accuracy (100%); degradation is limited to transition patterns under OB.\u003c/p\u003e","description":"","filename":"5.png","url":"https://assets-eu.researchsquare.com/files/rs-9189120/v1/2409a4589e50c956aefee3f7.png"},{"id":105566424,"identity":"66bbd155-c2f3-43fd-a277-97892c956036","added_by":"auto","created_at":"2026-03-27 12:56:25","extension":"pdf","order_by":0,"title":"","display":"","copyAsset":false,"role":"manuscript-pdf","size":1813763,"visible":true,"origin":"","legend":"","description":"","filename":"manuscript.pdf","url":"https://assets-eu.researchsquare.com/files/rs-9189120/v1/75588839-f63d-4d35-b918-b0c3fe9b55b1.pdf"}],"financialInterests":"No competing interests reported.","formattedTitle":"Automated Workload Pattern Recognition in Kubernetes: A Time Series Detection Framework for Microservice Resource Characterization","fulltext":[{"header":"1 Introduction","content":"\u003cp\u003eKubernetes has become the actual platform for deploying containerized microservices, managing over 330,000 production workloads across hundreds of organizations as of 2024 [\u003cspan citationid=\"CR1\" class=\"CitationRef\"\u003e1\u003c/span\u003e]. A core challenge in Kubernetes resource management is predicting future CPU demand accurately enough to trigger proactive horizontal pod autoscaling (HPA) before performance degradation occurs. Reactive HPA, which responds only after CPU thresholds are exceeded, consistently introduces cold-start delays of 30\u0026ndash;120 seconds, leading to SLA violations during workload surges [\u003cspan citationid=\"CR2\" class=\"CitationRef\"\u003e2\u003c/span\u003e, \u003cspan citationid=\"CR3\" class=\"CitationRef\"\u003e3\u003c/span\u003e].\u003c/p\u003e \u003cp\u003ePredictive autoscaling addresses this limitation by forecasting future CPU consumption and scaling preemptively; recent work on auto-scaling approaches for microservices demonstrates that workload-aware scaling significantly outperforms threshold-based reactive approaches [\u003cspan citationid=\"CR25\" class=\"CitationRef\"\u003e25\u003c/span\u003e]. However, a critical prerequisite, often overlooked, is that no single forecasting model performs optimally across all workload behaviors. ARIMA excels on monotonic TREND workloads, SARIMA on SEASONAL workloads, and LSTM-family models on SPIKE and complex non-linear patterns [\u003cspan citationid=\"CR4\" class=\"CitationRef\"\u003e4\u003c/span\u003e, \u003cspan citationid=\"CR5\" class=\"CitationRef\"\u003e5\u003c/span\u003e]. Selecting the wrong model for the workload pattern can increase forecasting error by 20%\u0026ndash;50% compared to the pattern-optimal model [\u003cspan citationid=\"CR6\" class=\"CitationRef\"\u003e6\u003c/span\u003e]. This motivates an automated, prior step: workload pattern recognition, which classifies the current CPU time series into a fundamental pattern category before a prediction model is selected.\u003c/p\u003e \u003cp\u003eDespite the practical importance of workload pattern recognition, the problem remains poorly characterized in the Kubernetes context. Most existing approaches either (1) apply fixed-window statistical decomposition that cannot detect within-window pattern transitions [\u003cspan citationid=\"CR7\" class=\"CitationRef\"\u003e7\u003c/span\u003e, \u003cspan citationid=\"CR8\" class=\"CitationRef\"\u003e8\u003c/span\u003e], (2) rely on machine learning classifiers that require labeled training data from the target deployment environment [\u003cspan citationid=\"CR9\" class=\"CitationRef\"\u003e9\u003c/span\u003e], or (3) use features that implicitly assume a specific CPU utilization scale, failing when applied across microservices with different baselines, a limitation extensively documented in recent surveys on cloud workload prediction [\u003cspan citationid=\"CR10\" class=\"CitationRef\"\u003e10\u003c/span\u003e]. A workload pattern transition (for example, a service shifting from STABLE to SPIKE behavior as user activity increases) is precisely the scenario in which a misclassification has the highest operational cost.\u003c/p\u003e \u003cp\u003eThis paper proposes a framework for automated workload pattern recognition in Kubernetes that addresses these limitations through three design principles. First, \u0026lsquo;scale-invariance\u0026rsquo;: all seven classification features are dimensionless ratios, rank-based statistics, or variance ratios, ensuring that the framework operates correctly regardless of a pod\u0026rsquo;s absolute CPU utilization baseline. Second, \u0026lsquo;transition-awareness\u0026rsquo;: The framework applies binary segmentation change point detection (CPD) to identify structural breaks in the CPU time series before classifying each resulting segment independently, enabling the detection of pattern transitions with a quantifiable detection latency. Third, \u0026lsquo;calibration-free deployment\u0026rsquo;: decision thresholds are fixed from an initial calibration dataset and applied unchanged across environments.\u003c/p\u003e \u003cp\u003eThe framework classifies four fundamental workload patterns (SEASONAL, TREND, STABLE, and SPIKE) and three transition patterns (P1\u0026ndash;P7). It was evaluated on a real Kubernetes cluster under two deployment scenarios: a single-service pod baseline (3 repetitions \u0026times; 7 patterns\u0026thinsp;=\u0026thinsp;21 experiments) and Google Online Boutique, a representative 11-microservice application (2 conditions \u0026times; 7 patterns\u0026thinsp;=\u0026thinsp;14 experiments).\u003c/p\u003e \u003cp\u003eThe main contributions of this paper are as follows:\u003c/p\u003e \u003cp\u003e \u003cul\u003e \u003cli\u003e \u003cp\u003eA scale-invariant, transition-aware workload pattern recognition framework for Kubernetes CPU time series based on binary segmentation CPD and a shape-based classifier with seven dimensionless features.\u003c/p\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eA half_ratio feature (mean of the second half divided by the first half) disambiguates directional drift (STABLE) from genuine TREND. While this ratio form exists in time series analysis broadly, its specific application to STABLE/TREND disambiguation in Kubernetes CPU characterization is not present in catch22 [\u003cspan citationid=\"CR20\" class=\"CitationRef\"\u003e20\u003c/span\u003e] or related feature libraries.\u003c/p\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eComprehensive empirical evaluation on 35 experimental runs across two deployment environments, demonstrating 95.2% overall accuracy and 100% pure pattern accuracy on the primary evaluation dataset.\u003c/p\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eAnalysis of cross-environment generalizability failure modes, identifying inter-service CPU interference in multi-microservice deployments as a fundamental signal attenuation mechanism that sets a practical ceiling for fixed-threshold classifiers.\u003c/p\u003e \u003c/li\u003e \u003c/ul\u003e \u003c/p\u003e \u003cp\u003eThe remainder of the paper is organized as follows. Section \u003cspan refid=\"Sec2\" class=\"InternalRef\"\u003e2\u003c/span\u003e reviews related work. Section \u003cspan refid=\"Sec7\" class=\"InternalRef\"\u003e3\u003c/span\u003e describes the proposed framework. Section \u003cspan refid=\"Sec17\" class=\"InternalRef\"\u003e4\u003c/span\u003e presents the experimental results. Section \u003cspan refid=\"Sec18\" class=\"InternalRef\"\u003e5\u003c/span\u003e discusses the findings and limitations. Section \u003cspan refid=\"Sec19\" class=\"InternalRef\"\u003e6\u003c/span\u003e concludes.\u003c/p\u003e"},{"header":"2 Related Work","content":"\u003cdiv id=\"Sec3\" class=\"Section2\"\u003e \u003ch2\u003e2.1 Workload Characterization in the Cloud and Kubernetes\u003c/h2\u003e \u003cp\u003eWorkload characterization is a foundational discipline in computer performance engineering concerned with modeling the temporal and statistical properties of computational demand. Recent work has proposed hierarchical characterization frameworks with adaptive prediction models tailored to cloud workload types [\u003cspan citationid=\"CR11\" class=\"CitationRef\"\u003e11\u003c/span\u003e]. In cloud computing, workload characterization has been applied to identify diurnal patterns, bursty behavior, and structural shifts in production microservice deployments [\u003cspan citationid=\"CR12\" class=\"CitationRef\"\u003e12\u003c/span\u003e], Alibaba cluster traces [\u003cspan citationid=\"CR13\" class=\"CitationRef\"\u003e13\u003c/span\u003e], and large-scale first-party workloads at Microsoft cloud platforms [\u003cspan citationid=\"CR14\" class=\"CitationRef\"\u003e14\u003c/span\u003e]. Jiang et al. [\u003cspan citationid=\"CR7\" class=\"CitationRef\"\u003e7\u003c/span\u003e] demonstrated that pattern-aware workload prediction for container-based microservices consistently outperforms pattern-agnostic approaches, confirming that workload pattern type is the primary determinant of prediction model performance. Masdari and Khoshnevis [\u003cspan citationid=\"CR6\" class=\"CitationRef\"\u003e6\u003c/span\u003e] surveyed workload forecasting methods and taxonomized workload patterns into periodic, trend-based, and spike patterns, noting that most forecasting models are designed for a single pattern type.\u003c/p\u003e \u003cp\u003eFor Kubernetes-specific workloads, Saxena et al. [\u003cspan citationid=\"CR4\" class=\"CitationRef\"\u003e4\u003c/span\u003e] conducted a comprehensive performance analysis of machine learning models for cloud workload prediction, demonstrating that the choice of model significantly impacts accuracy depending on the workload type. Toka et al. [\u003cspan citationid=\"CR2\" class=\"CitationRef\"\u003e2\u003c/span\u003e] developed machine learning-based scaling management for Kubernetes edge clusters, using workload classification as a pre-processing step for model selection. Mondal et al. [\u003cspan citationid=\"CR3\" class=\"CitationRef\"\u003e3\u003c/span\u003e] proposed LIBRA, a load prediction framework for Kubernetes that distinguishes between workload regimes for improved autoscaling. However, none of these works formally define a classification taxonomy for Kubernetes workload patterns or provide a validated, automated detection mechanism.\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec4\" class=\"Section2\"\u003e \u003ch2\u003e2.2 Change Point Detection in Time Series\u003c/h2\u003e \u003cp\u003eChange point detection (CPD) is the problem of identifying time points at which the statistical properties of a signal change abruptly [\u003cspan citationid=\"CR16\" class=\"CitationRef\"\u003e16\u003c/span\u003e]. The binary segmentation algorithm [\u003cspan citationid=\"CR17\" class=\"CitationRef\"\u003e17\u003c/span\u003e], implemented in the Python \u0026lsquo;ruptures\u0026rsquo; library [\u003cspan citationid=\"CR18\" class=\"CitationRef\"\u003e18\u003c/span\u003e], is a widely used approach that recursively finds the most significant break in a time series segment. Truong et al. [\u003cspan citationid=\"CR18\" class=\"CitationRef\"\u003e18\u003c/span\u003e] provide a comprehensive review of offline CPD methods organized by cost function, search method, and constraint type. Aminikhanghahi and Cook [\u003cspan citationid=\"CR19\" class=\"CitationRef\"\u003e19\u003c/span\u003e] demonstrated real-time CPD for smart home time series data, illustrating the broad applicability of CPD across diverse sensing domains. Despite these advances, applying CPD specifically to Kubernetes microservice workload pattern recognition has not been previously investigated.\u003c/p\u003e \u003cp\u003eMost existing workload analysis approaches do not employ CPD, instead treating the observation window as a single homogeneous segment [\u003cspan citationid=\"CR6\" class=\"CitationRef\"\u003e6\u003c/span\u003e, \u003cspan citationid=\"CR7\" class=\"CitationRef\"\u003e7\u003c/span\u003e]. This assumption fails when workload patterns transition mid-window, a common scenario in production deployments where user activity abruptly shifts. This work is the first, to our knowledge, to apply CPD as the primary segmentation step in a Kubernetes workload pattern classification framework.\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec5\" class=\"Section2\"\u003e \u003ch2\u003e2.3 Time Series Classification for Workload Analysis\u003c/h2\u003e \u003cp\u003eTime series classification methods relevant to workload analysis include feature-based approaches, distance-based approaches (e.g., dynamic time warping), and deep learning approaches. Feature-based methods extract statistical descriptors from the time series and apply a classifier, whereas distance-based methods compare time series shapes directly. Catch22 [\u003cspan citationid=\"CR20\" class=\"CitationRef\"\u003e20\u003c/span\u003e] extracts 22 canonical features from time series for general classification tasks, providing a comprehensive inventory of interpretable time series statistics. ROCKET [\u003cspan citationid=\"CR15\" class=\"CitationRef\"\u003e15\u003c/span\u003e] achieves state-of-the-art time series classification accuracy using random convolutional kernels but produces non-interpretable features incompatible with rule-based workload characterization. In the cloud workload context, frequency-domain features (FFT power, ACF peaks) and trend-strength measures have been used to characterize workload behavior [\u003cspan citationid=\"CR7\" class=\"CitationRef\"\u003e7\u003c/span\u003e, \u003cspan citationid=\"CR8\" class=\"CitationRef\"\u003e8\u003c/span\u003e].\u003c/p\u003e \u003cp\u003eDeep learning approaches, including LSTM [\u003cspan citationid=\"CR5\" class=\"CitationRef\"\u003e5\u003c/span\u003e], Bi-LSTM [\u003cspan citationid=\"CR21\" class=\"CitationRef\"\u003e21\u003c/span\u003e], and Transformer-based models [\u003cspan citationid=\"CR22\" class=\"CitationRef\"\u003e22\u003c/span\u003e], have been applied to workload forecasting with strong results on individual pattern types. However, these models require labeled training data from the target environment and do not provide interpretable pattern classification. The proposed framework uses a rule-based classifier on top of seven interpretable, scale-invariant features, providing both classification accuracy and decision transparency without requiring environment-specific training.\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec6\" class=\"Section2\"\u003e \u003ch2\u003e2.4 Research Gaps\u003c/h2\u003e \u003cp\u003eThe existing literature reveals a clear gap: there is no validated, automated framework for workload pattern recognition in Kubernetes that is (1) scale-invariant across pods with different CPU baselines, (2) capable of detecting within-window pattern transitions, and (3) evaluated on a real Kubernetes cluster with multiple microservice environments. Fixed-window approaches cannot detect transitions [\u003cspan citationid=\"CR6\" class=\"CitationRef\"\u003e6\u003c/span\u003e, \u003cspan citationid=\"CR7\" class=\"CitationRef\"\u003e7\u003c/span\u003e]; supervised classifiers require labeled training data [\u003cspan citationid=\"CR4\" class=\"CitationRef\"\u003e4\u003c/span\u003e, \u003cspan citationid=\"CR9\" class=\"CitationRef\"\u003e9\u003c/span\u003e]; and existing scale-dependent approaches degrade when deployed across services with different utilization levels [\u003cspan citationid=\"CR10\" class=\"CitationRef\"\u003e10\u003c/span\u003e]. The present work addresses all three limitations.\u003c/p\u003e \u003c/div\u003e"},{"header":"3 Methodology","content":"\u003cp\u003eThis section describes the proposed framework for automated workload pattern recognition in Kubernetes microservices. The framework takes CPU usage time series data from Prometheus as input and produces a workload pattern label, either a pure pattern (SEASONAL, TREND, STABLE, or SPIKE) or a transition pattern (e.g., SEASONAL \u0026rarr; TREND), along with a confidence score and an estimated transition point τ̂ where applicable.\u003c/p\u003e \u003cdiv id=\"Sec8\" class=\"Section2\"\u003e \u003ch2\u003e3.1 Framework Overview\u003c/h2\u003e \u003cp\u003eThe framework comprises four sequential modules: (1) data collection, (2) change point detection, (3) scale-invariant feature extraction, and (4) shape-based classification. Figure\u0026nbsp;\u003cspan refid=\"Fig1\" class=\"InternalRef\"\u003e1\u003c/span\u003e illustrates the architecture.\u003c/p\u003e \u003cp\u003e \u003c/p\u003e \u003cp\u003eScale-invariance is a key design principle: all features are dimensionless ratios, rank-based statistics, or variance ratios that are mathematically independent of absolute CPU use. Transition-awareness is the second key principle: CPD segments the time series before classification, enabling the detection of within-window pattern changes.\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec9\" class=\"Section2\"\u003e \u003ch2\u003e3.2 Experimental Environment\u003c/h2\u003e \u003cp\u003eExperiments were conducted on a Kubernetes cluster comprising one master node and two worker nodes (Ubuntu 22.04, Kubernetes v1.28), monitored via Prometheus and Grafana. Workload injection used k6 v0.49 from a Windows host. Table\u0026nbsp;\u003cspan refid=\"Tab1\" class=\"InternalRef\"\u003e1\u003c/span\u003e summarizes the infrastructure.\u003c/p\u003e \u003cp\u003e \u003cdiv class=\"gridtable\"\u003e\u003ctable float=\"Yes\" id=\"Tab1\" border=\"1\"\u003e \u003ccaption language=\"En\"\u003e \u003cdiv class=\"CaptionNumber\"\u003eTable 1\u003c/div\u003e \u003cdiv class=\"CaptionContent\"\u003e \u003cp\u003eExperimental infrastructure configuration\u003c/p\u003e \u003c/div\u003e \u003c/caption\u003e \u003ccolgroup cols=\"3\"\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c1\" colnum=\"1\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c2\" colnum=\"2\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c3\" colnum=\"3\"\u003e\u003c/div\u003e \u003cthead\u003e \u003ctr\u003e \u003cth align=\"left\" colname=\"c1\"\u003e \u003cp\u003eComponent\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSpecification\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c3\"\u003e \u003cp\u003eRole\u003c/p\u003e \u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eMaster node\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eUbuntu 22.04, Kubernetes v1.28\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eCluster management\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eWorker nodes (\u0026times;2)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eUbuntu 22.04, 4 vCPU, 8 GB RAM\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003ePod execution\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eMonitoring\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003ePrometheus v2.x\u0026thinsp;+\u0026thinsp;Grafana\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eMetric collection\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eLoad generator\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003ek6 v0.49 (Windows host)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eWorkload injection\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eTarget 1: pod-baseline\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSingle microservice (NGINX)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003ePrimary evaluation\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eTarget 2: Online Boutique\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eGoogle OB, 11 microservices\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eCross-environment test\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/colgroup\u003e \u003c/table\u003e\u003c/div\u003e \u003c/p\u003e \u003cp\u003eLG: load generator; OB: online boutique.\u003c/p\u003e \u003cp\u003eCPU usage was queried via PromQL: cpu(t)\u0026thinsp;=\u0026thinsp;sum(rate(container_cpu_usage_seconds_totalpod=\"P\", container!=\"\"[1m])). Each run lasted 60 minutes (\u0026asymp;\u0026thinsp;60\u0026ndash;65 data points). Three repetitions on different dates (10, 13, 14 March 2026) were conducted for pod-baseline; one repetition (15 March 2026) under two conditions (OB\u0026thinsp;+\u0026thinsp;LG and OB\u0026thinsp;\u0026minus;\u0026thinsp;LG) for Online Boutique. Total: 35 experimental runs.\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec10\" class=\"Section2\"\u003e \u003ch2\u003e3.3 Workload Pattern Definition\u003c/h2\u003e \u003cp\u003eSeven patterns cover the principal temporal behaviors in microservice deployments [\u003cspan citationid=\"CR6\" class=\"CitationRef\"\u003e6\u003c/span\u003e, \u003cspan citationid=\"CR11\" class=\"CitationRef\"\u003e11\u003c/span\u003e]. Four are pure patterns (P1\u0026ndash;P4); three are transition patterns (P5\u0026ndash;P7) with ground-truth transition point τ\u0026thinsp;=\u0026thinsp;30 min. Table\u0026nbsp;\u003cspan refid=\"Tab2\" class=\"InternalRef\"\u003e2\u003c/span\u003e defines each pattern. Figure\u0026nbsp;\u003cspan refid=\"Fig2\" class=\"InternalRef\"\u003e2\u003c/span\u003e shows example CPU traces from the pod-baseline environment.\u003c/p\u003e \u003cp\u003e \u003cdiv class=\"gridtable\"\u003e\u003ctable float=\"Yes\" id=\"Tab2\" border=\"1\"\u003e \u003ccaption language=\"En\"\u003e \u003cdiv class=\"CaptionNumber\"\u003eTable 2\u003c/div\u003e \u003cdiv class=\"CaptionContent\"\u003e \u003cp\u003eWorkload pattern definitions and synthetic generation formulas.\u003c/p\u003e \u003c/div\u003e \u003c/caption\u003e \u003ccolgroup cols=\"4\"\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c1\" colnum=\"1\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c2\" colnum=\"2\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c3\" colnum=\"3\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c4\" colnum=\"4\"\u003e\u003c/div\u003e \u003cthead\u003e \u003ctr\u003e \u003cth align=\"left\" colname=\"c1\"\u003e \u003cp\u003eID\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c2\"\u003e \u003cp\u003ePattern\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c3\"\u003e \u003cp\u003eFormula\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c4\"\u003e \u003cp\u003eParameters\u003c/p\u003e \u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003eP1\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSEASONAL\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eY(t)=\u0026micro;\u0026thinsp;+\u0026thinsp;A\u0026middot;sin(2πt/P)+ε(t)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e\u0026micro;\u0026thinsp;=\u0026thinsp;50 VU, A\u0026thinsp;=\u0026thinsp;20, P\u0026thinsp;=\u0026thinsp;12 min, σ\u0026thinsp;=\u0026thinsp;2\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003eP2\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eTREND\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eY(t)=β₀+β₁\u0026middot;t\u0026thinsp;+\u0026thinsp;ε(t)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eβ₀=30 VU, β₁=0.5 VU/min\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003eP3\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSTABLE\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eY(t)=\u0026micro;\u0026thinsp;+\u0026thinsp;ε(t)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e\u0026micro;\u0026thinsp;=\u0026thinsp;50 VU, σ\u0026thinsp;=\u0026thinsp;2\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003eP4\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSPIKE\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eY(t)=\u0026micro;\u0026thinsp;+\u0026thinsp;A\u0026middot;Σδ(t,tₖ)+ε(t), tₖ\u0026isin;{7,14,...}\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e\u0026micro;\u0026thinsp;=\u0026thinsp;20 VU, A\u0026thinsp;=\u0026thinsp;50, interval\u0026thinsp;=\u0026thinsp;7 min\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003eP5\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSEASONAL\u0026rarr;TREND\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eP1 if t\u0026thinsp;\u0026le;\u0026thinsp;τ, P2 if t\u0026thinsp;\u0026gt;\u0026thinsp;τ\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eτ\u0026thinsp;=\u0026thinsp;30 min\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003eP6\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSTABLE\u0026rarr;SPIKE\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eP3 if t\u0026thinsp;\u0026le;\u0026thinsp;τ, P4 if t\u0026thinsp;\u0026gt;\u0026thinsp;τ\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eτ\u0026thinsp;=\u0026thinsp;30 min\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003eP7\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eTREND\u0026rarr;SEASONAL\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eP2 if t\u0026thinsp;\u0026le;\u0026thinsp;τ, P1 if t\u0026thinsp;\u0026gt;\u0026thinsp;τ\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eτ\u0026thinsp;=\u0026thinsp;30 min\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/colgroup\u003e \u003c/table\u003e\u003c/div\u003e \u003c/p\u003e \u003cp\u003eε(t)\u0026thinsp;~\u0026thinsp;N(0,σ\u0026sup2;). δ(t,tₖ)\u0026thinsp;=\u0026thinsp;1 if t\u0026thinsp;=\u0026thinsp;tₖ, 0 otherwise. VU: Virtual users. τ: ground-truth transition point.\u003c/p\u003e \u003cp\u003e \u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec11\" class=\"Section2\"\u003e \u003ch2\u003e3.4 Change point detection\u003c/h2\u003e \u003cp\u003eBinary Segmentation [\u003cspan citationid=\"CR17\" class=\"CitationRef\"\u003e17\u003c/span\u003e, \u003cspan citationid=\"CR18\" class=\"CitationRef\"\u003e18\u003c/span\u003e] with a mean-shift cost function identifies structural breaks in the CPU time series. Given Y=(y₁,...,yₙ), the algorithm minimizes:\u003c/p\u003e \u003cp\u003e \u003cspan fontcategory=\"NonProportional\" class=\"\" name=\"Emphasis\"\u003emin_{\u003c/span\u003e τ \u003cspan fontcategory=\"NonProportional\" class=\"\" name=\"Emphasis\"\u003e} { C(Y₁:\u003c/span\u003e τ \u003cspan fontcategory=\"NonProportional\" class=\"\" name=\"Emphasis\"\u003e)\u003c/span\u003e \u0026thinsp; \u003cspan fontcategory=\"NonProportional\" class=\"\" name=\"Emphasis\"\u003e+\u003c/span\u003e \u0026thinsp; \u003cspan fontcategory=\"NonProportional\" class=\"\" name=\"Emphasis\"\u003eC(Y\u003c/span\u003e τ \u003cspan fontcategory=\"NonProportional\" class=\"\" name=\"Emphasis\"\u003e₊₁:n) +\u003c/span\u003e β \u003cspan fontcategory=\"NonProportional\" class=\"\" name=\"Emphasis\"\u003e}\u003c/span\u003e (1)\u003c/p\u003e \u003cp\u003ewhere C(\u0026middot;) is the sum of squared deviations from segment mean and β\u0026thinsp;=\u0026thinsp;0.10 (default) controls sensitivity. A minimum segment length of 12 minutes is enforced. Section \u003cspan refid=\"Sec38\" class=\"InternalRef\"\u003e4.3\u003c/span\u003e provides sensitivity analysis over β\u0026isin;[0.02, 0.30].\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec12\" class=\"Section2\"\u003e \u003ch2\u003e3.5 Scale-invariant feature extraction\u003c/h2\u003e \u003cp\u003eSeven scale-invariant features are extracted per segment. Table\u0026nbsp;\u003cspan refid=\"Tab3\" class=\"InternalRef\"\u003e3\u003c/span\u003e summarizes each feature.\u003c/p\u003e \u003cp\u003e \u003cdiv class=\"gridtable\"\u003e\u003ctable float=\"Yes\" id=\"Tab3\" border=\"1\"\u003e \u003ccaption language=\"En\"\u003e \u003cdiv class=\"CaptionNumber\"\u003eTable 3\u003c/div\u003e \u003cdiv class=\"CaptionContent\"\u003e \u003cp\u003eScale-invariant features for workload pattern classification\u003c/p\u003e \u003c/div\u003e \u003c/caption\u003e \u003ccolgroup cols=\"4\"\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c1\" colnum=\"1\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c2\" colnum=\"2\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c3\" colnum=\"3\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c4\" colnum=\"4\"\u003e\u003c/div\u003e \u003cthead\u003e \u003ctr\u003e \u003cth align=\"left\" colname=\"c1\"\u003e \u003cp\u003eFeature\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c2\"\u003e \u003cp\u003eFormula\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c3\"\u003e \u003cp\u003eScale-invariant property\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c4\"\u003e \u003cp\u003eRole\u003c/p\u003e \u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003eseas_str\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003emax(0,1\u0026thinsp;\u0026minus;\u0026thinsp;Var(R)/Var(S\u0026thinsp;+\u0026thinsp;R))\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eVariance ratio \u0026isin;[0,1]\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eSEASONAL periodicity\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003efft_power\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003epower(f*)/Σpower(f)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eSpectral ratio \u0026isin;[0,1]\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eDominant frequency\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003espearman\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003e|ρₛ(rank(t),rank(Y))|\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eRank-based \u0026isin;[0,1]\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eTREND monotonicity\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003etrend_ratio\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003emax(ȳ_w)/min(ȳ_w)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eRatio of means\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eMean movement\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003ehalf_ratio\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003emean(Y_{n/2:n})/mean(Y_{1:n/2})\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eRatio, scale-free\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eDirectional shift \u0026dagger;\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003eskewness\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eE[(Y\u0026thinsp;\u0026minus;\u0026thinsp;\u0026micro;)\u0026sup3;]/σ\u0026sup3;\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eStandardized moment\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eSPIKE asymmetry\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003emax_mean_ratio\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003emax(Y)/mean(Y)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eRatio, scale-free\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eSPIKE impulse height\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/colgroup\u003e \u003c/table\u003e\u003c/div\u003e \u003c/p\u003e \u003cp\u003e\u0026dagger; half_ratio is a simple and interpretable feature proposed in this work. Ratio-based temporal features appear broadly in time series analysis, but none of catch22\u0026rsquo;s 22 canonical features [\u003cspan citationid=\"CR20\" class=\"CitationRef\"\u003e20\u003c/span\u003e] compute a direct half-window mean ratio: FC_LocalSimple fits local means to a sliding window rather than comparing fixed halves, and tsfresh\u0026rsquo;s ratio_beyond_r_sigma operates on distributional tails. The specific use of half_ratio for STABLE/TREND disambiguation in Kubernetes CPU characterization has not been previously reported. seas_str follows [\u003cspan citationid=\"CR23\" class=\"CitationRef\"\u003e23\u003c/span\u003e]. Spearman preferred over Pearson R\u0026sup2; for non-linear monotonicity. max_mean_ratio threshold (1.5) calibrated from pod-baseline and validated on OB\u0026thinsp;+\u0026thinsp;LG (1.871) and OB\u0026thinsp;\u0026minus;\u0026thinsp;LG (1.791).\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec13\" class=\"Section2\"\u003e \u003ch2\u003e3.6 Shape-Based Pattern Classifier\u003c/h2\u003e \u003cp\u003eA hierarchical decision procedure assigns labels SEASONAL, TREND, STABLE, SPIKE to each segment. Table\u0026nbsp;\u003cspan refid=\"Tab4\" class=\"InternalRef\"\u003e4\u003c/span\u003e defines the four rules.\u003c/p\u003e \u003cp\u003e \u003cdiv class=\"gridtable\"\u003e\u003ctable float=\"Yes\" id=\"Tab4\" border=\"1\"\u003e \u003ccaption language=\"En\"\u003e \u003cdiv class=\"CaptionNumber\"\u003eTable 4\u003c/div\u003e \u003cdiv class=\"CaptionContent\"\u003e \u003cp\u003eHierarchical decision rules of the shape-based classifier\u003c/p\u003e \u003c/div\u003e \u003c/caption\u003e \u003ccolgroup cols=\"4\"\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c1\" colnum=\"1\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c2\" colnum=\"2\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c3\" colnum=\"3\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c4\" colnum=\"4\"\u003e\u003c/div\u003e \u003cthead\u003e \u003ctr\u003e \u003cth align=\"left\" colname=\"c1\"\u003e \u003cp\u003ePriority\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c2\"\u003e \u003cp\u003eLabel\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c3\"\u003e \u003cp\u003eCondition\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c4\"\u003e \u003cp\u003eJustification\u003c/p\u003e \u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003e1\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSPIKE\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eskewness\u0026thinsp;\u0026gt;\u0026thinsp;0 AND max_mean_ratio\u0026thinsp;\u0026gt;\u0026thinsp;1.5\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eZero overlap with non-SPIKE across all 35 runs. Threshold 1.5 covers all three environments.\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003e2\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSEASONAL\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e(seas_str\u0026thinsp;\u0026gt;\u0026thinsp;0.45 AND fft\u0026thinsp;\u0026gt;\u0026thinsp;0.15) OR (fft\u0026thinsp;\u0026gt;\u0026thinsp;0.25) AND spearman\u0026thinsp;\u0026lt;\u0026thinsp;0.25) [if trend_ratio\u0026thinsp;\u0026gt;\u0026thinsp;1.50 AND spear\u0026thinsp;\u0026ge;\u0026thinsp;0.30 \u0026rarr; TREND]\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003ePeriodicity was confirmed by the STL variance ratio and FFT power ratio independently.\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003e3\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eTREND\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e(spearman\u0026thinsp;\u0026gt;\u0026thinsp;0.30 AND trend_ratio\u0026thinsp;\u0026gt;\u0026thinsp;1.20 AND |half_ratio\u0026thinsp;\u0026minus;\u0026thinsp;1|\u0026gt;0.12) OR (trend_ratio\u0026thinsp;\u0026gt;\u0026thinsp;1.50). AND spearman\u0026thinsp;\u0026gt;\u0026thinsp;0.20)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eMonotonic movement with directional half ratio confirmation.\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003e4\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSTABLE\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003eFallback\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003eNo dominant temporal signature.\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/colgroup\u003e \u003c/table\u003e\u003c/div\u003e \u003c/p\u003e \u003cp\u003eThresholds were calibrated from pod-baseline Repetition 1 and validated unchanged on Repetitions 2\u0026ndash;3 and both Online Boutique conditions.\u003c/p\u003e \u003cp\u003eThe complete detection pipeline is summarized in Algorithm \u003cspan refid=\"FPar1\" class=\"InternalRef\"\u003e1\u003c/span\u003e. An ablation experiment quantifies the contribution of post-processing: disabling both steps reduces overall accuracy from 95.2% to 81.0% (\u0026minus;\u0026thinsp;14.3 percentage points), with all three discordant cases involving the trailing-STABLE correction of P2 TREND segments.\u003c/p\u003e\u003cp\u003e\u003cimg src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAmIAAAJuCAYAAAATlG6dAAAQAElEQVR4AezdBZxexdUG8LlYcS9SCg1O8Za2UIq2QClQSIEWKRJarDiU4pbibsXd3d0J7u4a3N39y39g9nv3zcq7m02ycvLj7L13fJ6ZO/PMOee+jPJd/AsEAoFAIBAIBAKBQCAQGCkIjJLiXyAQCAQCgUAgMMIQiIoCgUCgFoFOEbHbbrstDRgwICQwiDkQcyDmQMyBmAMxB/r0HKglVZ257xQRm2uuudLAgQNDAoOYAw3MgXhXYq2IORBzIOZA750DnSFftXk6RcTGGWec9LOf/SwkMIg5EHMg5kDMgZgDMQf69ByoJVWdue8UEWu7oogNBAKBQCAQCAQCgUAgEGgEgSBijaAUaQKBQCAQCAS6LwLRskCgByMQRKwHD140PRAIBAKBQCAQCAR6NgJBxHr2+EXr+yYC0etAIBAIBAKBXoJAELFeMpDRjUAgEAgEAoFAIBDoeQj0DCLW83CNFgcCgUAgEAgEAoFAINAuAl1KxF599dX0y1/+Mj333HPNKn7wwQfTYostlj9v3WSTTZrFddXDCy+8kBZYYIG0xx57tFjkySefnGadddY0wwwzpEMOOaTFNF0R+PHHH6dlllkmPfvssw0Vd/PNN2dcWvo5kEMPPbShMkZEov333z+tttpqQ7X1xRdfzNUff/zxaaaZZsrxm266aQ5r68+JJ56YZp555px+zjnnTOeff35byTsd94c//CH95S9/6XT+rs647rrrpkGDBnV1sVFeIBAIdDECUVwgMKIQ6FIiduqpp6Ynn3wyXXnllc3a7wdg55tvvvTaa6+ld955p1lcVz3cf//9ue7jjjuuqchPP/00bbzxxvl5jTXWSNNOO21CHD788MMc1pV/nnnmmUxExhtvvPT666+nr7/+uqHiF1xwwXT99dc3tQ3hQSo32GCD9J///CeNPfbY6a233mq3LPXttNNO7aZrLwFCdMMNNzQl++yzz9Lmm2+enn766UxgkcM33ngj4/i///0vTTPNNDktfKVDfA4++OAc1tqfBx54IO2yyy5p9tlnT4MHD864bbnllskYtpanM+HafMcdd6QnnngiS2fK6Oo8Rx99dNpxxx3Tvvvum7788suuLj7KCwQCgUAgEOhhCHQZEUMWDj/88IT8XH311emjjz4aoVD87ne/S//85z/T3nvvnet9++23s3bMRpwDhvOfe++9N80222xdVsvWW2+dVllllfT555+nddZZJ73//vutlv3FF1+kiy66KNWS0FYTtxGBgG244YbNUhxwwAHp1ltvTUjexBNPnP785z/ndkm08847N43z7bffnq655ppEMyauLUHIXxiiwZx00klzsh//+MdptNFGS6OM0mXTMZc744wzpi222CKtvvrqaZZZZslh3eHPXnvtlc4666yM13fffdcdmpRSimYEAoFAIBAIjAwEumznQ77+/ve/5z48/vjj6aGHHsr3rf2hVaFBoUmpFSY9xOKII45IwgcMGJBo2ko5wsixxx6bNW//+Mc/0lFHHZWkZxp9+OGHs+Zt1113TQceeGB6/vnn00YbbdRM24IIiFeOdiv7uuuuS8xGyjvxxBPT9ttvn+s/44wzsjaotPXuu++WfChZaaWVEmIyVMSQgMceeyytv/766ZJLLhny1Ph/a665ZrJRy//oo4/mjK7aTe6555707bffpnPOOSdrz/Rf+DHHHJPT+n+Cel577bWT/uXAIX9oof7973/n/q211lpDQlI699xzk3vjsueee2ZCpXzEduGFF04/+clPcrqqqjIxpF2kwWLypWGk1UMYc6J2/nzwwQc5has+ag8NEbNxjmjlj7GSHpYnnHBC7rP+nX766Xm+bbbZZrlP+u1AsPvuuyeEz6Hgqaeeylo46WkaHRrck1aqaxZ81113JSRVelfYlARMscLhTjMpnHl+m222ye0RV4SGESkk5rC5Ln1IIBAIBAKBQN9EoEuI2CeffJIJj42YCRKZuuqqq7I2pyVYX3nllUyOmLmYaWhDTjnllKzRsuEjXkxVSNGKK66Y/vWvfyXxylpkkUXy/X//+990yy23JKSJJmesscbKfkZXXHFFGnXUUdPoo4+eqqpKU001Vdpuu+2aNCI2SloyBIYJdb311lNsmnfeebPmR3k2yDnmmCPx3xKPtEw//fQJEVh55ZVz+kb/fPPNNwkWNumDDjqo0Ww53UQTTZSvCAtzp/Ysvvji2ZTHr+pvf/tbjq+qKvnfTnlAPlZYYYXcVvj99re/Tb///e/TVlttlQnlV199lZZbbrlEY8gsetJJJ2XcJ5xwwmwGraoqIW79+/fPeBrbX/ziF4pukt/85jfJuAjYdttt09lnn51o7PjoCWtU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fZd22GGH9Mgjj3QgV/dMeuyxx6bjjz9+uDbulVdeSTvttFM66KCDsmy66abJ5tqRSt955510wAEHpH333TeXcdhhhyXkrtEy1Hf66afn/Msvv3yLm625fuKJJ6YDDzww7b///rm+wYMHN1pFl6YbffTR06KLLppmnnnmLi23OxXm3bvyyivzu7j55pungw8+eKjmIcN77713HvODDjoo7bLLLunaa68dKl1XBIw77rhpmWWWSZNOOmlXFBdlBAKBQBsIdGsiNtpoo6UJJ5wwVVWVLr744uT0N8EEE6QxxxyzjS4Nn6jLLrss0ZgMn9JHTKkW1zPOOCO99dZbaZRRvh/6ccYZJyFjriWsI60566yz8vj84he/6Ei2bpl27bXXzhvhM888M9zaZx5PNtlk6YgjjshiLJ599tkO1XfJJZckeDukKGe66aZLyHWjhRjn8ccfP/36179O8803X4vZaELGGGOMvOmr549//GPyDnz++ectph+egd73NdZYo9W2Ds+6R1TZxsQ7aL3bYIMNhq52SIgxnmGGGfK8Me7/+c9/MkkeEtXl/0088cRpk002SdNMM02Xlx0FBgKBQHMEvt+Nm4d1myensZVXXjktt9xyaaaZZkp//vOf09/+9rc0xxxzJP822mijZBM65JBD0oorrpimnHLKNPvss4vKsscee6Sf/exnaa+99koDBgzI8VNPPXV+zgmG/LGhUcFT9Q95TOuuu25Ot80222Rz2wcffJCf99tvv7Twwgvne/Wst956Q2nIrrjiihy/5pprKqrbyWKLLZY3bJssUqaBN9xwQ4LTAgss0CmCC69VV101/ehHP1JcoiEzPjCyWQikLfvVr36VsTnttNMEDRd59dVXk/FV95577tlUh2dCC6R9TRF1N9IsueSS6dBDD62L6bpHxGu22WbLBQ4aNCgfLspzDmzgz80335yWXXbZ5KAi+TzzzJOYkj755BOP7YoNn7ZjqaWWSshWfYYvv/wyvfnmm/ldEo8kzD333On555/vlNa0vnwYqF8f5p9//oRcIHvlHb3ooouastAeGhdy9tlnN4W7QQxpyeQzZtKQO+64Q3TD4oB3+OGH5/kp/yKLLJJo3h944IFchnhzWRyZdtppE21hjvzhz+DBg9Nf/vKXXMbPf/7z/J5ZV8gPSdq8IJsLLrhgst5NMskkLaZFRldbbbWmOH3/9ttvm57bunnwwQeT8ldfffX0y1/+Mpkz55xzTlpooYWS/piLJf/666+f+6GvDz/8cAnO1xNOOCH99Kc/Tdtuu23aYostcjr569PlxPEnEAgEGkJglIZSddNE//vf//LiZ1FEjGisttxyy+T+m2++Sdttt11yarxwiEmuf//+WaNF+2BhZYZyve2225KF171uHn300YmWx2Zl06aBK+VarNyTo446Kk000USyNAlzjhNtVVUJgWuK6EY3FnmkS/uZ4fTTYqyJSJlNpCWhPalfbG+//fZkI/jd734ne5aqqpLF+p///GdC0AQq7x//+Ecei7///e+C2pNOxf/kJz9JSIr+Me+UQk466aS0yiqr5LlSVVUJbvFqnpgTyEiLCYYxkF+PIrRJG/fZZ59UzIo0XXPNNVeCV70YI+ZxeZVRSJjnqqryOJjznodVvvrqq8T8WVX/jxUyJtw7Mazl//jHP86aHH6FAwYMSDfddFPy3s0777zppZdeyvOkvI///e9/83vrsFDvy7b00ksn7/E111yT83kv77rrruQg9MILLzTczFtvvTXJJz+xhtBcFoyZDJ966qncDvEOFo899lg699xzM+6wYjJ0MBSvPKZFBxLk0brw29/+tsVxNc7GvZHGOjyVNhkL2m2aykbymldM2ffee2/aeeeds+lzl112Sdtvv3164IEHsuazzB+kWD+8v+qpLX+ttdZKSOspp5ySZp111ozJpZdemscMea9NG/eBQCDQGAI9mojp4qijjpo32MUXX9xj1prRDPCDEWDj+M1vfpP69+/vMWsAmKD4W/BBy4Fd9MfC9fjjjyfEEIHromK7tJiqqtKf/vSnRHuEcNRqjhZddNGk/S0JvzwbS21jbJpO17Vh7mecccasXbNheYYzAtyodkCezkq/fv3yiZ/PWynjzDPPTCussEIaa6yxSlCrVxsmgkDD0WqiLohAFmh+EDLaVmSMxpfmoiX8kRVaxdaqRhzrN83W0nY2HBHyPnU2f30+c4cmG7n4wx/+kLzD7h1wWnNWry/D8xRTTJH9FN3TiCKtHRk/+R1QaL2Iur3DRbuOeEgjjpx88sl5HXEQceC688470yyzzJL0QRuY9QYOHJj4tnnWH2lbGldhxl26RgVJRd58aOGA02g+6Wj1WRi8C3/961+TOYVk02gXv1Hp2hOHL+uddNNPP33u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xhrppptu6lC+lhJrwx577JG22mqr9MUXX7SUpCnMhv/vf/87vfjii01h7d0gnRdffHE6/fTT29zI2iunkfhBgwY1zTHz5NFHH02wKnlt5OYdOeaYY3LcM888U6JHyLW8C++++25ae+2108CBA9M999zT6brNJX1paS6MP/74uY5JJpmk1fJ32223dOCBB+a5aC7ccsstraYdGRFvvvlmbtt2222X9t5771abMMUUU6QBAwa0Gt/ZCPN3//33T3BqieyWcrXTGnfEEUekf/3rX8lcK3GNXh1W1lprrfTYY481miXSBQIjHYFRRnoL2mmA/1/c008/nX7yk59k+c9//pOuuOKK1nO1EOOlHJ4kSZXIXkfbJV+jMsoooyQncxv+j370o4wFTC677LKEkDRajkXxzDPPTDQKLeWhfXnwwQfTnXfe2VJ0twkbZ5xx0uabb54OOeSQ9Jvf/KbD7Vp88cXToosumqqq6nDe+gzasO2226apppqqPmqo52OPPTbZ8Gabbbah4loLGG200XJbr7766lbHrbW8HQk/4IAD0vnnn980t6688sr0j3/8I9144425GNoeZNO8IzQWG264Ybr22mtz/Ij6412YZ5550j//+c+03HLLpR133DGNO+64na7eIQ3hXGihhYYqAwHbc889MyZDRQ4JQB4uvPDC5P9baR6Qv/71r0Nius9/tFzatd5666Xxxhuv1Yb169cvk9pWE3QyYvTRR8+HJfO+rSK0c+edd86kdsopp2wraatxE000Udpyyy3Tfvvt12qaiAgEuhsCo3S3BtW2x8Jhw3SSW2GFFRJx8jzxxBPzael3v/tdmn766ZNFVD6nKP8T37/97W/pgw8+EJQ8r7zyynkhcE9+//vfZ3MWrYTnFVdcMZ8Up5lmmpx+qaWWSi+//HLO74T705/+NGvlBNx///05zS9/+ctEfU4VvvXWW6cll1wy7bPPPjlOmeShhx6SpZnMMccc6de//nViBmgW0c4D8rXYYovlDUf7YEF22mmnZCMo2dVbpH5jsUBZ4E4++eQ000wz5bZONtlkmczIr8/I3pprrtkML4Rl8BCtojTk5ptvznlLPUiI8CL/+9//cjxchblKe9ZZZ3lMnrXNs/rE2eBpOnKCLvpDa6N/yic0q4hmffG77757bq80xx9/fLNoYyy8yDrrrNMsviMPTFY2dfO6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Rx01TTPNNGnCCSccKq6RgC+//DI99dRTTXU9+eST6c033xxu2oCvvvoqHX744enUU09N8P7888/Tww8/nOt/9tlnc5M//PDD9MADD+Sw559/Pod1xR/l7rzzzmm++ebLss0226QvvviiWdFrr712uv3225uF9dCHaHYnEfj222/TJptsksYbb7y0xhprpDPPPDO9/vrrSXhHi5THHK5fU6x13r368sYaa6w0/fTTp9FHH70+qsc81/f5kUceyWtKS/3t7p2yPtkThqWdn3zySXrttdfaLWLaaadNk0wySbvphneC//73v2mGGWZIf/zjH5O2l/rM47vuuiv94x//SOuuu276+OOPS1S+nn766ennP/95XlvLGjv55JOnM844I8eXP+JmmmmmNHDgwNQT50TpR2vXHk/EbrjhhkxA5p577jTuuOO21s/hFo4kIICHHnpouuCCC9I666yTjjzyyHy/6qqrDrd66wt+44030llnnZX+9re/5bq1heywww6ZtNSmn2CCCZIXZ4kllqgNbugeEUJ8jz766FzP+eefn/bYY490wAEHDDdNwOAhRPexxx5L8847b6qqKr/M6rXx2aw0/O2330777bdf2mWXXRJCJqwrBIZI7h133JHIddddlwr5K+WvsMIK6cILL0xIWwmLa99DYMIJJ0xbbrllnocvvPBC2nfffdNFF13U4XmBlJjDm2++eTr22GPze2YeWmPOOeecoYCdbbbZkvdxiimmGCquJwRYU26++eZ0xBFH5L56tw8++ODkAPTKK6/0hC40a+MLP4x9s8AOPjzxxBPplFNOaTfXQQcdlJZffvl20w3vBOOPP35ee6+66qo0zjjjNFVHU2zuzjPPPOknP/lJU3i5mXXWWdOJJ56Y11brK7HO26NKGlfhe+21V6oPF9cbpMcTsY022ijttNNOafbZZ29zPGhU/vSnPyUbaVPCLrqZdNJJ07/+9a9kovzqV7/KJ2P3M888cxfV0H4xTgsbbLBBPhmru8ivf/3rZn1GGuFAbrzxxmYF02wJ33bbbdO5556bll122bTUUkslL1dJaNH0/M9//jP3d++9906rrbZaomUbZZTvpxPT5y5DCJGyCHL6zDPPlCLylT8Noir+P//5T7rmmmvSiiuumE444YQcX/tHfZNNNlnq169fDob3VlttleudaKKJctjYY4+dYIAE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/CL95z//SeOMM0591Eh/1rY99tgjTTTRRMOtLdNPP33aa6+90uSTTz7c6oiCA4FAoG8i0OOJ2AorrJCWWmqpptH761//ml588cWm53Jjo0PYrr766hLUsWsbqV944YW0/vrr583T6Vw9ZO+9926W67jjjkvCyTrrrJNswCUB4vbnP/85a9OeeuqpdOSRR+a0m2++eUnS0PW///1vzqcO8tJLLzXLd9RRRzWLv+eee5rFe3j++efTWmutldMtssgiabfddktnnXVWqtWcXHrppRl3dRx88MGydUj0cfXVV8919O/fP9dx1VVXJWYmBT399NOpxKtjmyFaz7fffltUk1x++eVp0UUXzWXsv//+6fjjj0/aizDIAwvxa6yxRtLelVdeOadtKmDIDcIjbZEvvvhiSOj3/9nclXfBBRck4yDNiiuu+H3kkL/aSPOpHiKerLnmmqkj2qy77747TTnllGnnnXdOO+20U9piiy3SLLPMkkYdddQhtQz7f8xpsPJebLjhhrkO9RRRd0dqMaf0k6y33npDZVWXuCIlwf3335+WWWaZtPHGG+cg5PAvf/lLnvOnnXZaDjvjjDPys3m6/fbb5/GSxpzMCX74g6yW8jfYYIMfQv//Yq5sueWWOT8N7o477pjOOeec9Omnn/5/onbuHnroodR/yNxUz4ABA9Ljjz8+VA5liie0hcOqGR2qgggIBAKBXo/AKL2lhzZwG45NePnll2/WLQSCdoEWoCXi0SxxJx5+9rOfZeK0++67J2SKiYlsvfXWTaUhM9ognCCQ//jHP5J2S/SHP/whXXLJJenzzz/PpM7Gg5iMO+64yVWa9mTgwIHZT075RWacccZU22cn+xLnirja1ErZTDs2FGRCPG3PE088kbU0X3/9dU5G63fDDTdk4nPjjTdmgnbCCSfkuEb+IKCHHnpoJjfqQJJp2mx88r/++uvpkEMOycRWPJl11lkzgTDG0lx00UXpzDPPTPKJR6CYpmC+7777prXXXjsp98orr0xMajZrBGfAkA11l112UUT697//nZQrP0EGaFUGDzELSrDddtsleNnEaVqlmXPOOXPZ4mFLi1UIjXhy0kknpQknnFCShmSaaaZJyAuTuv6NP/74ifZlkUUWGSp/mS9DRbQRYE4hQdNOO22aYoop8hxRT5E2sg4Vhcwht2effXY2pSIgnku7tBv+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PR0t7bTTTkuzzTZb+uijj1Jn+tbR+s4444y0wgorpM8//7yjWXtFeuPk/TOnekWHohOBQCDQqxDozp3pNUTsrbfeSn/5y1/SvPPO253xHiFtm2CCCdIvf/nLNPbYY7dY38cff5wOPvjg1L9//7TccstlOfvss1tM21bgpptump566qkWk7zyyivpuuuuS1dddVW65ZZb0uOPP54+/PDDFtO2Faj8TTbZpK0kLcb9/e9/TxdeeGFaeeWV0/bbb5/uvPPO9Omnn7aYtisCp5xyyjT33HOnUUYZpSuK67ZlPP/88+n1118fqn3vvPNO2mGHHdJkk002VFwEBAKBQCAQCLSOQK/YNZzCTz755LTYYou13tM+FDPzzDOngQMHpp/85Cct9vrpp59Or732WjrxxBPTlVdemWWVVVZpMW1nAl988cV0xBFHZAJ23333pWuvvTZttNFG6ZFHHulMcZ3OM+OMM6bLLrssLbDAAumiiy5Ku+yyS3riiSc6XV5bGRdZZJG04447pjHGGKOtZD0+7swzz0w333zzUP2YdNJJ0957751mmmmmoeIiYGQgEHUGAoFAT0GgVxCxBx98MNHAzD///K3ivv/++yfxiEeriXpBhD6SNddcM7388stD9YgWTJwNlflS2vXWWy998MEHQ6XtbADCZWPedtttE/nPf/6T5plnnuFuxmytvcsss0zShpVWWiltvPHGaZ111mktaVP4BRdckJCrww47LM+bzTffPF188cVp4YUXTquvvnp6//33m9LCkCCb9aZxBJemlulS/dJtscUWTXkbvXn44Yezdk/+pZdeOu22227pmmuuSd9++20uAubqEk+22mqr9O677+a48uecc87JfRLvfTjmmGPSQgstlBrRhj722GNp1VVXTUceeWTWfCmDLLvssqX4putLL72UMRN/4IEHNoWXm7XWWqspXpoS7tq/f/9sVj///PPTiiuumNPRtIkLCQQCgUCgNyLQ44nYZ599lk1QNpTWzCJMcTYq2pkHHnigN45jU59uu+22vLH+9Kc/bdFf6cIh5rpjjz02DRgwIF199dVJ+qOOOioxZzYVMow3E088cbrhhhsSMxZt5eijj5722muv9Lvf/W6okvl/8S8aKqKDAW0lV8egQYOyDxdChYC0lV4c8oTAbbnllglpnWqqqRLCisj/4Q9/SHzQpCMFw9FGG62JGAknCJgrQoeUSuv5kEMOcWlImAK1GZmU33hdccUV2QcQdiVeW8WTOeaYI5O14rN23nnnpeuvvz5rCG+88cb0ySefpAMOOCAhZH/729/abcess86aTj/99LT++uvnctVBkNP6zPBBZMXTjqpDGm3lR4dIiiOnnnpqmn766fNBSpoLh8xPbgaHH354JnzSOFAcffTRokMCgUAgEOh1CPR4InbPPfekN998s02z5LjjjptOOOGETEy22WabXjeI3a1D8803X6KR2WWIKbB///6JpgaRqNUilTYfdNBBiam0PHflFQlBNo35TTfdlG699da01FJLdagKvnTTTDNNGm+88bLp7Uc/+lFCNFvqS2sFjzPOOGnddddNc889d05CozZ48OB838gf5s6f/exn6dFHH02IIO3USSedlP71r3+lUUcdNSE7+orAiCc//vGP05NPPpnefvvtLM8991xCQrVFebRyc80113D5kAHWk08+ee4aLSEfQQ933HFHGn/88ZP3URsJH8ANN9wwHX/88ZJkEb/+EMJX8Bow5NAgXY6MP4FAIBAIdA8EuqwVPZ6I7bnnnskGtPvuu+eNknbAqbrLEIqCOoUA7RdtEM0NbQbfrLvvvrupLI7ztB6cvIt5rSmyC25oP5m0XBdffPGs/aHV6oKiO1wEEsdvr8MZf8iA+C2//PKJZpdG11exTISImSSur776ahJXKwsuuGD+eABJo5ms1XoiO/y5aPGU0ZUyxRRTNCuumEiZLPkm1rbRPY0lP76Saayxxko///nPy2NcA4FAIBDo1QiM0tN7t88++2Q/JF//LbHEEvnE7aTf0/vVk9tP+0gbU/owySSTJKYy5KuE0cowJyPObf3MRknf0StyctxxxyUmMpq53/72t6nI2muv3dHiRnr6aaedNm2wwQaJdo+Jk68ap3k+aXPOOWeaZZZZkq9LxdeKDzbGHHPMRN57772mfvhZD1+yIkFNgcP5Zu65584/L1PbPve0p4suuuhwrj2KH2YEooBAIBAYLgj0eCI2++yzJ6YwzuD8WGw4/KPq0WIiqaoq+bqyPq63PPsdp6L9sMHSgni2WZc+lme/reWe1MaXdJ298gPii8SZnPZD+a5MY8xrpVyaGGM3vLRUzH+Ih5+tuP3221Ot8JEr7WjtCh8YwtRVOvfC3QtzDzt9hLUw98S9dMKlk5fmj8gjnkjTnvgYZbXVVssmRmUrC56wZpqkbRPG/Mv3Sxri4wDaMx9O+IKUdhIBE8e0iawah/bqr41HCJFbZRCmZwcgbdEv/dNnV1LCtI8Gjn8Y0iVvEW3ZbrvtcjXy1uLlXhmwIjlR/AkEAoFAoBch0OOJWBkL5q/NNtss/2TDvvvuW4LzlUM/P58ll1wycRzPgb3wj5+M4GSOdD700EOJ87bngQMHNvXWMzPu/fffn3y95pnGqCnBMN5UVZX+9Kc/JVoazu3Kd0WUaURK8W+88UZ26H/22WcT8yGxCZf4kX298sorM3m79NJLs7P+1FNPnb+a5NfEVMjfyW+k7bTTTvn36/x0hb7wh9NnWkF98JUmk5wDAPJkXODNL+6ss85qyEdrookmyj+8i1wqmyAnAwYMyD5izIx87ZAsXxqKJ75y/NWvfqUZ+bfikC7kTBztZEf95RS08sorJ8RPGcQ7xQ+PiRkGPpjRLto2H8gI0z7vpDr//e9/J6RL3iK+CN1jjz0Un2grkTrvs489+Jf58pKG1ZeUiFlOGH8CgUAgEOglCPQaIsbh14mfWOhrx4fPCfOHOBtlbVxvumea0sd6QbxKP+vjPJdNsKQZ1isC4As/X9Qp39WmW1uun8ugkUHOOMDbdGlNatOMzHuaG789pv20UUiLZz/5wZ9JuDBfg7qvl/ITGQiFONcZZpgh6a9n4kdnabTa66dDhJ+ekKcIfM3r2rx84kq8K3N97Q/MIoWXX355Eocs0UgxG9eW0cj9zjvvnMtQDqd6eWjd/I6YML6B/q8GyPi5556b03onyw8M89mTrsh+++2niCynnHJKTs9/0NeUTLAlna87G8ErFxR/AoFAIBDoIQj8PxHrIQ2OZnYfBJCBWnNjR1rGTEVzt/XWWyfiZw1oTurLUD4SXR8ezx1HAJnjl8eUT7PFmZ+mr+MlRY5AIBAIBAKBrkIgiFhXIdkHy+nXr192Ah+eXefzp57hWcfIKpsPFbN5W9KV5tq//vWvyU9LMKvy42OmZK4cWf2PegOBQCAQCARSCiIWsyAQGEkIMMcy49IGtia+KhxJzYtqA4FAIBAIBEYAAkHERgDIUUUg8D0Czf/ygfIFIr+t1oSjevNc8RQIBAKBQCDQmxAIItabRjP6EggEAoFAIBAIBAI9CoHhSsR6FBLR2EAgEAgEAoFAIBAIBEYwAkHERjDgUV0gEAgEAoHAcEMgCg4EehwCQcR63JBFgwOBQCAQCAQCgUCgtyAQRKy3jGT0o28iEL0OBAKBQCAQ6NEIBBHr0cMXjQ8EAoFAIBAIBAKBnoxATyNiPRnraHsgEAgEAoFAIBAIBALNEAgi1gyOeAgEAoFAIBAIBGoRiPtAYPgiEERs+OIbpQcCgUAgEAgEAoFAINAqAkHEWoUmIgKBvolA9LrvIHDllVem008/PX3xxRfpu+++6zsdj54GAt0IgR5PxN5777106aWXNon/VcyTTz7ZjSDu202pHZtBgwb1bTCi990WgVdeeSW9+OKLXdo+5Oa2227r0jK7urA33ngjHXLIIWnbbbdN1k7raVfX0ZHy3n///byW33nnnW1mk+66667Laa+//vo20w5rZFnDrrrqqjSy8RnWvkT+7olAjydiSNcee+yRnnjiiSye33777Q6gHUmHFwKnnHJKuvjii/O4GJ/nn39+eFXV4XIfe+yxtOuuu6b//Oc/Q8nVV1/dofLuv//+RDqUqYsTf/bZZ+miiy5Kn3/+eYsl33PPPWm77bYbqq/6TyPSYqZOBh5xxBGdzDlysn366afp+OOPT4888kizBpivAwcOzJjtsssu6eyzz06PPvposzRtPXzzzTfp8MMPT8ObKLTVhkbiVlpppbTsssume++9N/33v/9NN910U9aQNZK3Pg2yYk7Vy0477dTQO2IeG4edd965vuhmz+b5M888k+6444609tprN4vrqgfkfJ999kk333xzXsMQ1b322qurio9yAoEmBHo8EauqKs0999xpyy23zLL55pun3/3ud00djJuRh8DJJ5+c9ttvvzwuxmfAgAEjrzF1Nf/kJz9JM800U15gbURFpp122tRRLQaSSeqqGKGPNiYbPi1MSxXrF2Iw6qijptJX1xlmmCFrQlrK09mws846q7NZR0o+G79NfeGFF26q/6mnnspz97e//W3G61e/+lU69thjE6LRlKidm7HHHjttsskmabPNNmsn5ciNHmWUUZK+b7rpppmQnXDCCZl8vvDCCx1umHdnuummy5ghuL/4xS/S3/72tzT++OOnxx9/vN3yppxyyobwmmKKKdJ6662X1l133XbL7GyCiSaaKC211FIJGbd+Obi99dZbmfx1tsymfHETCNQg0OOJmL589dVX6eOPP87yySefCGomfB82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ffPNN3vmiAznVj/66KMZIzi9/PLLw7m2KD4QCAS6GIEoLhAIBHoZAr2CiL3wwgtp1113Tffdd1968cUX06uvvpo+//zzXjZUXdOd999/P2N04oknpttvv71rCo1SAoFAIBAIBAKBQKBTCPR4IvbZZ5+lM888M80111xp0003zbLWWmulaaaZplOA9PZMv/vd7zJGCyywQBp11FG7f3ejhYFAIBAIBAKBQC9GoMcTsY8//jh98sknaamllkpIGY3PN99802zIvvvuu7ThhhumqqrSSSed1CyuNz3QAq6++upp4oknbpJ77rkn1ePRXp8vvfTSNNFEE+UyXI866qh04YUXNmW77LLLmuLVhQAzDTcliJtAIBAIBAKBQKCHIjCim93jiRjz2ocffpg22mijtOaaa6Z11103nXvuuZmUFTARlBlnnDH95S9/SeOMM04J7lVXRGiPPfZISy+9dHr33XebZM8998x4NNrZr7/+Ou2zzz7ZfKmchx9+ON15553pJz/5SS7ikUceSRdffHFT/DvvvJO1kYcddlj69NNPc5r4EwgEAoFAIBAIBAKNIdDjidjTTz+dicKSSy6ZzjvvvHTyyScn5OCxxx5rQmCsscZKm222WTr//PPTiiuu2BTem24GDx6c7rrrruz3RUNVZMopp0xnnHFGw10dZZRREvPlDjvskE2Y++23X9pyyy3Tb37zm1wGX7wPPvgglXi43nbbbXkMXnnllZwm/gQCgUBPQiDaGggEAiMTgR5PxGhwpphiirTccsul0UcfPctkk02W+toXgbSC+v3Pf/4z1QoN4YEHHtjwHEPEttpqq6Yy1lprrbT33nunu+++O5fhQ4j+/fs3xatrk002Sbvttlv45WWE4k8gEAgEAoFAINA4Aj2eiK2zzjqZfCEIuo1IICQTTDCBxyZhNmNqY8JrCuxFN7/+9a/TSy+9lKaeeuo055xzNslss82WJp100oZ7ys+OBrGU4SOIAQMGZI2XQuD91FNPpVlmmaWpjtlnnz1NNdVUabTRRpOk20s0MBAIBAKBQCAQ6C4I9HgiNv7442dt2FlnnZVNj76gvPHGGxNiUkCmNdt8883TJJNM0qud9fl2rbrqqhkHZljCd6toxN57772mOL5efL+k8btrb7/9doaL6ZG/nfAifp+tmCZXW2215AOJgw8+uKmsk046Ke27777p9ddfz2XEn0AgEAgEAoFAIBBoQqDNmx5PxGhhOOHPMccc2RzJRLfBBhs0c8r/9ttv0worrJCQh1/84hdtAtKTI5HPU045JePANEv8RMVOO+2Uu/Xll182xc0zzzxZiyUNAlU0hcsBC9kpAAAQAElEQVQss0yab775mtLx+1p++eWbfMRoHLfffvs07bTTNqXxVSaCRiuWK4o/gUAgEAgEAoFAINAQAj2eiOnl2GOPnRAIvkrrrbfeUKa4McYYIy2xxBJJPLIiT28VZkj9LOJnO0pfJ5988oxBiStXX5sWEjX//POntddeuyndxhtvnH71q1+VIvKV2ddHDyW/9NNPP32Oiz+BQCAQCKSAIBAIBBpGoFcQsYZ7GwkDgUAgEAgEAoFAIBDoRggEEetGgxFN6bEIRMMDgUAgEAgEAoFOIRBErFOwRaZAIBAIBAKBQCAQCASGHYHOEbFhrzdKCAQCgUAgEAgEAoFAoM8jEESsz0+BACAQCAQCge6PQLQwEOitCAQR660jG/0KBAKBQCAQCAQCgW6PQBCxbj9E0cC+iUD0OhAIBAKBQKAvIBBErC+McvQxEAgEAoFAIBAIBLolAt2GiHVLdKJRgUAgEAgEAoFAIBAIDEcEgogNR3Cj6EAgEAgEAoFui0A0LBDoFggEEesWwxCNCAQCgUAgEAgEAoG+iEAQsb446tHnvolA9DoQCAQCgUCg2yEQRKzbDUk0KBAIBAKBQCAQCAT6CgK9mYj1lTGMfgYCgUAg0CkEXn/99fTyyy93Km9kCgQCga5BIIhY1+AYpQQCgUAg0OMQuPnmm9Nmm22WzjnnnPT+++/3uPZ3vwZHiwKBjiPQ44nYoosummabbbZmssUWW3QcicgxXBCoHZv+/fun7777brjUE4UGAsOCwCWXXJLOO++8DhVx/vnnp1NPPbVDebpb4k8//TTNMMMM6d57702bbLJJevDBB7tbE6M9IwAB6/Tmm2+e3nvvvRFQW1RRj0CPJ2KjjDJKevTRR5vkmmuuSU8//XT64IMP6vsazyMYgb/+9a/psMMOaxqbCy+8MFVVNYJb0XJ1V199dZp11lnTWGONlSaffPImmWiiidIuu+zScqZWQs8444xEWokeIcEW0E033bTVeX/22WenySabLI0//vhNfdVv/V1ttdU63caWMi6yyCItBXfbsDfffDNdeumlmZBo5BtvvJHvxxtvvHTggQcKSjfeeGOabrrp0sQTT5wOPfTQHLbgggum3XffPSEzOaCH/plyyinTrrvumtZYY430r3/9K+2zzz7ZXPnNN990qkc0a+ai+UWWWGKJjNPzzz/fqfJGZqbLLrssbb/99sPUBHsSfIepkOGc2fy3Pnz99dfDuaaU5pxzzuFeR0+rYJSe1uD69l533XXNgi644IK00EILpQkmmKBZ+H333ZdsRi+88EKz8HjoegQGDx6csX7ssceSTQ7uxuWdd97p+so6WaLNgTZjpZVWSjbeIkw0pcgnn3wynXvuuemiiy5KL774YuJPQ2si7PHHH8+nR8933HFHIvpJrrrqqvTFF1+UYjIW+q+Ogs2gQYOaNnCHBiRVXnLTTTc15S03X375ZZJHPLn11lvTPffck7766qv06quvJvkdQFzFk0ceeSR9++23uYi//e1vaccdd0x77713s/5qKzIqkbHSTnkJLUntZlzfTm2oXbjvv//+bOJ66623cp+VQZ566inFJ/MBduX5pZdeSuqDrzwSffzxxznvxRdfnPE2BsqAyWeffSZJxvb666/P6cTRZn3++ec5rvx5++230+WXX57TwETb1Ffia682WxjMNddcORh5sK7ssssuaYUVVshhc889d9pggw0yIdt4441z2I9//OO03nrrpfKcA3von9FHHz0ttthimZCOOuqo6b///W8688wzMyHraJe22mqrNPvsszfNM5oW41fGyJysfV/MCQeJ2nrefffd3BbjaxzND3PFnC9hZQ58+OGH+d0QL18px9zxfkrv6v0ocea6cGnuvPPOPE+Qkffffz8nMdduueWWRLzr0hbJCRr488knnyQkzHvrXSz5XevJ+1133ZXbIE6/6ou3doorUtvP+rStPetryX/FFVck72Hpb8nz0EMP5XeYtveZZ54pwU3XEq+ca6+9NsG+RHq/vMviPvroo/Twww/nPt1+++05CfzFWUdciwjPCfrwnx5PxOrH7rjjjkvMlbXhFgCaGZuuRbk2rmP3kboRBJAGC4dN2pVYOJCGRvKPjDQ0ZDSrs8wyS1pmmWVyEyzGJ510UtaA6JP2n3zyyYmIQ1L0C3kg+kksbjabXMiQPwjY6aefnje3PfbYI0lz5ZVXJovzkOhkwbbYCyeIQS0hFH/ssccm/jziCaLyn//8J5M5bbORmefa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JgJBxPrmuEevA4FAIBAIBAKBQKAbIBBErBsMQm9twi233JK23nrrVroXwYFAIBAIBAKBQCDQ44nYV199lQ488MA000wzZbnoootiVLsQgbPOOivNPvvs6eSTT+5wqU888UQ644wz2sxXO3bG8KabbmozfUQGAoFAIBAIBAKdQqCbZurxROzss89Or776anrqqaeynHbaaenyyy/vpnD3vGattNJK6aijjkrvv/9+hxu/9tprpxdffLHVfJdcckm69NJL87iV8VtooYVaTR8RgUAgEAgEAoFAb0OgxxOxG2+8Ma2++upN43L00Uen22+/vem53Nxzzz0JSXv++edLUK+83nrrrbmf+ko++uijpn7SNtFQPfnkk+nqq6/O6VrSID722GM5Tv6WsGwqsJWbd999N1144YW5DNf6ZB9++GEmyxdffHEab7zxcjp13XffffVJ4zkQCAQ6j0DkDAQCgR6AQI8nYossskjWqBSsbebzzDNPeczXzz//PB1xxBFptdVWSzb/HNgL/+jbueeemz777LMmWXfdddMLL7yQe/vll1+mQw89NO24447prrvuymkQM+bHnGDIn0GDBqXDDz88xynnzDPPTMjtkKiG//vuu+8SzGkqN9lkk6HyffvttzmeWZmoh7gfKnEEBAKBQCAQCAQCvRiBHk/EllpqqXTBBRekGWecMQvS8Kc//anZkI0xxhhpjz32SE8//XRaY401msX1lgdaKNorJItJsMjOO++c9t1339zNxRZbLE033XRp4oknTptvvnmS5uCDD06nnHJKjvdHeG0Z7uUR16hMMskkaeWVV87SUp4JJ5wwLb/88mnBBRdMc889d26Htsw777wtJW88LFIGAoFAIBAIBAI9DIFRelh7h2ruCSeckH7/+99nkoVoLbnkklmjU5twlFFGSZNPPnmaYYYZ0kQTTVQb1Wvun3322aztm2uuudLUU0/dJIsvvnh67733mvoJi+WWWy6NM844OQwpoynzQEs255xzZqw8k0knnTQhcO5DAoFAIBAIBAKBQOD/EeiKux5PxK677rqsXSlgLLvssk2muBLWF660UEjUSy+9lOqF/1UjGCBdb7zxxlBJ33nnnaHCIiAQCAQCgUAgEAgEhh2BHk/EFl100awNK1Dce++9aeaZZy6PTdfTTz89rbPOOumOO+5oCutNN8yHs846a/rX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YYZJPBs54Lc/tgwmmWSSdOWVV/4WMoRe2miWSQsOhe69996+UnzzzTd5BYxn0kknTSeddFIzHp4YcYX22WefZvFd4eE///lP3sIwKa633noJUfiLLbZYU/W0w6AVhxg24k2oTUxd4EZbpp122mx4qSejY7vttksM3vZWz1b16quvnkqfmQxa8vwxxAvPEUcckb0P9TIYqSV+tdVWyyvdRx55pImFLJR4vE0Rv92Y0LXl2GOPzUYL3hlnnDHdeOONmYMnV9iqq66aevfuncM23XTTXG9Gs0VXDqm+WTsAABAASURBVPztzwknnJCkr2Nhm3OmmWZKBxxwQPYiTdJn3KMTTzyxn6v337JsusjDRHPyySc3hbXnxiTFyOQB4BFbcsklE29meya4xvwfffTRxBDbYIMNGqPafOb1MBFOPfXUeXHBEIV9WaTxIk455ZSJl0ZmV111VdLmP/3pT8lWq7D2EMN60UUXzX0EZ2W0J10jz913353mnHPOnI9FYT2eLPDIyX+KKaZIvO71ePcwnnXWWXN6fMa+uolDFofCLVree++9RJ48X3LJJaIzbbnllk3pp59++gTDHPHbn6233jrH//Wvf807DksttVR+vuiii37j+PWyzjrr5HD5b7/99unAAw9M2vBrbEqvvfZaWnrppTOPPirhrvPPP38Op4+KB5cMyUubfvrpJ2wDRBYa+ow+IQPq4h62VVXlvO+8884011xz5booe6eddmrRo0WPikfw66ic77HHHk1lyOOJJ57I5Xfkj8XpZZddlsz/o446akeSdgnebm+ITT755FnAizvVhMMyrm9z8Bp88cUXaaihhkriuwTyg6kS88wzT8aLUkAUC89BqY79fqsiq2/xVhiMWltHFICzOFY3tvzEUygjjTRSso1j0in5tPfKo9HRgduevBkZJoSxxx67id0ApUwYCwJNSNrFGNUOZwsoP2d9xNeJ/DBQ62HtvddG2LWXv5HPZDDzzDMnylMcOSb3V1xxRRp99NEFtUlVVWWDWp8h28aHHHJIqhs2lChPlngEj3q8VTQPozhEcdtirBdu+08co9e4q8e537zP1inPnu1TihPvk08+mUw04uVvYuLZo5SFWUTZbpBGHworxIATV55dyS5lvvPOOyeGmjKQfh122GGxNJE6OtPWFFC7GXroodMiiyySrrnmmlpo+24tBhmH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Q6x79FPUMhAIBAKBQCAQCASGQATCEBsCO7VnNilaHQgEAoFAIBAIdD8EwhDrfn0WNQ4EAoFAIBAIBAKBwY1AJ5UfhlgnARnZBAKBQCAQCAQCgUAg0FEEwhDrKGLBHwgEAoFAz0QgWh0IBAIDAYEwxAYCqJFlIBAIBAKBQCAQCAQC7UEgDLH2oBQ8PROBaHUgEAgEAoFAIDCQEegWhthXX32V3njjjfTDDz+0CIf4V155Jb300kvp448/bpGnuwX6nb1XX301vffeex2u+k8//ZTefffdjAdMevfunb755psO5xMJAoFAIBAIBAKBQGDgIlA3xAZuSf2ROyPk9NNPT0cddVTacMMN0//+97++cvn222/Tqaeemg488MB0xBFHpMMPP7xFvr4SdvGA559/Pu29995p991373BNn3jiiXTAAQdkPGBy2mmnpTfffLPD+USCQCAQCAQCgUAgEBi4CHRpQ2yooYZKI444YpphhhnSTDPN1CISd911VxphhBHSiSeemBgciy66aDrnnHNa5O1OgbPPPnvaZpttOlzln3/+OT3yyCMZM3iggw8+OE011VQdzisSBAKBQCAwcBGI3AOBQKBLG2JjjTVW+tvf/pYWWWSRNPzww7fYW9dee21aZpllssGGYY455ki29Rq9Z3vuuWeaYIIJ0uWXX46t0+mss85KU045ZS5DOQygUsgtt9ySw3v16pW22GKLfD/XXHOll19+ubDkKwNSWrTpppumjz76KIe398/NN9+cJpxwwvSPf/wj7brrrrkczyeddFJTFrYtt9pqqxynnFVWWaUpzs3555+f44S/9dZbaYUVVsjPxx57rOigQCAQCAQCgUAgEOhEBLq0IdaedjJmhhlmmCbWqqryff08mTNktjBHHnnk9P777+f4zvrzyy+/pDvuuCP17t07PfTQQ+ntt9/OZ7PU69xzz83FLLbYYmm33XbLW4V//vOfM4/nvfbaK8czjs4777z0+OOP5zh5LLjggmmfffbJ8e39s/jii+ctyEMOOSQdf/zxOS9bkltuuWXOAg5LLbVU9i4qA6222mppo402ajpDtvbaa6e77747jT766GnZZZdN66yzTnr22WcT7F577bWcT/zpfwQiZSAQCAQCgUAgUEeg2xti9caU+x9//DF9//335TGNNNJI6cgjj0wvvPBC9kg1RXTCDYPvgQce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xfiBHbjFFlukddddN3344YctFiXu5ZdfbjEuAvsDgUgSCAQCgUAPQqBLG2JPPvlkmn322dMFF1yQZpxxxvTLL7/01TUHH3xwGm+88dIXX3yR6fnnn08nn3xyX3wDM+D7779PL774Ylp22WVzfWeZZZZ00EEHpRVWWCG99NJLuej3338/7b777jlem9ZYY400//zzJ4ZkZujBfx5++OHcd5NNNllfKMAHhmeddVYaY4wxmuK//vrr9Oyzz6aZZpopYzrzzDOnc845J80222xNBvubb76ZGHHwRhtttFHSN/qrKaN23Bx77LFp2mmnTU899VSL3EsttVQ677zzUkfzbTGzCAwEAoFAIBDoUQh0aUOM8WWSZliNOeaYLXbM6KOPnnbdddemuEMPPTQ98MADTc/l5rbbbku8Zc8991wJ6rQrI+zUU09NylZf5U8xxRTp6aefbirDRM3QEI/+8Y9/pE8++SR9+eWXaVD8e+ihh9IxxxyT7r777ozD1VdfnesHk4suuqjJIGTsXnfddZlH3FFHHZXee++9piqKv+uuu5rFv/rqq03xvFbSwfumm27KfPqPMdXE1HBzySWXZKN01FFHbYhJ6fXXX29mgBWG++67LzHObrzxxgRPz19++WV65ZVXCktipC+//PI5Hs8666yT8/vqq6+aeNpzM9xwwyVy1hrv3HPPnf73v/+l//73v62xRHggEAgEAoFAINAiAl3aEGuxxg2Bf//735uFMDDmnHPOZmHffPNNOv/889POO++cTNzNIgfw4aeffsper6WXXjpNN910OTcT91//+td08cUXp/HHHz+HDTXUUOm1117L9/7w4DAkWjMw8XQm/eEPf0iPP/549hAp8/bbb09bb711mnrqqbNn6c4778zFMRjvv//+NM0002Saaqqp0r777pvqxtZnn32W4/BIz1gr3qLf/e53OZ9d+xjHt956a+bTdobqu+++m+Pqf95+++1sEPJs1cP7dc/g4u3aeOON07jjjptZRxxxxLTVVlulyy+/PI011lg5bOihh25mHC244ILpsssu66dRlRN28A9sRx555NwOhmoHkwd7IBAIBAKDGIEorish0O0NsTqYjDC02Wab1YPT8MMPn7crbV8yPppFDuADQ+ytt97KZTRmNcccc6SRRhopByuX0VDOss0333xNBkNmaMefbbbZJvXvWaTJ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2754BmXA3Xffnf73v/+1WuRXX32V/vjHP+a6qvMMM8zQKm9rEXfddVc67bTTWoyWJ5pzzjnTK6+80iJPa4GwG3HEEdM555zTGku7wp944ok05ZRT5jZOMcUU7UrTGtNLL72U1Ku1+EER/vbbb6cll1wynXnmmennn3/u1CIPPvjg9Ic//CGdeOKJnZpvZBYIBAKBQCDQPRDo0obYU089leaee+506aWXptlmm61FRA844IA08sgjp2+//TbTN998kw466KAWeQdFIONn7bXXbrWoxRdfPF100UW5ruqsja0ytxLxyy+/pJ9++qnFWHm+/PLLadFFF034WmRqJfD4449Pf//731vNu5VkfQXPNNNMiQGFGMp9MXQggOHz448/diBF57L+9a9/TRtvvHEaf/zx06ijjtpfmb/44otp//33T19++WVf6Xffffd08cUXDzDmfWUcAYHAQEIgsg0EAoHORaBLG2K8Rffff3/65z//mb0GLTWdIbbzzjs3RfEwPPnkk03P5ebmm29OhxxySHrmmWdKUKddGRu8dvI/4ogjWizDdqV4k/L111+f6+K50yrRzozuvPPOprKV37t3775S/vDDD+mmm27KfIceemh64IEHmvHwTEqLxN9yyy3N4tvz8N5772WvnjwYgNdcc02LuLUnr4HJc8kll6QbbrghG7b9Uw4j69RTT0333HNPOuqoozKmxx57bHr22WebZffZZ5+l8847L8efcsop6aOPPmoW/8gjj+Q4eB155JHp4YcfborngRT+wgsvZK+d+169eqUPPvigiSduAoFAIBAIBLomAl3aEOsfyE4//fQ0zzzzNEvKS8YLxfvAwGgW2QkPQw89dJp44onTLLPMkkyKqDHbCSaYIMfbNpxuuunyPf5GvoH9zABSbqGtttqq2aTOi3bVVVele++9N9eRd+uyyy5Lxdjiodprr72SLUd5zDzzzOm2225LV155Zbur/vHHH6ezzz47/e53v8tljD322OmEE07I+Si/3Rm1wsgwZvzYTmyJttxyy8TwaSV5Q/CAPcLpz3/+cxpvvPESLGFmgTHGGGM0ZcyLST6/+OKLjAcP70knnZQ+/fTTzPPqq6/m7eI//elPOX7yySfPXlXGGYYxxxwzvfXWW2nTTTdNsFXGm2++mQ07WOAJCgQCgUAgEOiaCAzVNavVsVoxLlZZZZV8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Pvusr/gTTjghnXHGGX2FR0AgEAgEAkMiAkN15UY9/fTTaYEFFkhXXnllmmuuuVqt6k8//ZTOPffcbIT98ssvrfIN6ojuWB784H3OOed06eqb7GedddY08cQTJzKCyAjD5b333ktbbbVVGn/88dN8882XevXqlQ2PlVdeOY0++uhp2WWXTccdd1xafPHF07jjjtss/W233ZbKv3/84x9pvPHGy4sA+Rf6y1/+kl588cXC1nT97rvv0oorrph23333pjA3jAoyuv7666eqqgS1mxZaaKHEeNMv7U7UAiPj684770zqscwyy7TA0bGgeeedN2Nw6aWXNkt49913p9NOOy2Xo6wbbrgh3X777c14Hn744fTggw+maaedtll4edBP9913X3rppZdKUKdef/755/Taa6+lnXfeuanvN9pooywz//rXv3JZX331VbrkkkvSUkstlXnIypprrpkuvPDCHB9/AoFAIBDoLAS6tCE2/fTTp7vuuisde+yx6Q9/+EOrbX755ZfzZLXccsu1ymNC2H///dNTTz3VKk93j3j00UeTNp5yyimJMWJSOeCAA7IhW9r2/vvvZx586Oqrry5R2TuB3+QqXDwysX7yySeZr/H57LPPzvndeOON6Ycffsg8vC34zj///Pzs6rlgf8EFF6RTTz0194XyxOmfkj4nauPPEksskbbeeuu09tprZxkhJzfffHOuCy+LPJdffvlsBDCAeHCuuOKKbFSddNJJabvttkuHHnpoWnLJJZulP/jgg9MLL7yQSz/ssMPS0ksvneAp/0Jzzjlnjm/8I/6tt95KPD2Ncf16/uCDD9IRRxyR667erU32jBf1w3PVVVel77//vilb5WqXOMSIYEw0MbTz5vTTT2+qB6NWX7UzaWY788wzm3mzjN2jjz46x7X3j7HOSGMU//jjj+1N1m6+L774Ip111llpkUUWSbfeemvu/2233Tb3e8H0ySefzDpFX+jXiy++OI011ljp888/b3c5wRgIDAYEoshuiMBQ3bDOzapMcdq6nHHGGdM444zTLK48fP3113l1u88++6RbbrmlBA9xV96dufp4DhlFJpbnnnsu8d64mlgYYbwNvBmFeDBM4MAYbrjhkvBpppkmTTXVVPnes23h4YcfHkuaZ555sjejGGYzzDBDGmOMMfJkVgypP/7xj7kvTOQmuzfeeCPh47Xk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oEsbYu2B85dffkkPPfRQ2nvvvTMdeuihfSXjSTviiCMSr9Rll13WV/yABrz++uvp7LPPTnfccUdiQDHITjzxxPTcc8+1O+uPPvooHXfccTm9PK6++uq0zTbbpJtuuinnwfN39NFHN8XjOeecc3K5mSH+dBSB4A8EAoFAIBAIBAY7At3eEJt22mnTMccckxZbbLFMY401VjbI6sgOM8wwaeedd0533313WmGFFepRA3zPY/fII4+kGWecMe25555pr732Svvuu29aZZVV0qmnntru/Blijz32WE4vD3kdeOCBaamllsp53HPPPWnsscduisezyy67pMcffzw9+OCDmSf+BAKBQCAQCAQCgUBXRaDlenV7Q2zUUUdN8803XxOtscYaafjhh2/mjXLObOqpp848E044YctI9GfoDz/8kC655JK08sorpxFGGCEx+oYbbrg099xzp45436aaaqr8QoL0aPTRR0+vvfZaNr5UjZHGQyaukLacdtppybYrnqBAIBAIBAKBQCAQ6F4IdHtDrBFuW5XOUjG+GuMGxrOXCGaYYYZ04403ph9//LEZvf322x0qcvnll2+W3uH+Cy+8MOcxyiijJEZXYxnauu6662ae+BMIBAKBQFdCIOoSCAQCbSPQ7Q2x/fffPz311FNNLb3yyivTl19+mcYbb7ymMDfeVrSd19kH3Icddtg011xzpeuuuy699957isr04YcfptNPPz3ft+eP7UVbp3Ve+b766qs5aOmll256KzQH/PaH18325G+PcQkEAoFAIBAIBAKBboRAlzbEnn766byduMQSS6Rzzz03rbrqqvk7XEcddVQTxLYADzrooMxni5Jhst122yVbloXp66+/ztuEzlx5A7OEd8a1qqq8DamOm2yySVM91NV5NWUw0HbYYYcch89Be3VFN9xwA5b06KOPpt133z3zCEevv/562nTTTXP85JNPnuRxwQUXNON5+OGH0wQTTJB54s/gRiDKDwQCgUAgEAgEOoZAlzbEpp9++uSQOsPF5yAYHXfddVfacccdm1rpTUhntPAhbxtOPPHETfFuRhxxxNSrV69k23KnnXYS1Kkkf4fq//3vf+f6qsedd96ZVlxxxVzOOOOMk7zxKFxbHMx3j6TDtOWWW6Z77723Kb24ww8/PEkrHnkxwcdqxRU67LDDms6R4QkKBAKBQCAQCAQCge6DwAAZYt2nmVHTQCAQCAQCgUAgEAgEuh4CYYh1vT6JGgUCgUAgEAi0jECEBgJDHAJhiA1xXRoNCgQCgUAgEAgEAoHugkAYYt2lp6KePROBaHUgEAgEAoHAEI1AGGJDdPdG4wKBQCAQCAQCgUCgKyPQ1QyxroxV1C0QCAQCgUAgEAgEAoFORSAMsU6FMzILBAKBQCAQ6F4IRG0DgcGLQBhigxf/KD0QCAQCgUAgEAgEejACYYj14M6PpvdMBKLVgUAgEAgEAl0HgTDEuk5fRE0CgUAgEAgEAoFAoIch0AMMsR7Wo9HcQCAQCAQCgUAgEOg2CIQh1m26KioaCAQCgUAg0C0QiEoGAh1AIAyxDoAVrIFAIBAIBAKBQCAQCHQmAmGIdSaakVcg0DMRiFYHAoFAIBAI9CcC3cIQu/fee9O6666b3n333Vab+fHHH6fVV189zT333GnllVdODz/8cKu8EREIBAJtI3D66aenO++8s4nx5ZdfTksssUQeY1tuuWV6++23m+Lac7PvvvvmtE8++WR72Fvl+d///pfzMdZ33XXXVvkGdwSdtNlmmw3uakT5gUAg0MUR6NKG2AMPPJCGH3749I9//CP97ne/S999912LcOKbf/75E0V///33pyuuuCLNPvvsLfJ2SuAQnMkvv/ySrrzyynTOOed02Va+9957aZVVVknDDTdclo9hhhmm6X6ooYZK33zzTdpll11SPZwc/e1vf0vffvttU7uWX375pjOEBwoAABAASURBVPR4TzvttKT9GJ5++uk022yzJfmdcMIJOfyCCy5Io4wySs53pplmSgwK/P/5z3+aylfOeeedly688ELZZJp44ombyil13mSTTdKXX36ZXnrppZyfdGRcPcr9vn0Mlx9++CG98soraZpppsl5DD300Hks4Nl///2T+NTn308//ZR23333NPLII2e+xRZbLOfdJypdf/31OY08Pvroo/TVV1+lv//97zlMeUsuuSS2ZvTcc8+le+65J80wwwxN4VNMMUW66aab0uWXX57LqWPZxNSPm337tGecccZJX3zxRT+42o4af/zxk3F+yCGHJO1pO0Xncvz444/p6KOPzvjph2GHHbbpHp533XVXLnCMMcZI6MADD8zPA+vPZ599lheh6oL23nvvdOqpp+a+UiYZ+ec//5nlQrw6kdH77rtPdFAgEAgM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pQ2x//znP2mUUUZJe+65ZxpppJHS999/3xeWn332WXr44Yeb6JprrklPP/10P42QvjLpggGLL754Ouigg1Lv3r07XLs55pgjwWGKKaZoMS18br/99nTuuec24bbhhhu2yBuBgUAgEAgEAoFAIDDwEOjShthcc82Vvvjii3TttdemccYZp0UU7rvvvmbhV111VVpggQXSaKON1iz8mWeeycbJW2+91Sy8sx5ee+0grXS6AAAQAElEQVS1dMMNN+QyGEGvvvpqU9bvvfdeDmdUPfbYY/n+tttuS19++WUTjxvx0qJHHnkkfffdd4I7RNKiu+++O3311Vd9pb311lvTLbfckj744IN0//3357rAsCUjt6/E3SQgqhkIBAKBQCAQCHQXBLq0IdY/IJ555pnJlls9LYPm2GOPTcsvv3zesqvHdcY9I+ycc85JTz75ZHrxxRcTo++UU07Jnjn5M4jOPvvs9I9//CPhw3PFFVekXr16ic70+OOPp5NPPjmnF3/55Zen8847L8d15I+0PITKb2krl4HoDNnHH3+cXnnllVzem2++mX7++eeOFBO8gUAgEAgEAoFAIPArAgP0d4gyxBhCX3/9dZp55pmbgTLMMMOkPfbYI/Eyrbrqqs3iBvThp59+So8++mg+a7XTTjulHXfcMRtca665ZmIMyX+yySZLCy+8cPZQOb+GZ4cddkjXXXed6PTJJ5+kO+64Iy233HI5fYmfYIIJcnxH/ki76aabpkknnbTFZOKct5tzzjnTVlttlctbY4010vDDD98ifwQGAoFAIBAIBAKBwMBDYKiBl/Wgz/mCCy5I6667bhp22GGbFT700ENnw2TWWWdN4403XrO4AX344Ycf0qWXXppWX331NMYYY6RRRx012Ra1PXrTTTc1y3611VZrKh+ftBjef//99Msvv6Spp57aY6axxhorLbXUUvk+/gQCgUAg0KUQiMoEAoFApyEwxBhizls99NBDyVuUnYZOOzIaaqih0owzzphsNX7++eepTi+//HI7ckjZcLQ1+OOPPzbj9yJCs4B4CAQCgUAgEAgEAoEhCoGhhpTWOGP1+9//Pk0//fQtNomhZNvONmKLDP0ZyPvmpQIvFPhsRMmGl+uEE04oj/288tLxkDnAXxiff/75xMNXnuM6WBGIwgOBQCAQCAQCgYGCQJc2xJ544olkO3G++eZLDuEvu+yy+SzWIYcc0hcY9957b1psscX6Chfg3NjVV1+djj766OSzDcI6i6qqSnPPPXdaYYUV0nrrrZfrq85eDHA2TDneYDz88MPTPvvsk0477bTEYPNJDh68eeaZJ78ZamvzhRdeaEq/884757Nu6r3tttvKpk3yuQtl29L0XbAVV1wx5+csWEks3vbtGWeckV9q8LzllluW6LgGAoFAIBAIBAKBwCBEoGVDbBBWoF9FzTTTTPkgPIPMG4C+f+WNwN12262vZMK23nrrvsIFjDjiiPltReewGDjCOpMcdPfxVWfCeNyQb6CVbdL5558/eVOxd+/eyWH5cccdN5166ql5G9OnI8Yee+w0+uij54+3Sot8gmL77bfPX8c//vjj21VdLyRICyd4eXvT84knntiU3jNvm3i4ej7ppJOa4uMmEAgEAoFAIBAIBAYdAl3aEBt0MERJgUAgEAgEAoMTgSg7EOipCIQh1lN7PtodCAQCgUAgEAgEAoMdgTDEBnsXRAV6JgLR6kAgEAgEAoFAIKUwxEIKAoFAIBAIBAKBQCAQGEwIDDJDbDC1L4oNBAKBQCAQCAQCgUCgyyIQhliX7ZqoWCAQCAQCgcAAIBBJA4FugUAYYt2im6KSgUAgEAgEAoFAIDAkIhCG2JDYq9GmnolAtDoQCAQCgUCg2yEQhli367KocCAQCAQCgUAgEAgMKQh0Z0NsSOmDaEcgEAgEAoFAIBAI9FAEwhDroR0fzQ4EAoFAIBDoKALBHwh0PgJhiHU+ppFjIBAIBAKBQCAQCAQC7UIgDLF2wRRMgUDPRCBaHQgEAoFAIDBwEehyhtjnn3+ett9++6DAIGQgZCBkIGQgZCBkoMvLwICaaV3OEBtxxBHTBhtsMJgoyg3sQwZCBkIGQgZCBkIG2i8DQ5whNswww6QZZ5wxKDAIGQgZCBkIGRjyZSD6uNv38RBniA1ogyJ9IBAIBAKBQCAQCAQC3QWBLrc12V2Ai3oGAoFAfyEQiQKBQCAQCARqCIQhVgMjbgOBQCAQCAQCgUAgEBiUCIQhNrDRjvwDgUAgEAgEAoFAIBBoBYEwxFoBJoIDgUAgEAgEAoHuiEDUuXshEIZY9+qvqG0gEAgEAoFAIBAIDEEIhCE2BHVmNCUQ6JkIRKsDgUAgEOi+CIQh1n37LmoeCAQCgUAgEAgEAt0cgTDEumEHRpUDgUAgEAgEAoFAYMhAoNMNse+//z49/fTTyW9Ggui1115L2267bbrooovSt99+K2ig0jfffJMOO+ywdNBBB6WPP/54gMv65Zdf0r333pvbcPnll7eZn/YffvjhmV+7C+22227pnXfeaTP9wGJ48MEH0z/+8Y++6rXddtull156aWAV26Pyveeee9Lf//73Joz33HPPRB46G4T//e9/uYzzzjsv/fDDD52dfbfJ7/bbb0877rhjuu6667pNnVX0lFNOSSeddFLuw6IfyvWYY47B0iLdcMMNWb6uuuqqZvF03h577JGOPfbY9NlnnzWL69fDE088keilnXfeuUlf//e//010dr/SNcZ99913TW05+uij048//piMBXpl7733zn3UmKYznx955JFc/s0339yZ2fYzrw8++CAdeeSRaa+99krmiH4yd6FI/bL99tunM844o6O1asavj6+99to81zeL6M8HcnLIIYekt956qz9z6N7Jhurs6j/zzDPpqKOOahLOccYZJ00wwQTp/fffT7/73e86rbgTTzwxbbTRRn3lp4xZZ501DT300H3F9U9AVVVp2mmnzUmrqsrXfv3xE03TTz99euihh9IiiyySNt1007Tiiivm9n/xxRf9SjpQ46aaaqqcv8GjToVMCMMOO2yOiz/9j8B7772X0Prrr5/7fLLJJksjjzxyGmqoTh9iaYwxxkjjjjtu+vLLLzuU/x133JHmmGOOXM/+b2n7UlL4q666avroo4/al6CDXPfff3+68cYb05///OdEF3Qw+WBhf/PNN9MSSyyR/vKXv6T//Oc/6W9/+1sac8wx05133pllZt555+2njqTXLOZGHHHEZvWn86abbrpshFVV2zpK4tdffz099thjaaWVVkoPP/xwoheETzjhhOncc8912y4yeWpP0XXTTDNNmn322ZPFwvjjj5+Mgw8//LBdebWHaZ111knKLLxw3GGHHXKZcDQmSlxL1/XWWy8v0luK60jY73//+zTppJMOlIVWR+rRUV7jZeKJJ06M546mrfO/+OKLyULz008/rQf39/2CCy6Y3n333WT+7O9MunHCTp0leLx4XazKiiHkOsooo6Q//elPHZo02sJ0q622SmeeeWZmY52ff/752eOkPPWgrJSbGQbwD0NlhBFGaDLI+pWdidcgnWKKKRLFOfXUU6cFFlggbbDBBmm00UZrNalVLU9eqwwdjLBKu++++9KVV16ZU44++ujp66+/TiuvvHKitBlm+oRHYZJJJsk8Hfmjvla/HUkzqHh/+umn9O9//zs999xzg6rI9PPPP6dFF100/2baRBNNlMjL8ssvP1AUS1VVafjhh09TTjllhxYcCy20UF4gWBwNbGDmm2++dNlll6U//OEP/VWUMW18t+TVtqDhnZ577rnThhtumK6//voOlfH222+nXr169TtNJ8cq87TTTktnnXVWlo211lorGw+8TyussEIek3QFg6ZfRZv4Fl988WYsdB4dNdZYY6VRRx21WVxrD3gZygzzhRdeOPXu3TuzWjzQX215Jsg7A/if//xnNuhKG5Zeeuk0//zzpz/+8Y9ppJFGSozPVVZZJefdGX94gXnx5MUbvNNOO2XPFAPt4IMPzosfca3ROeeck3gPW4tvbzi8v/rqqzTTTDOlqmqf8dvevNvio9+uueaadnuj6OpDDz00ZzvaaKOlW265Jc9JOaA//nz66adp3XXXzYs6xnZ/ZNFXEvMTObbA7CuyBwR0miFmJdKrV6/EsrViN6DhR1jfeOONJiPGCpmCLnTVVVc1KYFHH300K28rXasoAoTv7rvvzqs94Qb2k08+mflsf37yySeJQcAQE24r6IUXXkiTTDJJevnll7MhQtm98sorSVnCKEX5MhgJlXArRPVticRZuVJeLcXXwyio559/PisiaSgOq1irXVu2DCNt49q2pWJlIXyTTTbJhkPBQJhJCL92KoPHRb1NPLfeemvSDuHiPYt7os92g2eGCOUkDcNUWx944IGkHH2izdKXAcpIM0DlwZshX8SgEya/u+66K8H22WefTVtuuWVWwPoDpraJyIA0r776akKlTiZO2wf4xCtLGfJ1FWY1BA9h8tKPwpH26HteEPWxVaxPxCFpkK0QbStbPzDED0M44xVvFa0d0sgHztr21FNPpSuuuCKRI3VWf9tB0uG56aabstzZApGP8ELjjTdek6GtD8jV5JNPXqKbrjBXLlIeeRGp7sKQtMIQHmH6hkfL5KMu+pSxj0cYfPGV+gqvE/kXbyzoJ4qc15ZSt20tf4YruYC1FTMM9LtxKC9j9+qrr85GLrz0p3z0m3EoP7JBJpSlTfCXtt6/ZJznXN/jIw8MAffwMTZs71966aW5L6QvJP8LL7wwwaKqqrwNJr20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\" width=\"610\" height=\"622\"\u003e\u003c/p\u003e \u003cdiv id=\"Sec31\" class=\"Section2\"\u003e \u003ch2\u003e3.7 Evaluation Protocol\u003c/h2\u003e \u003cdiv id=\"Sec32\" class=\"Section3\"\u003e \u003ch2\u003e3.7.1 Metrics\u003c/h2\u003e \u003cp\u003eFive metrics are reported: (1) accuracy: correctly classified datasets / total; (2) pure pattern accuracy: accuracy on P1\u0026ndash;P4 only; (3) transition detection rate: proportion of P5\u0026ndash;P7 where both the transition and both segment labels are correct; (4) Detection Latency (DL): |τ̂\u0026minus;τ| in minutes for correctly detected transitions; (5) confidence score (CS), defined as: CS\u0026thinsp;=\u0026thinsp;score_dominant / (score_SEASONAL\u0026thinsp;+\u0026thinsp;score_TREND\u0026thinsp;+\u0026thinsp;score_SPIKE\u0026thinsp;+\u0026thinsp;score_STABLE), where score_SEASONAL = (seas_str\u0026thinsp;+\u0026thinsp;fft_power) / 2, score_TREND = (spearman\u0026thinsp;+\u0026thinsp;min(trend_ratio\u0026thinsp;\u0026minus;\u0026thinsp;1, 1)) / 2, score_SPIKE = (max(skewness, 0)\u0026thinsp;+\u0026thinsp;min((max_mean_ratio\u0026thinsp;\u0026minus;\u0026thinsp;1)/2, 1)) / 2, score_STABLE\u0026thinsp;=\u0026thinsp;1\u0026thinsp;\u0026minus;\u0026thinsp;max(score_SEASONAL, score_TREND, score_SPIKE). For multi-segment outputs, CS\u0026thinsp;=\u0026thinsp;mean(CS_per_segment). Mean CS across 21 pod-baseline runs\u0026thinsp;=\u0026thinsp;68.3% \u0026plusmn; 13.0%. Pod-baseline results are reported as mean\u0026thinsp;\u0026plusmn;\u0026thinsp;SD across three repetitions. Statistical significance vs. each baseline is assessed via McNemar\u0026rsquo;s exact binomial test [\u003cspan citationid=\"CR24\" class=\"CitationRef\"\u003e24\u003c/span\u003e] on n\u0026thinsp;=\u0026thinsp;21 paired binary outcomes (correct/incorrect per dataset per repetition). The result is unambiguous without post-hoc power analysis: the proposed method correctly classified 20/21 cases, whereas all baselines were limited to \u0026le;\u0026thinsp;12/21; all 8 discordant pairs unanimously favor the proposed method (b\u0026thinsp;=\u0026thinsp;8, c\u0026thinsp;=\u0026thinsp;0). For completeness, under the exact binomial null distribution Bin(n_disc\u0026thinsp;=\u0026thinsp;8, p\u0026thinsp;=\u0026thinsp;0.5) that underlies McNemar\u0026rsquo;s test, the two-sided critical region at α\u0026thinsp;=\u0026thinsp;0.05 requires b\u0026thinsp;\u0026ge;\u0026thinsp;7, which is unconditionally satisfied when b\u0026thinsp;=\u0026thinsp;8, c\u0026thinsp;=\u0026thinsp;0 (p\u0026thinsp;=\u0026thinsp;2\u0026times;(0.5)^8\u0026thinsp;=\u0026thinsp;0.0078\u0026thinsp;\u0026lt;\u0026thinsp;α).\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec33\" class=\"Section3\"\u003e \u003ch2\u003e3.7.2 Cross-Environment Protocol\u003c/h2\u003e \u003cp\u003eThe framework was applied unchanged to the Online Boutique frontend pod under two conditions: OB\u0026thinsp;+\u0026thinsp;LG (load generator active, simulating realistic background traffic) and OB\u0026thinsp;\u0026minus;\u0026thinsp;LG (load generator disabled, isolating k6-injected patterns). One repetition per condition was conducted (7 patterns each). The purpose of this study is to assess the generalizability boundary of the framework under a fundamentally different deployment context, not to provide statistically confirmatory evaluation. With n\u0026thinsp;=\u0026thinsp;7 per condition, formal hypothesis testing would be underpowered (estimated power\u0026thinsp;=\u0026thinsp;0.53 for the observed 42.9-percentage-point accuracy gap), so no McNemar test is applied to the OB results; findings are reported as exploratory evidence only.\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv id=\"Sec34\" class=\"Section2\"\u003e \u003ch2\u003e3.8 Comparison Baselines\u003c/h2\u003e \u003cp\u003eThree baselines are evaluated on the pod-baseline dataset (21 runs):\u003c/p\u003e \u003cp\u003e \u003cul\u003e \u003cli\u003e \u003cp\u003eB1: Fixed-window STL\u0026thinsp;+\u0026thinsp;threshold: full-window STL decomposition followed by threshold rules on seas_str and spearman [\u003cspan citationid=\"CR7\" class=\"CitationRef\"\u003e7\u003c/span\u003e].\u003c/p\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eB2: Fixed-window ACF\u0026thinsp;+\u0026thinsp;FFT: full-window ACF peak values and FFT power ratios [\u003cspan citationid=\"CR8\" class=\"CitationRef\"\u003e8\u003c/span\u003e].\u003c/p\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eB3: Shape-based without CPD (ablation): identical to the proposed framework except that CPD is disabled, isolating the contribution of change point detection. Contemporary deep learning classifiers, such as ROCKET [\u003cspan citationid=\"CR15\" class=\"CitationRef\"\u003e15\u003c/span\u003e] and InceptionTime, are intentionally excluded: they require labeled training data from the target deployment environment, produce non-interpretable feature vectors incompatible with actionable workload categories, and contradict the calibration-free, interpretable design goal of this framework. The three chosen baselines represent fixed-window statistical approaches that currently dominate Kubernetes workload monitoring practice [\u003cspan citationid=\"CR7\" class=\"CitationRef\"\u003e7\u003c/span\u003e, \u003cspan citationid=\"CR8\" class=\"CitationRef\"\u003e8\u003c/span\u003e].\u003c/p\u003e \u003c/li\u003e \u003c/ul\u003e \u003c/p\u003e \u003c/div\u003e"},{"header":"4 Experimental Results","content":"\u003cdiv id=\"Sec36\" class=\"Section2\"\u003e \u003ch2\u003e4.1 Pod-baseline Evaluation\u003c/h2\u003e \u003cp\u003eTable\u0026nbsp;\u003cspan refid=\"Tab5\" class=\"InternalRef\"\u003e5\u003c/span\u003e reports the results for all three repetitions on the pod-baseline. The proposed framework achieves 100% accuracy in Repetitions 1 and 3 and 85.7% in Repetition 2 (one missed transition). The single failure in Repetition 2 (P7: TREND\u0026rarr;SEASONAL) is attributable to a weaker TREND signal in that repetition\u0026rsquo;s first segment (Spearman\u0026thinsp;=\u0026thinsp;0.182 vs. threshold 0.30), caused by natural variation in k6 traffic injection timing.\u003c/p\u003e \u003cp\u003e \u003cdiv class=\"gridtable\"\u003e\u003ctable float=\"Yes\" id=\"Tab5\" border=\"1\"\u003e \u003ccaption language=\"En\"\u003e \u003cdiv class=\"CaptionNumber\"\u003eTable 5\u003c/div\u003e \u003cdiv class=\"CaptionContent\"\u003e \u003cp\u003ePer-repetition results for pod baseline (7 patterns per repetition)\u003c/p\u003e \u003c/div\u003e \u003c/caption\u003e \u003ccolgroup cols=\"5\"\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c1\" colnum=\"1\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c2\" colnum=\"2\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c3\" colnum=\"3\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c4\" colnum=\"4\"\u003e\u003c/div\u003e \u003cdiv align=\"char\" char=\"\u0026plusmn;\" class=\"colspec\" colname=\"c5\" colnum=\"5\"\u003e\u003c/div\u003e \u003cthead\u003e \u003ctr\u003e \u003cth align=\"left\" colname=\"c1\"\u003e \u003cp\u003eMetric\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c2\"\u003e \u003cp\u003eRep-1\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c3\"\u003e \u003cp\u003eRep-2\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c4\"\u003e \u003cp\u003eRep-3\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c5\"\u003e \u003cp\u003eMean\u0026thinsp;\u0026plusmn;\u0026thinsp;SD\u003c/p\u003e \u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eAccuracy\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003e7/7\u0026thinsp;=\u0026thinsp;100%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e6/7\u0026thinsp;=\u0026thinsp;85.7%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e7/7\u0026thinsp;=\u0026thinsp;100%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\"\u0026plusmn;\" colname=\"c5\"\u003e \u003cp\u003e\u003cb\u003e95.2% \u0026plusmn; 6.7%\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003ePure pattern accuracy\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003e4/4\u0026thinsp;=\u0026thinsp;100%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e4/4\u0026thinsp;=\u0026thinsp;100%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e4/4\u0026thinsp;=\u0026thinsp;100%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\"\u0026plusmn;\" colname=\"c5\"\u003e \u003cp\u003e\u003cb\u003e100.0% \u0026plusmn; 0.0%\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eTransition detection rate\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003e3/3\u0026thinsp;=\u0026thinsp;100%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e2/3\u0026thinsp;=\u0026thinsp;66.7%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e3/3\u0026thinsp;=\u0026thinsp;100%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\"\u0026plusmn;\" colname=\"c5\"\u003e \u003cp\u003e\u003cb\u003e88.9% \u0026plusmn; 15.7%\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eDetection latency (min)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003e1.7\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e2.0\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e2.7\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\"\u0026plusmn;\" colname=\"c5\"\u003e \u003cp\u003e\u003cb\u003e2.1\u0026thinsp;\u0026plusmn;\u0026thinsp;0.4\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/colgroup\u003e \u003c/table\u003e\u003c/div\u003e \u003c/p\u003e \u003cp\u003eRepetition dates: 10 March 2026 (Rep-1), 13 March 2026 (Rep-2), 14 March 2026 (Rep-3). Detection latency computed only for correctly detected transitions. Mean confidence score across all 21 runs: 68.3% \u0026plusmn; 13.0% (formula: see Section \u003cspan refid=\"Sec32\" class=\"InternalRef\"\u003e3.7.1\u003c/span\u003e).\u003c/p\u003e \u003cp\u003ePure pattern accuracy of 100.0% across all three repetitions demonstrates that the scale-invariant features and classifier correctly separate all four pure pattern types regardless of repetition-specific CPU fluctuations. This is a particularly strong result given that the same threshold values were used in all three repetitions without adjustment.\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec37\" class=\"Section2\"\u003e \u003ch2\u003e4.2 Comparison with Baseline Methods\u003c/h2\u003e \u003cp\u003eTable\u0026nbsp;\u003cspan refid=\"Tab6\" class=\"InternalRef\"\u003e6\u003c/span\u003e compares the proposed framework against three baselines. Figure\u0026nbsp;\u003cspan refid=\"Fig3\" class=\"InternalRef\"\u003e3\u003c/span\u003e visualizes the comparison.\u003c/p\u003e \u003cp\u003e \u003cdiv class=\"gridtable\"\u003e\u003ctable float=\"Yes\" id=\"Tab6\" border=\"1\"\u003e \u003ccaption language=\"En\"\u003e \u003cdiv class=\"CaptionNumber\"\u003eTable 6\u003c/div\u003e \u003cdiv class=\"CaptionContent\"\u003e \u003cp\u003eComparison of the proposed framework with three baseline methods (pod-baseline, mean\u0026thinsp;\u0026plusmn;\u0026thinsp;SD)\u003c/p\u003e \u003c/div\u003e \u003c/caption\u003e \u003ccolgroup cols=\"5\"\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c1\" colnum=\"1\"\u003e\u003c/div\u003e \u003cdiv align=\"char\" char=\"\u0026plusmn;\" class=\"colspec\" colname=\"c2\" colnum=\"2\"\u003e\u003c/div\u003e \u003cdiv align=\"char\" char=\".\" class=\"colspec\" colname=\"c3\" colnum=\"3\"\u003e\u003c/div\u003e \u003cdiv align=\"char\" char=\".\" class=\"colspec\" colname=\"c4\" colnum=\"4\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c5\" colnum=\"5\"\u003e\u003c/div\u003e \u003cthead\u003e \u003ctr\u003e \u003cth align=\"left\" colname=\"c1\"\u003e \u003cp\u003eMethod\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c2\"\u003e \u003cp\u003eAccuracy\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c3\"\u003e \u003cp\u003ePPA\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c4\"\u003e \u003cp\u003eTDR\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c5\"\u003e \u003cp\u003eTrans. capability\u003c/p\u003e \u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eB1: STL\u0026thinsp;+\u0026thinsp;threshold\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\"\u0026plusmn;\" colname=\"c2\"\u003e \u003cp\u003e54.0%\u0026plusmn;2.2%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\".\" colname=\"c3\"\u003e \u003cp\u003e91.7%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\".\" colname=\"c4\"\u003e \u003cp\u003e0.0%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003eNo\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eB2: ACF\u0026thinsp;+\u0026thinsp;FFT\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\"\u0026plusmn;\" colname=\"c2\"\u003e \u003cp\u003e42.9%\u0026plusmn;0.0%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\".\" colname=\"c3\"\u003e \u003cp\u003e75.0%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\".\" colname=\"c4\"\u003e \u003cp\u003e0.0%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003eNo\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eB3: Shape (no CPD)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\"\u0026plusmn;\" colname=\"c2\"\u003e \u003cp\u003e57.1%\u0026plusmn;0.0%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\".\" colname=\"c3\"\u003e \u003cp\u003e100.0%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\".\" colname=\"c4\"\u003e \u003cp\u003e0.0%\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003eNo\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eProposed (CPD+Shape)\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\"\u0026plusmn;\" colname=\"c2\"\u003e \u003cp\u003e\u003cb\u003e95.2%\u0026plusmn;6.7%\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\".\" colname=\"c3\"\u003e \u003cp\u003e\u003cb\u003e100.0%\u0026plusmn;0.0%\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"char\" char=\".\" colname=\"c4\"\u003e \u003cp\u003e\u003cb\u003e88.9%\u0026plusmn;15.7%\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003e\u003cb\u003eYes\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/colgroup\u003e \u003c/table\u003e\u003c/div\u003e \u003c/p\u003e \u003cp\u003ePPA: pure pattern accuracy; TDR: transition detection rate; CS: confidence score (proposed only). McNemar exact binomial test [\u003cspan citationid=\"CR24\" class=\"CitationRef\"\u003e24\u003c/span\u003e]: proposed vs. B1: p\u0026thinsp;=\u0026thinsp;0.0078; vs. B2: p\u0026thinsp;=\u0026thinsp;0.0078; vs. B3: p\u0026thinsp;=\u0026thinsp;0.0078 (n\u0026thinsp;=\u0026thinsp;21 paired outcomes per comparison; b\u0026thinsp;=\u0026thinsp;8, c\u0026thinsp;=\u0026thinsp;0 in all cases). Mean CS for the proposed\u0026thinsp;=\u0026thinsp;68.3% \u0026plusmn; 13.0%.\u003c/p\u003e \u003cp\u003e \u003c/p\u003e \u003cp\u003eThe proposed framework achieves 95.2% overall accuracy compared to 57.1%, 54.0%, and 42.9% for B3, B1, and B2, respectively. The improvement over B3 (the ablation variant without CPD) was statistically significant at p\u0026thinsp;=\u0026thinsp;0.0078 (McNemar\u0026rsquo;s exact test, n\u0026thinsp;=\u0026thinsp;21). Comparisons vs. B1 and B2 yield identical p-values (p\u0026thinsp;=\u0026thinsp;0.0078) since all three baselines share the same 8 discordant pairs (b\u0026thinsp;=\u0026thinsp;8, c\u0026thinsp;=\u0026thinsp;0; McNemar\u0026rsquo;s exact test), confirming that CPD contributes substantially beyond the shape-based classifier alone. All baselines achieve 0% TDR since they operate on fixed windows without segmentation. The B3 comparison isolates the specific contribution of CPD: adding CPD to the shape-based classifier increases accuracy by 38.1 percentage points.\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec38\" class=\"Section2\"\u003e \u003ch2\u003e4.3 Sensitivity Analysis\u003c/h2\u003e \u003cp\u003eFigure \u003cspan refid=\"Fig4\" class=\"InternalRef\"\u003e4\u003c/span\u003e shows the framework accuracy as a function of the penalty parameter β over the range [0.02, 0.30] for all three repetitions. Accuracy is constant across the full range for every repetition: Rep-1\u0026thinsp;=\u0026thinsp;100% (7/7) at all values; Rep-2\u0026thinsp;=\u0026thinsp;85.7% (6/7) at all values; Rep-3\u0026thinsp;=\u0026thinsp;100% (7/7) at all values. Mean accuracy is 95.2% \u0026plusmn; 6.7% at every sampled β, confirming that the single failure in Rep-2 (P7 TREND\u0026rarr;SEASONAL, weak Spearman\u0026thinsp;=\u0026thinsp;0.182) is independent of the penalty parameter. This robustness arises because the minimum segment length constraint (12 minutes) prevents pathological over-segmentation at small β, and the signal magnitudes in all three repetitions exceed any penalty threshold in this range.\u003c/p\u003e \u003cp\u003e \u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec39\" class=\"Section2\"\u003e \u003ch2\u003e4.4 Cross-Environment Validation\u003c/h2\u003e \u003cp\u003eTable\u0026nbsp;\u003cspan refid=\"Tab7\" class=\"InternalRef\"\u003e7\u003c/span\u003e and Fig.\u0026nbsp;\u003cspan refid=\"Fig5\" class=\"InternalRef\"\u003e5\u003c/span\u003e present the results for the Google Online Boutique cross-environment test. The framework achieves 4/7\u0026thinsp;=\u0026thinsp;57.1% accuracy under both OB\u0026thinsp;+\u0026thinsp;LG and OB\u0026thinsp;\u0026minus;\u0026thinsp;LG conditions. Notably, all four pure patterns are correctly detected under both conditions, demonstrating that the scale-invariant features generalize to the multi-service environment. The three failures are concentrated in the transition patterns (P5, P7) and P2 TREND under OB\u0026thinsp;+\u0026thinsp;LG.\u003c/p\u003e \u003cp\u003e \u003cdiv class=\"gridtable\"\u003e\u003ctable float=\"Yes\" id=\"Tab7\" border=\"1\"\u003e \u003ccaption language=\"En\"\u003e \u003cdiv class=\"CaptionNumber\"\u003eTable 7\u003c/div\u003e \u003cdiv class=\"CaptionContent\"\u003e \u003cp\u003ePattern detection results for Google Online Boutique (one repetition per condition)\u003c/p\u003e \u003c/div\u003e \u003c/caption\u003e \u003ccolgroup cols=\"5\"\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c1\" colnum=\"1\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c2\" colnum=\"2\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c3\" colnum=\"3\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c4\" colnum=\"4\"\u003e\u003c/div\u003e \u003cdiv align=\"left\" class=\"colspec\" colname=\"c5\" colnum=\"5\"\u003e\u003c/div\u003e \u003cthead\u003e \u003ctr\u003e \u003cth align=\"left\" colname=\"c1\"\u003e \u003cp\u003eID\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c2\"\u003e \u003cp\u003eGround Truth\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c3\"\u003e \u003cp\u003eOB\u0026thinsp;+\u0026thinsp;LG\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c4\"\u003e \u003cp\u003eOB\u0026thinsp;\u0026minus;\u0026thinsp;LG\u003c/p\u003e \u003c/th\u003e \u003cth align=\"left\" colname=\"c5\"\u003e \u003cp\u003eNotes\u003c/p\u003e \u003c/th\u003e \u003c/tr\u003e \u003c/thead\u003e \u003ctbody\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eP1\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSEASONAL\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e✓\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e✓\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003eCorrect in both cases\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eP2\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eTREND\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e✗\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e✓\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003eFalse CPD under LG noise\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eP3\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSTABLE\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e✓\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e✓\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003eCorrect in both cases\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eP4\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSPIKE\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e✓\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e✓\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003eCorrect in both cases\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eP5\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSEASONAL\u0026rarr;TREND\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e✗\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e✗\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003eSeg2 TREND signal weak.\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eP6\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eSTABLE\u0026rarr;SPIKE\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e✓\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e✓\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003eCorrect in both cases\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003eP7\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e \u003cp\u003eTREND\u0026rarr;SEASONAL\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e✗\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e✗\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003eCPD at t\u0026thinsp;=\u0026thinsp;13 (outlier t\u0026thinsp;=\u0026thinsp;11)\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003ctr\u003e \u003ctd align=\"left\" colname=\"c1\"\u003e \u003cp\u003e\u003cb\u003eTotal\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c2\"\u003e\u0026nbsp;\u003c/td\u003e \u003ctd align=\"left\" colname=\"c3\"\u003e \u003cp\u003e\u003cb\u003e4/7\u0026thinsp;=\u0026thinsp;57.1%\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c4\"\u003e \u003cp\u003e\u003cb\u003e4/7\u0026thinsp;=\u0026thinsp;57.1%\u003c/b\u003e\u003c/p\u003e \u003c/td\u003e \u003ctd align=\"left\" colname=\"c5\"\u003e \u003cp\u003eConsistent across conditions\u003c/p\u003e \u003c/td\u003e \u003c/tr\u003e \u003c/tbody\u003e \u003c/colgroup\u003e \u003c/table\u003e\u003c/div\u003e \u003c/p\u003e \u003cp\u003e✓: correctly detected; ✗: misclassified. OB\u0026thinsp;+\u0026thinsp;LG: Online Boutique with load generator active. OB\u0026thinsp;\u0026minus;\u0026thinsp;LG: load generator disabled.\u003c/p\u003e \u003cp\u003e \u003c/p\u003e \u003c/div\u003e"},{"header":"5 Discussion","content":"\u003cdiv id=\"Sec41\" class=\"Section2\"\u003e \u003ch2\u003e5.1 Framework effectiveness and scale-invariance\u003c/h2\u003e \u003cp\u003eThe 100% pure pattern accuracy across all three repetitions and both Online Boutique conditions is the most significant finding of this evaluation. It demonstrates that the seven scale-invariant features collectively provide sufficient discriminative power to separate the four fundamental workload pattern types regardless of CPU utilization scale (pod-baseline mean\u0026thinsp;\u0026asymp;\u0026thinsp;0.014 cores vs. Online Boutique mean\u0026thinsp;\u0026asymp;\u0026thinsp;0.22 cores, a 15\u0026times; difference). The Spearman rank correlation for TREND and the skewness-max_mean_ratio combination for SPIKE show zero interclass overlap across all 35 experimental runs, confirming the theoretical basis of the scale-invariance design.\u003c/p\u003e \u003cp\u003eThe McNemar test result (p\u0026thinsp;=\u0026thinsp;0.0078 for proposed vs. B3) confirms that CPD contributes significantly beyond the shape-based classifier alone. The B3 comparison is particularly important because it has identical features and classifier rules; the only difference is the presence of CPD. This controlled ablation demonstrates that the 38.1 percentage point accuracy improvement is attributable specifically to the ability to segment the time series before classification, not to the features or thresholds.\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec42\" class=\"Section2\"\u003e \u003ch2\u003e5.2 Cross-environment Failure Modes\u003c/h2\u003e \u003cp\u003eThe 57.1% accuracy on Online Boutique, consistent across both LG conditions, reveals an important fundamental limitation of fixed-threshold, rule-based classifiers when applied to multi-service environments. Three failure modes were identified through a detailed analysis:\u003c/p\u003e \u003cp\u003e \u003cul\u003e \u003cli\u003e \u003cp\u003eSignal attenuation in TREND segments: The Online Boutique frontend pod receives CPU load from 10 downstream microservices, creating high-frequency oscillations (fft_power\u0026thinsp;\u0026asymp;\u0026thinsp;18% higher than pod-baseline) that interfere with TREND detection. The Spearman correlation for TREND segments under OB averages 0.160 vs. 0.550 for pod-baseline, well below the 0.30 threshold.\u003c/p\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eFalse change point from pod events: Dataset P7 contains an outlier at t\u0026thinsp;=\u0026thinsp;11 (0.023 cores, vs. segment mean of 0.176), likely caused by a brief pod event or scheduling pause. This outlier causes CPD to detect a spurious change point at t\u0026thinsp;=\u0026thinsp;13 instead of the ground truth at t\u0026thinsp;=\u0026thinsp;30, producing an incorrect TREND\u0026rarr;STABLE output rather than TREND\u0026rarr;SEASONAL.\u003c/p\u003e \u003c/li\u003e \u003cli\u003e \u003cp\u003eTransition SEASONAL\u0026rarr;TREND: the TREND segment after transition (t\u0026thinsp;=\u0026thinsp;31\u0026ndash;61) has mean_ratio\u0026thinsp;=\u0026thinsp;1.285, below the 1.50 threshold for the secondary TREND rule because the multi-service CPU load levels off quickly due to buffering in downstream services.\u003c/p\u003e \u003c/li\u003e \u003c/ul\u003e \u003c/p\u003e \u003cp\u003eThe consistency of 57.1% accuracy between OB\u0026thinsp;+\u0026thinsp;LG and OB\u0026thinsp;\u0026minus;\u0026thinsp;LG conditions is particularly informative: it demonstrates that the performance limitation is not due to load generator traffic but rather to the inherent characteristic of multi-microservice CPU coupling. This finding has implications for future work on adaptive threshold calibration.\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec43\" class=\"Section2\"\u003e \u003ch2\u003e5.3 Practical Implications\u003c/h2\u003e \u003cp\u003eThe proposed framework is most directly applicable as a preprocessing step in predictive autoscaling pipelines. By classifying the current workload pattern, the framework enables the selection of the pattern-optimal prediction model (for example, SARIMA for SEASONAL, LSTM for SPIKE, and ARIMA for TREND patterns) [\u003cspan citationid=\"CR4\" class=\"CitationRef\"\u003e4\u003c/span\u003e, \u003cspan citationid=\"CR5\" class=\"CitationRef\"\u003e5\u003c/span\u003e, \u003cspan citationid=\"CR6\" class=\"CitationRef\"\u003e6\u003c/span\u003e]. On pod-baseline workloads, the 95.2% classification accuracy directly translates to model selection accuracy; on multi-microservice workloads, the 57.1% accuracy reflects the practical performance ceiling of a calibration-free, fixed-threshold approach. For production deployment, we recommend using the framework as-is for single-service pods and incorporating environment-specific threshold calibration for multi-service applications.\u003c/p\u003e \u003cp\u003eThe 2.1-minute mean detection latency for pattern transitions is acceptable for most autoscaling contexts where the minimum scaling response time is 30\u0026ndash;120 seconds. The sensitivity analysis demonstrates that the framework is robust to β variation across a 15-fold range (0.02\u0026ndash;0.30), eliminating the need for hyperparameter tuning in deployment.\u003c/p\u003e \u003c/div\u003e \u003cdiv id=\"Sec44\" class=\"Section2\"\u003e \u003ch2\u003e5.4 Limitations and Future Work\u003c/h2\u003e \u003cp\u003eThis study has several limitations. First, the experimental evaluation uses synthetic workload patterns injected via k6, which may not capture all real-world workload characteristics, including long-range dependencies and non-stationary behavior. Future work should evaluate the framework on real production traces, such as the Alibaba cluster trace [\u003cspan citationid=\"CR13\" class=\"CitationRef\"\u003e13\u003c/span\u003e] or Google cluster data [\u003cspan citationid=\"CR12\" class=\"CitationRef\"\u003e12\u003c/span\u003e]. Second, the framework is evaluated on CPU usage only; memory, network, and I/O patterns may provide complementary classification signals. Third, the fixed-threshold design limits generalizability to multi-microservice environments, as demonstrated by the 57.1% OB accuracy. An adaptive threshold mechanism that estimates environment-specific scaling factors from initial observations (analogous to normalization by median absolute deviation) is a promising direction.\u003c/p\u003e \u003cp\u003eFuture work also includes extending the framework to real-time (online) operation, where only a partial time window is available at classification time, and integrating the pattern classifier with the downstream prediction model selection step to evaluate end-to-end forecasting accuracy improvement.\u003c/p\u003e \u003c/div\u003e"},{"header":"6 Conclusion","content":"\u003cp\u003eThis paper presents an automated workload pattern recognition framework for Kubernetes microservices that combines binary segmentation change point detection with a shape-based, scale-invariant classifier. The framework addresses three key limitations of existing approaches: dependence on absolute CPU scale, inability to detect within-window pattern transitions, and requirement for environment-specific training data.\u003c/p\u003e \u003cp\u003eOn the primary evaluation dataset (pod-baseline, 21 experiments over three temporal repetitions), the framework achieves 95.2% overall accuracy, 100.0% pure pattern accuracy, 88.9% transition detection rate, and 2.1-minute mean detection latency, significantly outperforming three baseline methods, including an ablation variant without CPD (p\u0026thinsp;=\u0026thinsp;0.0078, McNemar test). Cross-environment validation on Google Online Boutique (35 total experiments across two conditions) demonstrates 100% pure pattern accuracy but 57.1% overall accuracy, revealing that inter-service CPU coupling in multi-microservice applications attenuates individual pod pattern signals, a limitation that defines a practical ceiling for fixed-threshold classifiers and motivates adaptive threshold designs as future work.\u003c/p\u003e \u003cp\u003eThe framework is publicly available as a Python implementation with documented APIs and reproducible experimental data, supporting integration into Kubernetes autoscaling pipelines as a preprocessing step for prediction model selection.\u003c/p\u003e"},{"header":"Abbreviations","content":"\u003cdiv class=\"DefinitionList\"\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eACF\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eAutocorrelation Function\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eCPD\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eChange Point Detection\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eCPU\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eCentral Processing Unit\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eFFT\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eFast Fourier Transform\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eHPA\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eHorizontal Pod Autoscaler\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eK8s\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eKubernetes\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eLG\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eLoad Generator\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eMAD\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eMedian Absolute Deviation\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eOB\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eOnline Boutique\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003ePPA\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003ePure Pattern Accuracy\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003ePromQL\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003ePrometheus Query Language\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eSTL\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eSeasonal-Trend decomposition using Loess\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eTDR\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eTransition Detection Rate\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003cdiv class=\"DefinitionListEntry\"\u003e \u003cdiv class=\"Term\"\u003eVU\u003c/div\u003e \u003cdiv class=\"Description\"\u003e \u003cp\u003eVirtual Users.\u003c/p\u003e \u003c/div\u003e \u003c/div\u003e \u003c/div\u003e"},{"header":"Declarations","content":"\u003ch2\u003eAvailability of data and materials\u003c/h2\u003e\n\u003cp\u003eThe datasets (35 experimental CPU time series), k6 load testing scripts, synthetic workload CSV files, and framework source code (detect.py) will be deposited in a public repository upon acceptance. The framework is implemented in Python 3. x under an open-source license.\u003c/p\u003e\n\u003ch2\u003eCompeting interests\u003c/h2\u003e\n\u003cp\u003eThe authors declare that they have no competing interests.\u003c/p\u003e\n\u003ch2\u003eFunding\u003c/h2\u003e\n\u003cp\u003eThis work was supported in part by the Indonesian Education Scholarship [Beasiswa Pendidikan Indonesia (BPI)], in part by the Center for Higher Education Funding and Assessment [Pusat Pendanaan dan Asesmen Pendidikan Tinggi (PPAPT)], and in part by the Indonesian Endowment Fund for Education [Lembaga Pengelola Dana Pendidikan (LPDP)].\u003c/p\u003e\n\u003ch2\u003eAuthors\u0026apos; contributions\u003c/h2\u003e\n\u003cp\u003eA: Conceptualization, methodology, software, experiments, data analysis, and writing: original draft and revision. AS: Supervision, conceptual guidance, and writing: review and editing. RMI: Co-supervision, writing: review, and editing. All authors approved the final manuscript.\u003c/p\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eThe authors gratefully acknowledge the Indonesian Education Scholarship (BPI) for supporting the first author\u0026apos;s doctoral study and publication.\u003c/p\u003e\n\u003ch2\u003eEthics approval and consent to participate\u003c/h2\u003e\n\u003cp\u003eNot applicable.\u003c/p\u003e\n\u003ch2\u003eConsent for publication\u003c/h2\u003e\n\u003cp\u003eNot applicable.\u003c/p\u003e"},{"header":"References","content":"\u003col\u003e\u003cli\u003e\u003cspan\u003eFairwinds (2024) 2024 Kubernetes Benchmark Report. Cloud Native Computing Foundation. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003ehttps://www.cncf.io/blog/2024/01/26/2024-kubernetes-benchmark-report\u003c/span\u003e\u003cspan address=\"https://www.cncf.io/blog/2024/01/26/2024-kubernetes-benchmark-report\" targettype=\"URL\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e. Accessed March 16, 2026\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eToka L, Dobreff G, Fodor B, Sonkoly B (2021) Machine learning-based scaling management for Kubernetes edge clusters. IEEE Trans Netw Serv Manage 18(1):958\u0026ndash;972. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1109/TNSM.2021.3052837\u003c/span\u003e\u003cspan address=\"10.1109/TNSM.2021.3052837\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eMondal SK, Wu X, Kabir HMD, Dai HN, Ni K, Yuan H, Wang T (2023) Toward optimal load prediction and customizable autoscaling scheme for Kubernetes. Mathematics 11(12):2675. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.3390/math11122675\u003c/span\u003e\u003cspan address=\"10.3390/math11122675\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eSaxena D, Kumar J, Singh AK, Schmid S (2023) Performance analysis of machine learning centered workload prediction models for cloud. IEEE Trans Parallel Distrib Syst 34(4):1313\u0026ndash;1330. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1109/TPDS.2023.3240567\u003c/span\u003e\u003cspan address=\"10.1109/TPDS.2023.3240567\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eYan M, Liang X, Lu Z, Wu J, Zhang W (2021) HANSEL: adaptive horizontal scaling of microservices using Bi-LSTM. Appl Soft Comput 105:107216. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1016/j.asoc.2021.107216\u003c/span\u003e\u003cspan address=\"10.1016/j.asoc.2021.107216\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eMasdari M, Khoshnevis A (2020) A survey and classification of the workload forecasting methods in cloud computing. Cluster Comput 23(4):2399\u0026ndash;2424. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1007/s10586-019-03010-3\u003c/span\u003e\u003cspan address=\"10.1007/s10586-019-03010-3\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eJiang Y, Hwang CS, Liu Z (2022) Pattern-aware workload prediction for container-based microservices. IEEE Trans Serv Comput 15(4):1612\u0026ndash;1625. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1109/TSC.2020.3036316\u003c/span\u003e\u003cspan address=\"10.1109/TSC.2020.3036316\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eBi J, Ma H, Yuan H, Zhang J (2023) Accurate prediction of workloads and resources with multi-head attention and hybrid LSTM for cloud data centers. IEEE Trans Sustain Comput 8(3):375\u0026ndash;384. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1109/TSUSC.2023.3259522\u003c/span\u003e\u003cspan address=\"10.1109/TSUSC.2023.3259522\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eShallaw MA, Kecskemeti G (2023) Cloud workload categorization using data preprocessing and clustering techniques. In: Proc. IEEE/ACM UCC 2023. ACM, New York. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1145/3603166.3632131\u003c/span\u003e\u003cspan address=\"10.1145/3603166.3632131\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eFeng B, Ding Z (2025) Application-oriented cloud workload prediction: a survey and new perspectives. Tsinghua Sci Technol 30(1):34\u0026ndash;54. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.26599/TST.2024.9010024\u003c/span\u003e\u003cspan address=\"10.26599/TST.2024.9010024\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eSeshadri K, Sindhu K, Bhattu SN, Kollengode C (2024) Design and evaluation of a hierarchical characterization and adaptive prediction model for cloud workloads. IEEE Trans Cloud Comput 12(2):712\u0026ndash;724. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1109/TCC.2024.3393114\u003c/span\u003e\u003cspan address=\"10.1109/TCC.2024.3393114\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eLuo S, Xu H, Lu C, Ye K, Xu G, Zhang L, He J, Xu C (2022) An in-depth study of microservice call graph and runtime performance. IEEE Trans Parallel Distrib Syst 33(12):3906\u0026ndash;3921. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1109/TPDS.2022.3160799\u003c/span\u003e\u003cspan address=\"10.1109/TPDS.2022.3160799\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eLuo S, Xu H, Lu C, Ye K, Xu G, Zhang L, Ding Y, He J, Xu C Characterizing microservice dependency and performance: Alibaba trace analysis. In: Proc. ACM SoCC 2021. ACM, Seattle WA (2021) \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1145/3472883.3486974\u003c/span\u003e\u003cspan address=\"10.1145/3472883.3486974\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eParayil A, Khemka B, Kunjir M, Gupta S, Ramjee R, Bansal S (2025) Toward cloud efficiency with large-scale workload characterization. In: Proc. ACM/SPEC ICPE 2025. ACM, New York. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1145/3676151.3722008\u003c/span\u003e\u003cspan address=\"10.1145/3676151.3722008\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eDempster A, Petitjean F, Webb GI (2020) ROCKET: exceptionally fast and accurate time series classification using random convolutional kernels. Data Min Knowl Discov 34(5):1454\u0026ndash;1495. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1007/s10618-020-00701-z\u003c/span\u003e\u003cspan address=\"10.1007/s10618-020-00701-z\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003ePage ES (1954) Continuous inspection schemes. Biometrika 41(1/2):100\u0026ndash;115. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1093/biomet/41.1-2.100\u003c/span\u003e\u003cspan address=\"10.1093/biomet/41.1-2.100\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eBai J (1997) Estimating multiple breaks separately. Econom Theory 13(3):315\u0026ndash;352. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1017/S0266466600005831\u003c/span\u003e\u003cspan address=\"10.1017/S0266466600005831\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eTruong C, Oudre L, Vayatis N (2020) Selective review of offline change point detection methods. Signal Process 167:107299. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1016/j.sigpro.2019.107299\u003c/span\u003e\u003cspan address=\"10.1016/j.sigpro.2019.107299\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eAminikhanghahi S, Wang T, Cook DJ (2019) Real-time change point detection with application to smart home time series data. IEEE Trans Knowl Data Eng 31(5):1010\u0026ndash;1023. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1109/TKDE.2018.2850347\u003c/span\u003e\u003cspan address=\"10.1109/TKDE.2018.2850347\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eLubba CH, Sethi SS, Knaute P, Schultz SR, Fulcher BD, Jones NS (2019) catch22: Canonical time-series CHaracteristics. Data Min Knowl Discov 33(6):1821\u0026ndash;1852. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1007/s10618-019-00647-x\u003c/span\u003e\u003cspan address=\"10.1007/s10618-019-00647-x\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eHochreiter S, Schmidhuber J (1997) Long short-term memory. Neural Comput 9(8):1735\u0026ndash;1780. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1162/neco.1997.9.8.1735\u003c/span\u003e\u003cspan address=\"10.1162/neco.1997.9.8.1735\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eWen Q, Zhou T, Zhang C, Chen W, Ma Z, Yan J, Sun L (2023) Transformers in time series: a survey. In: Proc. IJCAI 2023. pp 6778\u0026ndash;6786. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.24963/ijcai.2023/759\u003c/span\u003e\u003cspan address=\"10.24963/ijcai.2023/759\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eHyndman RJ, Athanasopoulos G (2021) Forecasting: Principles and Practice, 3rd edn. OTexts, Melbourne. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003ehttps://otexts.com/fpp3/\u003c/span\u003e\u003cspan address=\"https://otexts.com/fpp3/\" targettype=\"URL\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e. Accessed March 16, 2026\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eMcNemar Q (1947) Note on the sampling error of the difference between correlated proportions or percentages. Psychometrika 12(2):153\u0026ndash;157. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1007/BF02295996\u003c/span\u003e\u003cspan address=\"10.1007/BF02295996\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e \u003cli\u003e\u003cspan\u003eZargarAzad M, Ashtiani M (2023) An auto-scaling approach for microservices in cloud computing environments. J Grid Comput 21(4):73. \u003cspan class=\"ExternalRef\"\u003e\u003cspan class=\"RefSource\"\u003e10.1007/s10723-023-09713-7\u003c/span\u003e\u003cspan address=\"10.1007/s10723-023-09713-7\" targettype=\"DOI\" class=\"RefTarget\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/li\u003e\u003c/ol\u003e"}],"fulltextSource":"","fullText":"","funders":[],"hasAdminPriorityOnWorkflow":false,"hasManuscriptDocX":true,"hasOptedInToPreprint":true,"hasPassedJournalQc":"","hasAnyPriority":false,"hideJournal":false,"highlight":"","institution":"","isAcceptedByJournal":false,"isAuthorSuppliedPdf":false,"isDeskRejected":"","isHiddenFromSearch":false,"isInQc":false,"isInWorkflow":false,"isPdf":false,"isPdfUpToDate":true,"isWithdrawnOrRetracted":false,"journal":{"display":true,"email":"
[email protected]","identity":"journal-of-cloud-computing","isNatureJournal":false,"hasQc":true,"allowDirectSubmit":false,"externalIdentity":"clco","sideBox":"Learn more about [Journal of Cloud Computing](http://journalofcloudcomputing.springeropen.com)","snPcode":"13677","submissionUrl":"https://submission.nature.com/new-submission/13677/3","title":"Journal of Cloud Computing","twitterHandle":"@SpringerOpen","acdcEnabled":true,"dfaEnabled":true,"editorialSystem":"em","reportingPortfolio":"BMC/SO AJ","inReviewEnabled":true,"inReviewRevisionsEnabled":true},"keywords":"Kubernetes, Workload pattern recognition, Change point detection, Time series classification, Microservices, Scale-invariant features, CPU resource characterization","lastPublishedDoi":"10.21203/rs.3.rs-9189120/v1","lastPublishedDoiUrl":"https://doi.org/10.21203/rs.3.rs-9189120/v1","license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"},"manuscriptAbstract":"\u003cp\u003eAccurate characterization of CPU workload patterns in Kubernetes microservices is essential for informed autoscaling and resource management decisions. Existing approaches predominantly apply fixed-window analysis that classifies the entire observation window as a single pattern, failing to detect transitions between workload behaviors that commonly occur in production deployments. This paper proposes an automated framework for workload pattern recognition that combines binary segmentation change point detection (CPD) with a shape-based, scale-invariant classifier. The framework identifies four fundamental patterns (SEASONAL, TREND, STABLE, and SPIKE) and their transitions, providing a quantifiable transition point estimate. All classification features are expressed as dimensionless ratios or rank-based statistics, ensuring generalizability across microservices with different CPU use baselines. The framework was evaluated across two deployment environments: a single-service pod baseline with three temporal repetitions (21 experiments) and Google Online Boutique, a multi-service application tested under two conditions (with and without the built-in load generator, 14 experiments). On the pod-baseline, the framework achieves a pure pattern accuracy of 100.0%, transition detection rate of 88.9%, overall accuracy of 95.2% \u0026plusmn; 6.7%, and mean detection latency of 2.1\u0026thinsp;\u0026plusmn;\u0026thinsp;0.4 minutes, significantly outperforming the three baseline methods (p\u0026thinsp;=\u0026thinsp;0.0078 vs. B1, p\u0026thinsp;=\u0026thinsp;0.0078 vs. B2, p\u0026thinsp;=\u0026thinsp;0.0078 vs. B3; McNemar exact test, n\u0026thinsp;=\u0026thinsp;21). Cross-environment validation on Online Boutique yields 57.1% accuracy under both conditions, revealing that inter-service CPU interference attenuates individual pattern signals, a finding that informs future adaptive threshold designs.\u003c/p\u003e","manuscriptTitle":"Automated Workload Pattern Recognition in Kubernetes: A Time Series Detection Framework for Microservice Resource Characterization","msid":"","msnumber":"","nonDraftVersions":[{"code":1,"date":"2026-03-27 10:53:03","doi":"10.21203/rs.3.rs-9189120/v1","editorialEvents":[{"type":"communityComments","content":0},{"type":"decision","content":"Revision requested","date":"2026-04-13T06:23:04+00:00","index":"","fulltext":""},{"type":"reviewerAgreed","content":"44602580376687023506724009651781322634","date":"2026-04-09T09:21:40+00:00","index":"hide","fulltext":""},{"type":"reviewerAgreed","content":"140490816136160168195637703897333563742","date":"2026-04-09T08:13:25+00:00","index":"hide","fulltext":""},{"type":"reviewerAgreed","content":"90999530916420667832333657100242630246","date":"2026-04-08T20:15:21+00:00","index":"hide","fulltext":""},{"type":"reviewerAgreed","content":"282855070663631036088485061840249420242","date":"2026-04-08T06:56:45+00:00","index":"hide","fulltext":""},{"type":"editorInvitedReview","content":"","date":"2026-04-07T20:23:37+00:00","index":"hide","fulltext":""},{"type":"reviewerAgreed","content":"205370210552713116954798254764928459123","date":"2026-04-07T13:53:59+00:00","index":"hide","fulltext":""},{"type":"reviewerAgreed","content":"241674046721398341004565089403685533381","date":"2026-04-07T06:55:15+00:00","index":"hide","fulltext":""},{"type":"editorInvitedReview","content":"","date":"2026-04-01T23:53:22+00:00","index":"hide","fulltext":""},{"type":"editorInvitedReview","content":"","date":"2026-03-28T09:42:04+00:00","index":"hide","fulltext":""},{"type":"reviewerAgreed","content":"128131095076980136032988582091647149400","date":"2026-03-28T04:14:28+00:00","index":"hide","fulltext":""},{"type":"reviewerAgreed","content":"340026425714653189378325614283654064113","date":"2026-03-26T14:53:21+00:00","index":"hide","fulltext":""},{"type":"reviewerAgreed","content":"155054538743455826062905627072657424171","date":"2026-03-26T09:23:39+00:00","index":"hide","fulltext":""},{"type":"reviewersInvited","content":"","date":"2026-03-26T07:36:59+00:00","index":"","fulltext":""},{"type":"editorAssigned","content":"","date":"2026-03-26T07:32:49+00:00","index":"","fulltext":""},{"type":"checksComplete","content":"","date":"2026-03-26T01:47:12+00:00","index":"","fulltext":""},{"type":"submitted","content":"Journal of Cloud Computing","date":"2026-03-22T05:03:18+00:00","index":"","fulltext":""}],"status":"published","journal":{"display":true,"email":"
[email protected]","identity":"journal-of-cloud-computing","isNatureJournal":false,"hasQc":true,"allowDirectSubmit":false,"externalIdentity":"clco","sideBox":"Learn more about [Journal of Cloud Computing](http://journalofcloudcomputing.springeropen.com)","snPcode":"13677","submissionUrl":"https://submission.nature.com/new-submission/13677/3","title":"Journal of Cloud Computing","twitterHandle":"@SpringerOpen","acdcEnabled":true,"dfaEnabled":true,"editorialSystem":"em","reportingPortfolio":"BMC/SO AJ","inReviewEnabled":true,"inReviewRevisionsEnabled":true}}],"origin":"","ownerIdentity":"56642adb-e256-46d4-8801-5b42884cb46d","owner":[],"postedDate":"March 27th, 2026","published":true,"recentEditorialEvents":[],"rejectedJournal":[],"revision":"","amendment":"","status":"in-revision","subjectAreas":[],"tags":[],"updatedAt":"2026-05-10T13:40:20+00:00","versionOfRecord":[],"versionCreatedAt":"2026-03-27 10:53:03","video":"","vorDoi":"","vorDoiUrl":"","workflowStages":[]},"version":"v1","identity":"rs-9189120","journalConfig":"researchsquare"},"__N_SSP":true},"page":"/article/[identity]/[[...version]]","query":{"redirect":"/article/rs-9189120","identity":"rs-9189120","version":["v1"]},"buildId":"XKTyCvWXoU3ODBz1xrDgd","isFallback":false,"isExperimentalCompile":false,"dynamicIds":[84888],"gssp":true,"scriptLoader":[]}
Text is read by the "Ask this paper" AI Q&A widget below.
Extraction quality varies by source — PMC NXML preserves structure
cleanly, OA-HTML may include some navigation residue, and OA-PDF can
have broken hyphenation. The publisher copy
(via DOI)
is the canonical version.