From 81ed61b001a4476ceb84380ceb30e324df1c64c8 Mon Sep 17 00:00:00 2001 From: William Yang Date: Tue, 15 Mar 2022 11:39:23 +0100 Subject: [PATCH] feat: add load control app --- CHANGES-4.3.md | 1 + rebar.config | 1 + src/emqx.app.src | 10 +++++++++- src/emqx_os_mon.erl | 11 ++++++++++- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGES-4.3.md b/CHANGES-4.3.md index 04447e220..11debe5e7 100644 --- a/CHANGES-4.3.md +++ b/CHANGES-4.3.md @@ -27,6 +27,7 @@ File format: * Add UTF-8 string validity check in `strict_mode` for MQTT packet. When set to true, invalid UTF-8 strings will cause the client to be disconnected. i.e. client ID, topic name. [#7261] * Changed systemd service restart delay from 10 seconds to 60 seconds. +* Add load control app for future development. ### Bug fixes diff --git a/rebar.config b/rebar.config index 131aafebb..2003321bb 100644 --- a/rebar.config +++ b/rebar.config @@ -56,6 +56,7 @@ , {observer_cli, "1.6.1"} % NOTE: depends on recon 2.5.1 , {getopt, "1.0.1"} , {snabbkaffe, {git, "https://github.com/kafka4beam/snabbkaffe.git", {tag, "0.15.0"}}} + , {lc, {git, "https://github.com/emqx/lc.git", {tag, "0.2.0"}}} ]}. {xref_ignores, diff --git a/src/emqx.app.src b/src/emqx.app.src index 66ab590ca..2f58c52a8 100644 --- a/src/emqx.app.src +++ b/src/emqx.app.src @@ -9,7 +9,15 @@ {vsn, "4.3.14"}, % strict semver, bump manually! {modules, []}, {registered, []}, - {applications, [kernel,stdlib,gproc,gen_rpc,esockd,cowboy,sasl,os_mon]}, + {applications, [ kernel + , stdlib + , gproc + , gen_rpc + , esockd + , cowboy + , sasl + , lc + , os_mon]}, {mod, {emqx_app,[]}}, {env, []}, {licenses, ["Apache-2.0"]}, diff --git a/src/emqx_os_mon.erl b/src/emqx_os_mon.erl index e7565947c..a8419bc82 100644 --- a/src/emqx_os_mon.erl +++ b/src/emqx_os_mon.erl @@ -48,6 +48,7 @@ ]). -include("emqx.hrl"). +-include_lib("lc/include/lc.hrl"). -define(OS_MON, ?MODULE). @@ -88,7 +89,15 @@ get_sysmem_high_watermark() -> memsup:get_sysmem_high_watermark(). set_sysmem_high_watermark(Float) -> - memsup:set_sysmem_high_watermark(Float / 100). + V = Float/100, + case load_ctl:get_config() of + #{ ?MEM_MON_F0 := true } = OldLC -> + ok = load_ctl:put_config(OldLC#{ ?MEM_MON_F0 => true + , ?MEM_MON_F1 => V}); + _ -> + skip + end, + memsup:set_sysmem_high_watermark(V). get_procmem_high_watermark() -> memsup:get_procmem_high_watermark().