From 5f3780a032ea1d573367828c34b5d9dcb10503fe Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Fri, 13 May 2022 20:55:28 +0200 Subject: [PATCH] fix(os_mon): ensure float point number for ~f format --- apps/emqx/src/emqx_os_mon.erl | 23 ++++++++++------------- apps/emqx/src/emqx_vm.erl | 3 +-- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/apps/emqx/src/emqx_os_mon.erl b/apps/emqx/src/emqx_os_mon.erl index 5b3c019cf..7b69a4a50 100644 --- a/apps/emqx/src/emqx_os_mon.erl +++ b/apps/emqx/src/emqx_os_mon.erl @@ -123,33 +123,28 @@ handle_info({timeout, _Timer, mem_check}, #{sysmem_high_watermark := HWM} = Stat handle_info({timeout, _Timer, cpu_check}, State) -> CPUHighWatermark = emqx:get_config([sysmon, os, cpu_high_watermark]) * 100, CPULowWatermark = emqx:get_config([sysmon, os, cpu_low_watermark]) * 100, - %% TODO: should be improved? case emqx_vm:cpu_util() of 0 -> ok; Busy when Busy > CPUHighWatermark -> - Usage = list_to_binary(io_lib:format("~.2f%", [Busy])), - Message = <>, _ = emqx_alarm:activate( high_cpu_usage, #{ - usage => Usage, + usage => Busy, high_watermark => CPUHighWatermark, low_watermark => CPULowWatermark }, - Message + usage_msg(Busy, cpu) ); Busy when Busy < CPULowWatermark -> - Usage = list_to_binary(io_lib:format("~.2f%", [Busy])), - Message = <>, ok = emqx_alarm:ensure_deactivated( high_cpu_usage, #{ - usage => Usage, + usage => Busy, high_watermark => CPUHighWatermark, low_watermark => CPULowWatermark }, - Message + usage_msg(Busy, cpu) ); _Busy -> ok @@ -208,8 +203,6 @@ update_mem_alarm_stauts(HWM) when HWM > 1.0 orelse HWM < 0.0 -> update_mem_alarm_stauts(HWM0) -> HWM = HWM0 * 100, Usage = current_sysmem_percent(), - UsageStr = list_to_binary(io_lib:format("~.2f%", [Usage])), - Message = <>, case Usage > HWM of true -> _ = emqx_alarm:activate( @@ -218,7 +211,7 @@ update_mem_alarm_stauts(HWM0) -> usage => Usage, high_watermark => HWM }, - Message + usage_msg(Usage, mem) ); _ -> ok = emqx_alarm:ensure_deactivated( @@ -227,7 +220,11 @@ update_mem_alarm_stauts(HWM0) -> usage => Usage, high_watermark => HWM }, - Message + usage_msg(Usage, mem) ) end, ok. + +usage_msg(Usage, What) -> + %% devide by 1.0 to ensure float point number + iolist_to_binary(io_lib:format("~.2f% ~p usage", [Usage / 1.0, What])). diff --git a/apps/emqx/src/emqx_vm.erl b/apps/emqx/src/emqx_vm.erl index 61cc55e47..731d05844 100644 --- a/apps/emqx/src/emqx_vm.erl +++ b/apps/emqx/src/emqx_vm.erl @@ -233,8 +233,7 @@ mem_info() -> [{total_memory, Total}, {used_memory, Total - Free}]. ftos(F) -> - S = io_lib:format("~.2f", [F]), - S. + io_lib:format("~.2f", [F / 1.0]). %%%% erlang vm scheduler_usage fun copied from recon scheduler_usage(Interval) when is_integer(Interval) ->