annotate mod_measure_cpu/mod_measure_cpu.lua @ 2494:d300ae5dba87

mod_smacks: Fix some bugs with smacks-ack-delayed event triggering. The old code had several flaws which are addressed here. First of all this fixes the if statement guarding the event generation There where some timing glitches addressed by this commit as well.
author tmolitor <thilo@eightysoft.de>
date Sun, 12 Feb 2017 21:23:22 +0100
parents 2a4c632a24cb
children 8357cabc31f6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1677
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 module:set_global();
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local measure = require"core.statsmanager".measure;
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 local mt = require"util.multitable";
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 local get_time = require "socket".gettime;
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local get_clock = os.clock;
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 local measure_cpu_now = measure("amount", "cpu.percent"); -- Current percentage
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 local last_cpu_wall, last_cpu_clock;
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 module:hook("stats-update", function ()
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 local new_wall, new_clock = get_time(), get_clock();
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 local pc = 0;
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 if last_cpu_wall then
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 pc = 100/((new_wall-last_cpu_wall)/(new_clock-last_cpu_clock));
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 end
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 last_cpu_wall, last_cpu_clock = new_wall, new_clock;
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 measure_cpu_now(pc);
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 end);
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 -- Some metadata for mod_munin
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 local munin_meta = mt.new(); munin_meta.data = module:shared"munin/meta";
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 local key = "global_cpu_amount";
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 munin_meta:set(key, "", "graph_args", "--base 1000 -r --lower-limit 0 --upper-limit 100");
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 munin_meta:set(key, "", "graph_title", "Prosody CPU Usage");
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 munin_meta:set(key, "", "graph_vlabel", "%");
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 munin_meta:set(key, "", "graph_category", "cpu");
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 munin_meta:set(key, "percent", "label", "CPU Usage");
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 munin_meta:set(key, "percent", "min", "0");
2a4c632a24cb mod_measure_cpu: Collect CPU usage statistic
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33