Parcourir la source

部分代码整理

master
SisMaker il y a 4 ans
Parent
révision
f712599f00
4 fichiers modifiés avec 87 ajouts et 2 suppressions
  1. +10
    -1
      include/utComMisc.hrl
  2. +3
    -1
      rebar.config
  3. +36
    -0
      src/comMisc/utMisc.erl
  4. +38
    -0
      src/srvNodeMgr/utVMInfo.erl

+ 10
- 1
include/utComMisc.hrl Voir le fichier

@ -14,4 +14,13 @@
Fields = record_info(fields, RecordName),
[_ | Data] = tuple_to_list(RecordData),
{RecordName, lists:zip(Fields, Data)}
end()).
end()).
-define(pdMemInfo, '$pdMemInfo').
%%
-define(MII(), utVMInfo:memInfoInit(?MODULE, ?LINE)).
%%
-define(MIP(), utVMInfo:memInfoPrint(?MODULE, ?LINE, 100)).
%%
-define(MIP(Threshold), utVMInfo:memInfoPrint(?MODULE, ?LINE, Threshold)).

+ 3
- 1
rebar.config Voir le fichier

@ -1,5 +1,7 @@
{erl_opts, [no_debug_info, {i, "include"}]}.
{deps, []}.
{deps, [
{eSync, ".*", {git, "http://192.168.0.88:53000/SisMaker/eSync.git", {branch, "master"}}}
]}.
% {pre_hooks,
% [{"", compile, "escript c_src/erlNpc compile"}]}.

+ 36
- 0
src/comMisc/utMisc.erl Voir le fichier

@ -220,6 +220,42 @@ is_in_range(X1, Y1, X2, Y2, Range) ->
distance({X1, Y1}, {X2, Y2}) ->
round(math:sqrt((X2 - X1) * (X2 - X1) + (Y2 - Y1) * (Y2 - Y1))).
traverseEts(TableName, MatchCnt) ->
ets:safe_fixtable(TableName, true),
try
case ets:match_object(TableName, '$1', MatchCnt) of
'$end_of_table' ->
ok;
{ElemList, NextKey} ->
match_do_fun(ElemList),
continue_next(NextKey)
end
after
ets:safe_fixtable(TableName, false)
end.
continue_next(NextKey) ->
case ets:match_object(NextKey) of
'$end_of_table' ->
ok1111;
{ElemList, NewNextKey} ->
match_do_fun(ElemList),
continue_next(NewNextKey)
end.
match_do_fun(ElemList) ->
[io:format("IMY*************one ~p~n", [OneElem]) || OneElem <- ElemList],
ok.
test() ->
case ets:info(test, id) of
undefined ->
ets:new(test, [named_table, ordered_set, public]);
_ ->
ignore
end,
[ets:insert(test, {{One, aaa}, bbb}) || One <- lists:seq(1, 15)],
traverseEts(test, 6).

+ 38
- 0
src/srvNodeMgr/utVMInfo.erl Voir le fichier

@ -1,5 +1,7 @@
-module(utVMInfo).
-include("utComMisc.hrl").
-export([
vmInfo/0 %%
, processInfo/1 %%
@ -15,6 +17,10 @@
, scheduler_usage/1 %% 1s每个调度器CPU的实际利用率(spin wait, usage top显示低很多)\
, scheduler_stat/0 %% 1s内调度进程数量()
, scheduler_stat/1 %% 1s内调度进程数量()
, memInfoInit/2
, memInfoPrint/3
, test/0
]).
%%
@ -457,4 +463,36 @@ get_processes() ->
io:fwrite("process count:~p~n~p value is large than ~p count:~p~nLists:~p~n",
get_process_info_and_large_than_value(memory, 0)).
memInfoInit(CurModule, CurLine) ->
erlang:put(?pdMemInfo, {CurModule, CurLine, erlang:system_time(nanosecond), recon:info(self(), memory_used)}).
memInfoPrint(CurModule, CurLine, Threshold) ->
case erlang:get(?pdMemInfo) of
undefined ->
erlang:put(?pdMemInfo, {CurModule, CurLine, erlang:system_time(nanosecond), recon:info(self(), memory_used)});
{OldModule, OldLine, OldTime, OldMemInfo} ->
CurMemInfo = recon:info(self(), memory_used),
CurTime = erlang:system_time(nanosecond),
erlang:put(?pdMemInfo, {CurModule, CurLine, CurTime, recon:info(self(), memory_used)}),
OldUsed = element(2, lists:nth(1, element(2, OldMemInfo))),
CurUsed = element(2, lists:nth(1, element(2, CurMemInfo))),
Sub = CurUsed - OldUsed,
case erlang:abs(Sub) >= Threshold of
true ->
io:format("IMY*********Memory use changes are too large~n~p~n~p~n~p~n~p~n", [{addOrSub, Sub}, {timeDiff, CurTime - OldTime}, {old, OldModule, OldLine, OldTime, OldMemInfo}, {cur, CurModule, CurLine, CurTime, OldMemInfo}]);
_ ->
ignore
end
end.
test() ->
?MII(),
?MIP(0),
?MIP(0),
?MIP(0).

Chargement…
Annuler
Enregistrer