/// <summary> /// A simple function that takes a string and does a ToUpper /// </summary> /// <param name="input"></param> /// <param name="context"></param> /// <returns></returns> public async Task <APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context) { // int newcontainer = 0; Utils ut = new Utils(); var bodyString = request?.Body; //dynamic body = JsonConvert.DeserializeObject(bodyString); int count = Int32.Parse(bodyString); int newcontainer = 0; String uuid = "unset"; String containerFileName = "/tmp/container-id"; if (File.Exists(containerFileName)) { using (StreamReader sr = File.OpenText(containerFileName)) { uuid = sr.ReadLine(); } } else { newcontainer = 1; using (StreamWriter sw = new StreamWriter(containerFileName)) { uuid = Guid.NewGuid().ToString(); sw.WriteLine(uuid); } } // Get the CPU stat before running the test Utils.CpuTime c1 = ut.GetCpuUtilization(); // Get the VM CPU stat before running the test Utils.VmCpuStat v1 = ut.getVmCpuStat(); long elapsedTime; Stopwatch sw = Stopwatch.StartNew(); int output = await Task.Run(() => Recursive_Fibonacci(count)); sw.Stop(); elapsedTime = sw.ElapsedMilliseconds; // Get the CPU stat before running the test Utils.CpuTime c2 = ut.GetCpuUtilization(); // Get the VM CPU stat after running the test Utils.VmCpuStat v2 = ut.getVmCpuStat(); // Get the CPU and VM CPU stat difference Utils.CpuTime cused = ut.getCpuTimeDiff(c1, c2); Utils.VmCpuStat vused = ut.getVmCpuStatDiff(v1, v2); Response r = new Response(output, elapsedTime); /* * * Response r = new Response(uuid, cused.utime, cused.stime, cused.cutime, cused.cstime, vused.cpuusr, * vused.cpunice, vused.cpukrn, vused.cpuidle, vused.cpuiowait, vused.cpuirq, * vused.cpusirq, vused.cpusteal, v2.btime, newcontainer, output); */ return(new APIGatewayProxyResponse { StatusCode = 200, Body = JsonConvert.SerializeObject(r.toString()) }); }
/// <summary> /// A simple function that takes a string and does a ToUpper /// </summary> /// <param name="input"></param> /// <param name="context"></param> /// <returns></returns> public APIGatewayProxyResponse FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context) { // int newcontainer = 0; Utils ut = new Utils(); var bodyString = request?.Body; //dynamic body = JsonConvert.DeserializeObject(bodyString); int count = Int32.Parse(bodyString); int newcontainer = 0; String uuid = "unset"; String containerFileName = "/tmp/container-id"; if (File.Exists(containerFileName)) { using (StreamReader sr = File.OpenText(containerFileName)) { uuid = sr.ReadLine(); } } else { newcontainer = 1; using (StreamWriter sw = new StreamWriter(containerFileName)) { uuid = Guid.NewGuid().ToString(); sw.WriteLine(uuid); } } // Get the CPU stat before running the test Utils.CpuTime c1 = ut.GetCpuUtilization(); // Get the VM CPU stat before running the test Utils.VmCpuStat v1 = ut.getVmCpuStat(); int num_of_calcs = 10000; for (int i = 0; i < num_of_calcs; i++) { int output = Recursive_Fibonacci(count); } // Get the CPU stat before running the test Utils.CpuTime c2 = ut.GetCpuUtilization(); // Get the VM CPU stat after running the test Utils.VmCpuStat v2 = ut.getVmCpuStat(); // Get the CPU and VM CPU stat difference Utils.CpuTime cused = ut.getCpuTimeDiff(c1, c2); Utils.VmCpuStat vused = ut.getVmCpuStatDiff(v1, v2); Response r = new Response(uuid, cused.utime, cused.stime, cused.cutime, cused.cstime, vused.cpuusr, vused.cpunice, vused.cpukrn, vused.cpuidle, vused.cpuiowait, vused.cpuirq, vused.cpusirq, vused.cpusteal, v2.btime, newcontainer); return(new APIGatewayProxyResponse { StatusCode = 200, Body = JsonConvert.SerializeObject(r.toString()) }); }