#[allow(dead_code)]
pub fn initial_metric() {
    tici_system::metrics::monitor_process()
        .unwrap_or_else(|e| log::warn!("failed to start process monitor, err={}", e));
    tici_system::metrics::monitor_process_memory_status();
    tici_system::metrics::monitor_threads("tici")
        .unwrap_or_else(|e| log::warn!("failed to start thread monitor, err={}", e));
    tici_system::metrics::monitor_allocator_stats("tici")
        .unwrap_or_else(|e| log::warn!("failed to monitor allocator stats, err={}", e));
}

pub fn print_cpu() {
    let logical = num_cpus::get();
    let cpuinfo_count = std::fs::read_to_string("/proc/cpuinfo")
        .unwrap_or_default()
        .lines()
        .filter(|l| l.starts_with("processor"))
        .count();

    let quota = std::fs::read_to_string("/sys/fs/cgroup/cpu/cpu.cfs_quota_us")
        .unwrap_or_else(|_| "-1".to_string())
        .trim()
        .parse::<i64>()
        .unwrap_or(-1);

    let period = std::fs::read_to_string("/sys/fs/cgroup/cpu/cpu.cfs_period_us")
        .unwrap_or_else(|_| "100000".to_string())
        .trim()
        .parse::<i64>()
        .unwrap_or(100_000);

    if quota > 0 {
        let effective = quota as f64 / period as f64;
        log::info!(
            "cpu quota: quota={} period={} => {:.2} cores, cpu={}, logical={}",
            quota,
            period,
            effective,
            cpuinfo_count,
            logical
        );
    } else {
        log::info!(
            "cpu quota: no limited (quota={}), cpu={}, logical={}",
            quota,
            cpuinfo_count,
            logical
        );
    }
}
