@@ -302,8 +302,10 @@ render_memory_process_line(MemSum, PortParallelism, Interval) ->
302302 {erlang :integer_to_list (RunQ ), " RunQueue" };
303303 Pid ->
304304 {_ , Q } = process_info (Pid , message_queue_len ),
305- {[erlang :integer_to_list (RunQ ), " /" , erlang :integer_to_list (Q )],
306- " RunQueue/ErrorLoggerQueue" }
305+ {
306+ [erlang :integer_to_list (RunQ ), " /" , erlang :integer_to_list (Q )],
307+ " RunQueue/ErrorLoggerQueue"
308+ }
307309 end ,
308310 ProcMemPercent = observer_cli_lib :to_percent (ProcMem / TotalMem ),
309311 AtomMemPercent = observer_cli_lib :to_percent (AtomMem / TotalMem ),
@@ -390,7 +392,7 @@ render_scheduler_usage(SchedulerUsage, SchedulerNum) when SchedulerNum < 8 ->
390392 CPU2
391393 ])
392394 end
393- || Seq1 <- lists :seq (1 , Column )
395+ || Seq1 <- lists :seq (1 , Column )
394396 ],
395397 {Column , CPU };
396398% % 100 >= scheduler >= 8 split 4 part
@@ -434,7 +436,7 @@ render_scheduler_usage(SchedulerUsage, SchedulerNum) when SchedulerNum =< 100 ->
434436 CPU4
435437 ])
436438 end
437- || Seq1 <- lists :seq (1 , Column )
439+ || Seq1 <- lists :seq (1 , Column )
438440 ],
439441 {Column , CPU };
440442% % scheduler > 100 don't show process bar.
@@ -512,7 +514,7 @@ render_scheduler_usage(SchedulerUsage, SchedulerNum) ->
512514 CPU10
513515 ])
514516 end
515- || Seq1 <- lists :seq (1 , Column )
517+ || Seq1 <- lists :seq (1 , Column )
516518 ],
517519 {Column , CPU }.
518520
@@ -527,8 +529,8 @@ render_top_n_view(memory, MemoryList, Num, Pages, Page) ->
527529 Title = ? render ([
528530 ? W2 (? GRAY_BG , " No | Pid" , 16 ),
529531 ? W2 (? RED_BG , " Memory" , 14 ),
530- ? W (? GRAY_BG , " Name or Initial Call" , 38 ),
531- ? W (? GRAY_BG , " Reductions" , 21 ),
532+ ? W (? GRAY_BG , " Name|>Lable|> Initial Call" , 45 ),
533+ ? W (? GRAY_BG , " Reductions" , 14 ),
532534 ? W (? GRAY_BG , " MsgQueue" , 10 ),
533535 ? W (? GRAY_BG , " Current Function" , 32 )
534536 ]),
@@ -557,8 +559,8 @@ render_top_n_view(binary_memory, MemoryList, Num, Pages, Page) ->
557559 Title = ? render ([
558560 ? W2 (? GRAY_BG , " No | Pid" , 16 ),
559561 ? W2 (? RED_BG , " BinMemory" , 14 ),
560- ? W (? GRAY_BG , " Name or Initial Call" , 38 ),
561- ? W (? GRAY_BG , " Reductions" , 21 ),
562+ ? W (? GRAY_BG , " Name|>Lable|> Initial Call" , 45 ),
563+ ? W (? GRAY_BG , " Reductions" , 14 ),
562564 ? W (? GRAY_BG , " MsgQueue" , 10 ),
563565 ? W (? GRAY_BG , " Current Function" , 32 )
564566 ]),
@@ -586,8 +588,8 @@ render_top_n_view(binary_memory, MemoryList, Num, Pages, Page) ->
586588render_top_n_view (reductions , ReductionList , Num , Pages , Page ) ->
587589 Title = ? render ([
588590 ? W2 (? GRAY_BG , " No | Pid" , 16 ),
589- ? W2 (? RED_BG , " Reductions" , 21 ),
590- ? W (? GRAY_BG , " Name or Initial Call" , 38 ),
591+ ? W2 (? RED_BG , " Reductions" , 15 ),
592+ ? W (? GRAY_BG , " Name|>Lable|> Initial Call" , 45 ),
591593 ? W (? GRAY_BG , " Memory" , 13 ),
592594 ? W (? GRAY_BG , " MsgQueue" , 10 ),
593595 ? W (? GRAY_BG , " Current Function" , 33 )
@@ -617,8 +619,8 @@ render_top_n_view(total_heap_size, HeapList, Num, Pages, Page) ->
617619 Title = ? render ([
618620 ? W2 (? GRAY_BG , " No | Pid" , 16 ),
619621 ? W2 (? RED_BG , " TotalHeapSize" , 14 ),
620- ? W (? GRAY_BG , " Name or Initial Call" , 38 ),
621- ? W (? GRAY_BG , " Reductions" , 21 ),
622+ ? W (? GRAY_BG , " Name|>Lable|> Initial Call" , 45 ),
623+ ? W (? GRAY_BG , " Reductions" , 14 ),
622624 ? W (? GRAY_BG , " MsgQueue" , 10 ),
623625 ? W (? GRAY_BG , " Current Function" , 32 )
624626 ]),
@@ -647,9 +649,9 @@ render_top_n_view(message_queue_len, MQLenList, Num, Pages, Page) ->
647649 Title = ? render ([
648650 ? W2 (? GRAY_BG , " No | Pid" , 16 ),
649651 ? W2 (? RED_BG , " MsgQueue" , 11 ),
650- ? W (? GRAY_BG , " Name or Initial Call" , 37 ),
652+ ? W (? GRAY_BG , " Name|>Lable|> Initial Call" , 44 ),
651653 ? W (? GRAY_BG , " Memory" , 13 ),
652- ? W (? GRAY_BG , " Reductions" , 21 ),
654+ ? W (? GRAY_BG , " Reductions" , 14 ),
653655 ? W (? GRAY_BG , " Current Function" , 33 )
654656 ]),
655657 {Start , ChoosePos } = observer_cli_lib :get_pos (Page , Num , Pages , erlang :length (MQLenList )),
@@ -682,19 +684,19 @@ notify_pause_status() ->
682684 ? output (" \e [31;1m PAUSE INPUT (p, r/rr, b/bb, h/hh, m/mm) to resume or q to quit \e [0m~n " ).
683685
684686get_memory_format (Pos , Pos ) ->
685- " |\e [42m~-3.3w |~-12.12s |~13.13s |~-38.38s | ~21.21s | ~-9.9s |~-33.33s \e [49m|~n " ;
687+ " |\e [42m~-3.3w |~-12.12s |~13.13s |~-45.45s | ~14.14s | ~-9.9s |~-33.33s \e [49m|~n " ;
686688get_memory_format (_Pos , _RankPos ) ->
687- " |~-3.3w |~-12.12s |~13.13s |~-38.38s | ~21.21s | ~-9.9s |~-33.33s |~n " .
689+ " |~-3.3w |~-12.12s |~13.13s |~-45.45s | ~14.14s | ~-9.9s |~-33.33s |~n " .
688690
689691get_reduction_format (Pos , Pos ) ->
690- " |\e [42m~-3.3w |~-12.12s |~-21.21s |~-38.38s | ~13.13s | ~-9.9s |~-34.34s \e [49m|~n " ;
692+ " |\e [42m~-3.3w |~-12.12s |~-15.15s |~-45.45s | ~12.12s | ~-9.9s |~-34.34s \e [49m|~n " ;
691693get_reduction_format (_Pos , _RankPos ) ->
692- " |~-3.3w |~-12.12s |~-21.21s |~-38.38s | ~13.13s | ~-9.9s |~-34.34s |~n " .
694+ " |~-3.3w |~-12.12s |~-15.15s |~-45.45s | ~12.12s | ~-9.9s |~-34.34s |~n " .
693695
694696get_message_queue_format (Pos , Pos ) ->
695- " |\e [42m~-3.3w |~-12.12s |~-11.11s |~-37.37s |~13.13s | ~-20.20s |~-34.34s \e [49m|~n " ;
697+ " |\e [42m~-3.3w |~-12.12s |~-11.11s |~-44.44s |~13.13s | ~-13.13s |~-34.34s \e [49m|~n " ;
696698get_message_queue_format (_Pos , _RankPos ) ->
697- " |~-3.3w |~-12.12s |~-11.11s |~-37.37s |~13.13s | ~-20.20s |~-34.34s |~n " .
699+ " |~-3.3w |~-12.12s |~-11.11s |~-44.44s |~13.13s | ~-13.13s |~-34.34s |~n " .
698700
699701refresh_next_time (proc_count , Type , Interval ) ->
700702 erlang :send_after (Interval , self (), {proc_count , Type });
@@ -756,15 +758,39 @@ process_bar_format_style(Percents, IsLastLine) ->
756758get_top_n_info (Item ) ->
757759 {Pid , Val , Call = [IsName | _ ]} = Item ,
758760 {CurFun , InitialCall } = get_current_initial_call (Call ),
759- NameOrCall = display_name_or_initial_call (IsName , InitialCall , Pid ),
760- {Pid , Val , CurFun , NameOrCall }.
761+ Flag = display_unique_flag (IsName , InitialCall , Pid ),
762+ {Pid , Val , CurFun , Flag }.
763+
764+ display_unique_flag (IsName , Call , Pid ) ->
765+ case choose_name (IsName ) of
766+ undefined ->
767+ case choose_lable (Pid ) of
768+ undefined -> choose_call (Call , Pid );
769+ Lable -> Lable
770+ end ;
771+ Name ->
772+ Name
773+ end .
761774
762- display_name_or_initial_call (IsName , _Call , _Pid ) when is_atom (IsName ) ->
775+ choose_name (IsName ) when is_atom (IsName ) ->
763776 atom_to_list (IsName );
764- display_name_or_initial_call (_IsName , {proc_lib , init_p , 5 }, Pid ) ->
777+ choose_name (_ ) ->
778+ undefined .
779+
780+ choose_lable (Pid ) ->
781+ case
782+ erlang :function_exported (proc_lib , get_label , 1 ) andalso
783+ proc_lib :get_label (Pid )
784+ of
785+ false -> undefined ;
786+ undefined -> undefined ;
787+ Lable -> io_lib :format (" ~p " , [Lable ])
788+ end .
789+
790+ choose_call ({proc_lib , init_p , 5 }, Pid ) ->
765791 % % translate gen_xxx behavior
766792 observer_cli_lib :mfa_to_list (proc_lib :translate_initial_call (Pid ));
767- display_name_or_initial_call ( _IsName , Call , _Pid ) ->
793+ choose_call ( Call , _Pid ) ->
768794 observer_cli_lib :mfa_to_list (Call ).
769795
770796get_refresh_prompt (proc_count , Type , Interval , Rows ) ->
@@ -775,14 +801,16 @@ get_refresh_prompt(proc_window, Type, Interval, Rows) ->
775801get_stable_system_info () ->
776802 OtpRelease = erlang :system_info (otp_release ),
777803 SysVersion = erlang :system_info (system_version ) -- " \n " ,
778- {[
804+ {
805+ [
779806 OtpRelease ,
780807 SysVersion ,
781808 erlang :system_info (process_limit ),
782809 erlang :system_info (port_limit ),
783810 erlang :system_info (ets_limit )
784811 ],
785- erlang :system_info (port_parallelism )}.
812+ erlang :system_info (port_parallelism )
813+ }.
786814
787815get_atom_status () ->
788816 try erlang :system_info (atom_limit ) of
0 commit comments