diff --git a/bins/msvisor/src/main.rs b/bins/msvisor/src/main.rs index f7b3181e..b5d73cea 100644 --- a/bins/msvisor/src/main.rs +++ b/bins/msvisor/src/main.rs @@ -1,4 +1,4 @@ -use std::sync::Arc; +use std::{sync::Arc, thread::sleep, time::Duration}; use clap::{arg, Parser}; use derive_more::Display; @@ -46,6 +46,10 @@ struct Args { /// show metrics json. #[arg(long, default_value_t = MetricOpt::None)] metrics: MetricOpt, + + /// block after workflow execution. + #[arg(short, long, default_value_t = false)] + non_exit: bool, } fn build_all_isol(args: &Args) -> Vec> { @@ -142,4 +146,10 @@ fn main() { isol.metric.analyze(&args.metrics.to_analyze()); } } + + if args.non_exit { + loop { + sleep(Duration::from_secs(1)); + } + } } diff --git a/isol_config/parallel_sort_c5.json b/isol_config/parallel_sort_c5.json index c33beca2..d2462b07 100644 --- a/isol_config/parallel_sort_c5.json +++ b/isol_config/parallel_sort_c5.json @@ -15,6 +15,10 @@ [ "fatfs", "libfatfs.so" + ], + [ + "time", + "libtime.so" ] ], "apps": [ @@ -39,7 +43,6 @@ "libchecker.so" ] ], - "fs_image": "fs_images/new_image.img", "groups": [ { "list": [ @@ -115,14 +118,6 @@ "args": { "sorter_num": "5" } - }, - { - "list": [ - "checker" - ], - "args": { - "merger_num": "5" - } } ] } \ No newline at end of file diff --git a/justfile b/justfile index e4752e06..8ce55e64 100644 --- a/justfile +++ b/justfile @@ -196,4 +196,4 @@ measure_avg isol_file: done ; gen_data: - sudo ./scripts/gen_data.py \ No newline at end of file + sudo -E ./scripts/gen_data.py diff --git a/libmsvisor/src/metric.rs b/libmsvisor/src/metric.rs index 1c0e95da..0b5c5e24 100644 --- a/libmsvisor/src/metric.rs +++ b/libmsvisor/src/metric.rs @@ -65,7 +65,8 @@ impl MetricBucket { .duration_since(UNIX_EPOCH) .unwrap() .as_micros(); - let vm_rss_kb = get_current_vm_rss_kb(); + // let vm_rss_kb = get_current_vm_rss_kb(); + let vm_rss_kb = 0; inner.mem_metrics.push((timestamp, vm_rss_kb)) } diff --git a/scripts/comp_resource.py b/scripts/comp_resource.py new file mode 100755 index 00000000..f8f7b779 --- /dev/null +++ b/scripts/comp_resource.py @@ -0,0 +1,88 @@ +#!/usr/bin/python3 + +from datetime import datetime + +# 计算箱形图的五个点: + + +def five_number_summary(data): + n = len(data) + q1 = data[n // 4] + q2 = data[n // 2] + q3 = data[3 * n // 4] + return data[0], q1, q2, q3, data[-1] + + +def comp(name): + print(name) + with open(name) as f: + cpus = [] + user_cpus = [] + sys_cpus = [] + mems = [] + lines = f.readlines() + tss = [] + + for line in lines: + fields = line.strip().split(' ') + timestamp = datetime.strptime( + fields[0] + ' ' + fields[1].replace(',', ''), "%Y-%m-%d %H:%M:%S") + + ts = timestamp.timestamp() + tss.append(ts) + if len(tss) == 1: + continue + + # print(fields) + user_cpu = float(fields[2].replace(',', '')) * (tss[-1] - tss[-2]) + sys_cpu = float(fields[3].replace(',', '')) * (tss[-1] - tss[-2]) + cpu = user_cpu + sys_cpu + + mem = float(fields[-1]) + cpus.append(cpu) + user_cpus.append(user_cpu) + sys_cpus.append(sys_cpu) + mems.append(mem) + + cpus.sort() + mems.sort() + # print("cpu极值:", cpus[-1]-cpus[0]) + # print("mem极值:", mems[-1]-mems[0]) + + cpu_min, cpu_q1, cpu_median, cpu_q3, cpu_max = five_number_summary( + cpus) + mem_min, mem_q1, mem_median, mem_q3, mem_max = five_number_summary( + mems) + + print(f"执行耗时: {tss[-1]-tss[0]}ms") + print("cpu累积量", sum(cpus) - cpu_min * len(cpus)) + print("user cpu累积量", sum(user_cpus) - min(user_cpus) * len(user_cpus)) + print("system cpu累积量", sum(sys_cpus) - min(sys_cpus) * len(sys_cpus)) + print("cpu五数概括:", cpu_min, cpu_q1, cpu_median, cpu_q3, cpu_max) + + print("mem均值:", sum(mems)/len(mems)) + print("mem五数概括:", mem_min, mem_q1, mem_median, mem_q3, mem_max) + print() + + +comp("as_map_reduce_resouce_c5_10_20.txt") +comp("as_map_reduce_resouce_c5_10_40.txt") +comp("as_map_reduce_resouce_c5_10_60.txt") +comp("as_map_reduce_resouce_c5_10_80.txt") + +comp("faastlane_map_reduce_resouce_c5_10_20.txt") +comp("faastlane_map_reduce_resouce_c5_10_40.txt") +comp("faastlane_map_reduce_resouce_c5_10_60.txt") +comp("faastlane_map_reduce_resouce_c5_10_80.txt") + + +comp("as_parallel_sort_resouce_c5_25_20.txt") +comp("as_parallel_sort_resouce_c5_25_40.txt") +comp("as_parallel_sort_resouce_c5_25_60.txt") +comp("as_parallel_sort_resouce_c5_25_80.txt") +comp("as_parallel_sort_resouce_c5_25_100.txt") + +comp("faastlane_parallel_sort_resouce_c5_25_20.txt") +comp("faastlane_parallel_sort_resouce_c5_25_40.txt") +comp("faastlane_parallel_sort_resouce_c5_25_60.txt") +comp("faastlane_parallel_sort_resouce_c5_25_80.txt") diff --git a/user/mapper/src/lib.rs b/user/mapper/src/lib.rs index 33835071..9468897b 100644 --- a/user/mapper/src/lib.rs +++ b/user/mapper/src/lib.rs @@ -71,7 +71,7 @@ fn mapper_func(my_id: &str, reducer_num: u64) -> Result<()> { let mut f = File::open(&file_name)?; let mut content = String::new(); // let content = get_input_from_mem(&file_name); - // f.read_to_string(&mut content).expect("read file failed."); + f.read_to_string(&mut content).expect("read file failed."); println!( "read_end, cost: {}ms", @@ -131,7 +131,7 @@ fn mapper_func(my_id: &str, reducer_num: u64) -> Result<()> { } println!( - "shuffle _end, cost {}ms", + "shuffle end, cost {}ms", SystemTime::elapsed(&start).as_millis() );