Integrate DS4 execution parity in Rust
This commit is contained in:
54
src/app.rs
54
src/app.rs
@@ -90,6 +90,9 @@ pub(crate) struct App {
|
||||
pub(super) kv_cache_report: KvCacheReport,
|
||||
last_cache_scan: Instant,
|
||||
last_http_requests: u64,
|
||||
last_ssd_selected_requests: u64,
|
||||
last_ssd_requested_bytes: u64,
|
||||
last_ssd_wait_ms: u64,
|
||||
#[cfg(target_os = "macos")]
|
||||
generation_service: Option<GenerationService>,
|
||||
#[cfg(target_os = "macos")]
|
||||
@@ -136,6 +139,9 @@ pub(super) struct MetricsPoint {
|
||||
pub(super) http_requests_per_second: f32,
|
||||
pub(super) kv_read_bytes_per_second: f32,
|
||||
pub(super) kv_write_bytes_per_second: f32,
|
||||
pub(super) ssd_requests_per_second: f32,
|
||||
pub(super) ssd_bytes_per_second: f32,
|
||||
pub(super) ssd_wait_ms_per_second: f32,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
@@ -154,6 +160,7 @@ pub(crate) enum Message {
|
||||
FocusNext,
|
||||
FocusPrevious,
|
||||
PreferenceModelChanged(ModelChoice),
|
||||
PreferenceLegacyMtpChanged(bool),
|
||||
PreferenceDsparkChanged(bool),
|
||||
PreferenceTimeoutChanged(String),
|
||||
PreferenceEndpointPortChanged(String),
|
||||
@@ -313,6 +320,9 @@ impl App {
|
||||
kv_cache_report: KvCacheReport::default(),
|
||||
last_cache_scan: Instant::now() - CACHE_SCAN_INTERVAL,
|
||||
last_http_requests: 0,
|
||||
last_ssd_selected_requests: 0,
|
||||
last_ssd_requested_bytes: 0,
|
||||
last_ssd_wait_ms: 0,
|
||||
#[cfg(target_os = "macos")]
|
||||
generation_service,
|
||||
#[cfg(target_os = "macos")]
|
||||
@@ -416,6 +426,9 @@ impl App {
|
||||
kv_cache_report: KvCacheReport::default(),
|
||||
last_cache_scan: Instant::now() - CACHE_SCAN_INTERVAL,
|
||||
last_http_requests: 0,
|
||||
last_ssd_selected_requests: 0,
|
||||
last_ssd_requested_bytes: 0,
|
||||
last_ssd_wait_ms: 0,
|
||||
#[cfg(target_os = "macos")]
|
||||
generation_service,
|
||||
#[cfg(target_os = "macos")]
|
||||
@@ -535,6 +548,7 @@ impl App {
|
||||
Message::PreferenceModelChanged(model) => {
|
||||
self.preference_draft.model = model;
|
||||
if !model.supports_dspark() {
|
||||
self.preference_draft.legacy_mtp_enabled = false;
|
||||
self.preference_draft.dspark_enabled = false;
|
||||
self.preference_draft.dspark_confidence_threshold.clear();
|
||||
self.preference_draft.dspark_strict = false;
|
||||
@@ -552,6 +566,16 @@ impl App {
|
||||
}
|
||||
self.preference_error = None;
|
||||
}
|
||||
Message::PreferenceLegacyMtpChanged(enabled) => {
|
||||
self.preference_draft.legacy_mtp_enabled =
|
||||
self.preference_draft.model.supports_dspark() && enabled;
|
||||
if self.preference_draft.legacy_mtp_enabled {
|
||||
self.preference_draft.dspark_enabled = false;
|
||||
self.preference_draft.dspark_confidence_threshold.clear();
|
||||
self.preference_draft.dspark_strict = false;
|
||||
}
|
||||
self.preference_error = None;
|
||||
}
|
||||
Message::PreferenceDsparkChanged(enabled) => {
|
||||
self.preference_draft.dspark_enabled =
|
||||
self.preference_draft.model.supports_dspark() && enabled;
|
||||
@@ -559,7 +583,7 @@ impl App {
|
||||
self.preference_draft.dspark_confidence_threshold.clear();
|
||||
self.preference_draft.dspark_strict = false;
|
||||
} else {
|
||||
self.preference_draft.ssd_streaming = false;
|
||||
self.preference_draft.legacy_mtp_enabled = false;
|
||||
}
|
||||
self.preference_error = None;
|
||||
}
|
||||
@@ -665,7 +689,7 @@ impl App {
|
||||
.is_empty()
|
||||
{
|
||||
self.preference_draft.dspark_enabled = true;
|
||||
self.preference_draft.ssd_streaming = false;
|
||||
self.preference_draft.legacy_mtp_enabled = false;
|
||||
}
|
||||
self.preference_error = None;
|
||||
}
|
||||
@@ -674,17 +698,12 @@ impl App {
|
||||
self.preference_draft.model.supports_dspark() && value;
|
||||
if self.preference_draft.dspark_strict {
|
||||
self.preference_draft.dspark_enabled = true;
|
||||
self.preference_draft.ssd_streaming = false;
|
||||
self.preference_draft.legacy_mtp_enabled = false;
|
||||
}
|
||||
self.preference_error = None;
|
||||
}
|
||||
Message::PreferenceSsdChanged(value) => {
|
||||
self.preference_draft.ssd_streaming = value;
|
||||
if value {
|
||||
self.preference_draft.dspark_enabled = false;
|
||||
self.preference_draft.dspark_confidence_threshold.clear();
|
||||
self.preference_draft.dspark_strict = false;
|
||||
}
|
||||
self.preference_error = None;
|
||||
}
|
||||
Message::PreferenceSsdColdChanged(value) => {
|
||||
@@ -1226,7 +1245,23 @@ impl App {
|
||||
let kv_read_bytes_per_second = kv_read_bytes as f32 / METRICS_SAMPLE_INTERVAL.as_secs_f32();
|
||||
let kv_write_bytes_per_second =
|
||||
kv_write_bytes as f32 / METRICS_SAMPLE_INTERVAL.as_secs_f32();
|
||||
let sample_seconds = METRICS_SAMPLE_INTERVAL.as_secs_f32();
|
||||
let ssd_requests_per_second = snapshot
|
||||
.ssd_selected_requests
|
||||
.saturating_sub(self.last_ssd_selected_requests)
|
||||
as f32
|
||||
/ sample_seconds;
|
||||
let ssd_bytes_per_second = snapshot
|
||||
.ssd_requested_bytes
|
||||
.saturating_sub(self.last_ssd_requested_bytes)
|
||||
as f32
|
||||
/ sample_seconds;
|
||||
let ssd_wait_ms_per_second =
|
||||
snapshot.ssd_wait_ms.saturating_sub(self.last_ssd_wait_ms) as f32 / sample_seconds;
|
||||
self.last_http_requests = snapshot.http_requests;
|
||||
self.last_ssd_selected_requests = snapshot.ssd_selected_requests;
|
||||
self.last_ssd_requested_bytes = snapshot.ssd_requested_bytes;
|
||||
self.last_ssd_wait_ms = snapshot.ssd_wait_ms;
|
||||
self.metrics_history.push_back(MetricsPoint {
|
||||
decode_tokens_per_second: if snapshot.phase == crate::metrics::RuntimePhase::Generating
|
||||
{
|
||||
@@ -1238,6 +1273,9 @@ impl App {
|
||||
http_requests_per_second,
|
||||
kv_read_bytes_per_second,
|
||||
kv_write_bytes_per_second,
|
||||
ssd_requests_per_second,
|
||||
ssd_bytes_per_second,
|
||||
ssd_wait_ms_per_second,
|
||||
});
|
||||
if self.metrics_history.len() > 120 {
|
||||
self.metrics_history.pop_front();
|
||||
|
||||
Reference in New Issue
Block a user