Browse Source

好像要解决了……trace_stack的问题。

skyfffire 1 year ago
parent
commit
efdd8e299f
3 changed files with 40 additions and 27 deletions
  1. 23 23
      global/src/trace_stack.rs
  2. 8 2
      strategy/src/binance_usdt_swap.rs
  3. 9 2
      strategy/src/gate_swap.rs

+ 23 - 23
global/src/trace_stack.rs

@@ -3,8 +3,8 @@ use std::fmt::{Formatter};
 use chrono::Utc;
 use rust_decimal::prelude::ToPrimitive;
 
-pub static mut MAX_UNLOCK_CORE_DELAY: i64 = 0;
-pub static mut MAX_SPAN_LINE: i64 = 0;
+pub static mut MAX_UNLOCK_CORE_DELAY: u128 = 0;
+pub static mut MAX_SPAN_LINE: u128 = 0;
 
 #[derive(Debug, Clone, PartialEq, Eq)]
 pub struct TraceStack {
@@ -126,27 +126,27 @@ impl fmt::Display for TraceStack {
             msg.push_str(format!("数据生成+到达rust耗时{}毫秒  ", (self.after_network - self.before_network).to_f64().unwrap() / 1000.0).as_str());
         }
 
-        if self.before_span_line != 0 && self.after_span_line != 0 {
-            let span_line = self.after_span_line - self.before_span_line;
-            unsafe {
-                if span_line > MAX_SPAN_LINE {
-                    MAX_SPAN_LINE = span_line;
-                }
-
-                msg.push_str(format!("闭包调用耗时{}us, 最大{}us   ", span_line, MAX_SPAN_LINE).as_str());
-            }
-        }
-
-        if self.before_core != 0 && self.before_unlock_core != 0 {
-            let unlock_core_delay = self.before_core - self.before_unlock_core;
-            unsafe {
-                if unlock_core_delay > MAX_UNLOCK_CORE_DELAY {
-                    MAX_UNLOCK_CORE_DELAY = unlock_core_delay;
-                }
-
-                msg.push_str(format!("解锁core{}us, 最大{}us   ", unlock_core_delay, MAX_UNLOCK_CORE_DELAY).as_str());
-            }
-        }
+        // if self.before_span_line != 0 && self.after_span_line != 0 {
+        //     let span_line = self.after_span_line - self.before_span_line;
+        //     unsafe {
+        //         if span_line > MAX_SPAN_LINE {
+        //             MAX_SPAN_LINE = span_line;
+        //         }
+        //
+        //         msg.push_str(format!("闭包调用耗时{}us, 最大{}us   ", span_line, MAX_SPAN_LINE).as_str());
+        //     }
+        // }
+        //
+        // if self.before_core != 0 && self.before_unlock_core != 0 {
+        //     let unlock_core_delay = self.before_core - self.before_unlock_core;
+        //     unsafe {
+        //         if unlock_core_delay > MAX_UNLOCK_CORE_DELAY {
+        //             MAX_UNLOCK_CORE_DELAY = unlock_core_delay;
+        //         }
+        //
+        //         msg.push_str(format!("解锁core{}us, 最大{}us   ", unlock_core_delay, MAX_UNLOCK_CORE_DELAY).as_str());
+        //     }
+        // }
 
         if self.after_format != 0 && self.before_format != 0 {
             msg.push_str(format!("数据格式化耗时{}us  ", self.after_format - self.before_format).as_str());

+ 8 - 2
strategy/src/binance_usdt_swap.rs

@@ -6,7 +6,7 @@ use tokio::sync::Mutex;
 use tokio_tungstenite::tungstenite::Message;
 use tracing::info;
 use exchanges::response_base::ResponseData;
-use global::trace_stack::TraceStack;
+use global::trace_stack::{MAX_SPAN_LINE, TraceStack};
 use standard::exchange::ExchangeEnum::BinanceSwap;
 use crate::core::Core;
 use exchanges::binance_swap_ws::{BinanceSwapSubscribeType, BinanceSwapWs, BinanceSwapWsType};
@@ -37,7 +37,13 @@ pub(crate) async fn reference_binance_swap_run(is_shutdown_arc: Arc<AtomicBool>,
             // 在 async 块之前克隆 Arc
             // let core_arc_clone = core_arc_clone.clone();
             async move {
-                info!("gate: {:.2?}", data.res_time.elapsed());
+                let delay_ns = data.res_time.elapsed().as_nanos();
+                unsafe {
+                    if delay_ns > MAX_SPAN_LINE {
+                        MAX_SPAN_LINE = delay_ns;
+                    }
+                    info!("bina: {:08}ns, max: {:08}ns", delay_ns, MAX_SPAN_LINE);
+                }
                 // 使用克隆后的 Arc,避免 move 语义
                 // on_data(core_arc_clone,
                 //         &mut update_flag_u,

+ 9 - 2
strategy/src/gate_swap.rs

@@ -9,7 +9,7 @@ use tokio::sync::Mutex;
 use exchanges::gate_swap_rest::GateSwapRest;
 use exchanges::gate_swap_ws::{GateSwapLogin, GateSwapSubscribeType, GateSwapWs, GateSwapWsType};
 use exchanges::response_base::ResponseData;
-use global::trace_stack::TraceStack;
+use global::trace_stack::{MAX_SPAN_LINE, TraceStack};
 use standard::exchange::ExchangeEnum::GateSwap;
 use crate::model::{OrderInfo};
 use crate::core::Core;
@@ -69,6 +69,7 @@ pub async fn gate_swap_run(is_shutdown_arc: Arc<AtomicBool>,
         let core_arc_clone = Arc::clone(&core_arc);
         let multiplier = core_arc_clone.lock().await.platform_rest.get_self_market().amount_size;
         let run_symbol = symbols.clone()[0].clone();
+
         let fun = move |data: ResponseData| {
             // let core_arc_cc = core_arc_clone.clone();
             // 在 async 块之前克隆 Arc
@@ -81,7 +82,13 @@ pub async fn gate_swap_run(is_shutdown_arc: Arc<AtomicBool>,
                 // let _ = core_arc_cc.lock().await;
                 // trace_stack.on_before_core();
 
-                info!("gate: {:.2?}", data.res_time.elapsed());
+                let delay_ns = data.res_time.elapsed().as_nanos();
+                unsafe {
+                    if delay_ns > MAX_SPAN_LINE {
+                        MAX_SPAN_LINE = delay_ns;
+                    }
+                    info!("gate: {:08}ns, max: {:08}ns", delay_ns, MAX_SPAN_LINE);
+                }
 
                 // on_data(core_arc_cc,
                 //         &mut update_flag_u,