nsh: Improve performance of ps
by merge nsh_output
Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
This commit is contained in:
parent
e957e1633c
commit
f1ba1a40ed
@ -56,6 +56,17 @@
|
|||||||
# define LOAD_FRAC(x) (LOAD_INT(((x) & (FIXED_1 - 1)) * 100))
|
# define LOAD_FRAC(x) (LOAD_INT(((x) & (FIXED_1 - 1)) * 100))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
||||||
|
# define PS_SHOW_HEAPSIZE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CONFIG_NSH_DISABLE_PSSTACKUSAGE
|
||||||
|
# define PS_SHOW_STACKSIZE
|
||||||
|
# ifdef CONFIG_STACK_COLORATION
|
||||||
|
# define PS_SHOW_STACKUSAGE
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Types
|
* Private Types
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -341,17 +352,20 @@ static int ps_callback(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath,
|
|||||||
|
|
||||||
/* Finally, print the status information */
|
/* Finally, print the status information */
|
||||||
|
|
||||||
nsh_output(vtbl, "%5s ", entryp->d_name);
|
nsh_output(vtbl,
|
||||||
nsh_output(vtbl, "%5s ", status.td_groupid);
|
"%5s %5s "
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
nsh_output(vtbl, "%3s ", status.td_cpu);
|
"%3s "
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
nsh_output(vtbl, "%3s %-8s %-7s %3s %-8s %-9s ",
|
"%3s %-8s %-7s %3s %-8s %-9s %-8s ",
|
||||||
|
entryp->d_name, status.td_groupid,
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
status.td_cpu,
|
||||||
|
#endif
|
||||||
status.td_priority, status.td_policy, status.td_type,
|
status.td_priority, status.td_policy, status.td_type,
|
||||||
status.td_flags, status.td_state, status.td_event);
|
status.td_flags, status.td_state, status.td_event,
|
||||||
nsh_output(vtbl, "%-8s ", status.td_sigmask);
|
status.td_sigmask);
|
||||||
|
|
||||||
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
||||||
/* Get the Heap AllocSize */
|
/* Get the Heap AllocSize */
|
||||||
@ -412,7 +426,6 @@ static int ps_callback(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nsh_output(vtbl, "%08lu ", heap_size);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(CONFIG_NSH_DISABLE_PSSTACKUSAGE)
|
#if !defined(CONFIG_NSH_DISABLE_PSSTACKUSAGE)
|
||||||
@ -480,10 +493,7 @@ static int ps_callback(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
nsh_output(vtbl, "%06lu ", stack_size);
|
|
||||||
|
|
||||||
#ifdef CONFIG_STACK_COLORATION
|
#ifdef CONFIG_STACK_COLORATION
|
||||||
nsh_output(vtbl, "%06lu ", stack_used);
|
|
||||||
|
|
||||||
if (stack_size > 0 && stack_used > 0)
|
if (stack_size > 0 && stack_used > 0)
|
||||||
{
|
{
|
||||||
@ -491,12 +501,6 @@ static int ps_callback(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath,
|
|||||||
|
|
||||||
stack_filled = 10 * 100 * stack_used / stack_size;
|
stack_filled = 10 * 100 * stack_used / stack_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Additionally print a '!' if the stack is filled more than 80% */
|
|
||||||
|
|
||||||
nsh_output(vtbl, "%3lu.%lu%%%c ",
|
|
||||||
stack_filled / 10, stack_filled % 10,
|
|
||||||
(stack_filled >= 10 * 80 ? '!' : ' '));
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -520,8 +524,40 @@ static int ps_callback(FAR struct nsh_vtbl_s *vtbl, FAR const char *dirpath,
|
|||||||
vtbl->iobuffer[0] = '\0';
|
vtbl->iobuffer[0] = '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
nsh_output(vtbl, "%6s ", nsh_trimspaces(vtbl->iobuffer));
|
#if defined(PS_SHOW_HEAPSIZE) || defined (PS_SHOW_STACKSIZE) || \
|
||||||
|
defined (PS_SHOW_STACKUSAGE) || defined (NSH_HAVE_CPULOAD)
|
||||||
|
nsh_output(vtbl,
|
||||||
|
#ifdef PS_SHOW_HEAPSIZE
|
||||||
|
"%08lu "
|
||||||
|
#endif
|
||||||
|
#ifdef PS_SHOW_STACKSIZE
|
||||||
|
"%06lu "
|
||||||
|
#endif
|
||||||
|
#ifdef PS_SHOW_STACKUSAGE
|
||||||
|
"%06lu "
|
||||||
|
"%3lu.%lu%%%c "
|
||||||
|
#endif
|
||||||
|
#ifdef NSH_HAVE_CPULOAD
|
||||||
|
"%6s "
|
||||||
|
#endif
|
||||||
|
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
||||||
|
, heap_size
|
||||||
|
#endif
|
||||||
|
#if !defined(CONFIG_NSH_DISABLE_PSSTACKUSAGE)
|
||||||
|
, stack_size
|
||||||
|
#endif
|
||||||
|
#ifdef PS_SHOW_STACKUSAGE
|
||||||
|
, stack_used,
|
||||||
|
stack_filled / 10,
|
||||||
|
stack_filled % 10,
|
||||||
|
(stack_filled >= 10 * 80 ? '!' : ' ')
|
||||||
|
#endif
|
||||||
|
#ifdef NSH_HAVE_CPULOAD
|
||||||
|
, nsh_trimspaces(vtbl->iobuffer)
|
||||||
|
#endif
|
||||||
|
);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Read the task/thread command line */
|
/* Read the task/thread command line */
|
||||||
@ -586,33 +622,47 @@ int cmd_ps(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv)
|
|||||||
UNUSED(argc);
|
UNUSED(argc);
|
||||||
UNUSED(argv);
|
UNUSED(argv);
|
||||||
|
|
||||||
nsh_output(vtbl, "%5s ", "PID");
|
nsh_output(vtbl, "%5s %5s "
|
||||||
nsh_output(vtbl, "%5s ", "GROUP");
|
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
nsh_output(vtbl, "%3s ", "CPU");
|
"%3s "
|
||||||
#endif
|
#endif
|
||||||
|
"%3s %-8s %-7s %3s %-8s %-9s "
|
||||||
nsh_output(vtbl, "%3s %-8s %-7s %3s %-8s %-9s ",
|
"%-8s "
|
||||||
"PRI", "POLICY", "TYPE", "NPX", "STATE", "EVENT");
|
|
||||||
nsh_output(vtbl, "%-8s ", "SIGMASK");
|
|
||||||
|
|
||||||
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
||||||
nsh_output(vtbl, "%8s ", "HEAP");
|
"%8s "
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(CONFIG_NSH_DISABLE_PSSTACKUSAGE)
|
#if !defined(CONFIG_NSH_DISABLE_PSSTACKUSAGE)
|
||||||
nsh_output(vtbl, "%6s ", "STACK");
|
"%6s "
|
||||||
#ifdef CONFIG_STACK_COLORATION
|
#ifdef CONFIG_STACK_COLORATION
|
||||||
nsh_output(vtbl, "%6s ", "USED");
|
"%6s "
|
||||||
nsh_output(vtbl, "%7s ", "FILLED");
|
"%7s "
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NSH_HAVE_CPULOAD
|
#ifdef NSH_HAVE_CPULOAD
|
||||||
nsh_output(vtbl, "%6s ", "CPU");
|
"%6s "
|
||||||
#endif
|
#endif
|
||||||
nsh_output(vtbl, "%s\n", "COMMAND");
|
"%s\n",
|
||||||
|
"PID", "GROUP",
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
"CPU",
|
||||||
|
#endif
|
||||||
|
"PRI", "POLICY", "TYPE", "NPX", "STATE", "EVENT",
|
||||||
|
"SIGMASK",
|
||||||
|
#if CONFIG_MM_BACKTRACE >= 0 && !defined(CONFIG_NSH_DISABLE_PSHEAPUSAGE)
|
||||||
|
"HEAP",
|
||||||
|
#endif
|
||||||
|
#if !defined(CONFIG_NSH_DISABLE_PSSTACKUSAGE)
|
||||||
|
"STACK",
|
||||||
|
#ifdef CONFIG_STACK_COLORATION
|
||||||
|
"USED",
|
||||||
|
"FILLED",
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef NSH_HAVE_CPULOAD
|
||||||
|
"CPU",
|
||||||
|
#endif
|
||||||
|
"COMMAND"
|
||||||
|
);
|
||||||
|
|
||||||
return nsh_foreach_direntry(vtbl, "ps", CONFIG_NSH_PROC_MOUNTPOINT,
|
return nsh_foreach_direntry(vtbl, "ps", CONFIG_NSH_PROC_MOUNTPOINT,
|
||||||
ps_callback, NULL);
|
ps_callback, NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user