Make toolbox top a little more like everyone else's.
The use of PR to mean PSR rather than PR was confusing, so let's just use PR and NI the same way everyone else does. Also remove bogus blank lines and unnecessary delays (both before first showing anything and after having shown the final iteration). Bug: http://b/27447491 Change-Id: I676131956facf2167abb5d0852c55b0670b5eaa6
This commit is contained in:
parent
4c87588fa2
commit
fd64c5d07e
|
@ -62,12 +62,13 @@ struct proc_info {
|
|||
char state;
|
||||
uint64_t utime;
|
||||
uint64_t stime;
|
||||
char pr[3];
|
||||
long ni;
|
||||
uint64_t delta_utime;
|
||||
uint64_t delta_stime;
|
||||
uint64_t delta_time;
|
||||
uint64_t vss;
|
||||
uint64_t rss;
|
||||
int prs;
|
||||
int num_threads;
|
||||
char policy[POLICY_NAME_LEN];
|
||||
};
|
||||
|
@ -183,11 +184,11 @@ int top_main(int argc, char *argv[]) {
|
|||
old_procs = new_procs;
|
||||
num_old_procs = num_new_procs;
|
||||
memcpy(&old_cpu, &new_cpu, sizeof(old_cpu));
|
||||
sleep(delay);
|
||||
read_procs();
|
||||
print_procs();
|
||||
free_old_procs();
|
||||
fflush(stdout);
|
||||
if (iterations != 0) sleep(delay);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -339,20 +340,30 @@ static int read_stat(char *filename, struct proc_info *proc) {
|
|||
strncpy(proc->tname, open_paren + 1, THREAD_NAME_LEN);
|
||||
proc->tname[THREAD_NAME_LEN-1] = 0;
|
||||
|
||||
/* Scan rest of string. */
|
||||
// Scan rest of string.
|
||||
long pr;
|
||||
sscanf(close_paren + 1,
|
||||
" %c " "%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d "
|
||||
"%" SCNu64
|
||||
"%" SCNu64 "%*d %*d %*d %*d %*d %*d %*d "
|
||||
"%" SCNu64
|
||||
"%" SCNu64 "%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d "
|
||||
"%d",
|
||||
" %c "
|
||||
"%*d %*d %*d %*d %*d %*d %*d %*d %*d %*d "
|
||||
"%" SCNu64 // utime %lu (14)
|
||||
"%" SCNu64 // stime %lu (15)
|
||||
"%*d %*d "
|
||||
"%ld " // priority %ld (18)
|
||||
"%ld " // nice %ld (19)
|
||||
"%*d %*d %*d "
|
||||
"%" SCNu64 // vsize %lu (23)
|
||||
"%" SCNu64, // rss %ld (24)
|
||||
&proc->state,
|
||||
&proc->utime,
|
||||
&proc->stime,
|
||||
&pr,
|
||||
&proc->ni,
|
||||
&proc->vss,
|
||||
&proc->rss,
|
||||
&proc->prs);
|
||||
&proc->rss);
|
||||
|
||||
// Translate the PR field.
|
||||
if (pr < -9) strcpy(proc->pr, "RT");
|
||||
else snprintf(proc->pr, sizeof(proc->pr), "%ld", pr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -414,11 +425,10 @@ static int read_status(char *filename, struct proc_info *proc) {
|
|||
}
|
||||
|
||||
static void print_procs(void) {
|
||||
static int call = 0;
|
||||
int i;
|
||||
struct proc_info *old_proc, *proc;
|
||||
long unsigned total_delta_time;
|
||||
struct passwd *user;
|
||||
char *user_str, user_buf[20];
|
||||
|
||||
for (i = 0; i < num_new_procs; i++) {
|
||||
if (new_procs[i]) {
|
||||
|
@ -441,7 +451,7 @@ static void print_procs(void) {
|
|||
|
||||
qsort(new_procs, num_new_procs, sizeof(struct proc_info *), proc_cmp);
|
||||
|
||||
printf("\n\n\n");
|
||||
if (call++ > 0) printf("\n\n\n");
|
||||
printf("User %ld%%, System %ld%%, IOW %ld%%, IRQ %ld%%\n",
|
||||
((new_cpu.utime + new_cpu.ntime) - (old_cpu.utime + old_cpu.ntime)) * 100 / total_delta_time,
|
||||
((new_cpu.stime ) - (old_cpu.stime)) * 100 / total_delta_time,
|
||||
|
@ -459,16 +469,18 @@ static void print_procs(void) {
|
|||
total_delta_time);
|
||||
printf("\n");
|
||||
if (!threads)
|
||||
printf("%5s %2s %4s %1s %5s %7s %7s %3s %-8s %s\n", "PID", "PR", "CPU%", "S", "#THR", "VSS", "RSS", "PCY", "UID", "Name");
|
||||
printf("%5s %-8s %2s %3s %4s %1s %5s %7s %7s %3s %s\n", "PID", "USER", "PR", "NI", "CPU%", "S", "#THR", "VSS", "RSS", "PCY", "Name");
|
||||
else
|
||||
printf("%5s %5s %2s %4s %1s %7s %7s %3s %-8s %-15s %s\n", "PID", "TID", "PR", "CPU%", "S", "VSS", "RSS", "PCY", "UID", "Thread", "Proc");
|
||||
printf("%5s %5s %-8s %2s %3s %4s %1s %7s %7s %3s %-15s %s\n", "PID", "TID", "USER", "PR", "NI", "CPU%", "S", "VSS", "RSS", "PCY", "Thread", "Proc");
|
||||
|
||||
for (i = 0; i < num_new_procs; i++) {
|
||||
proc = new_procs[i];
|
||||
|
||||
if (!proc || (max_procs && (i >= max_procs)))
|
||||
break;
|
||||
user = getpwuid(proc->uid);
|
||||
struct passwd* user = getpwuid(proc->uid);
|
||||
char user_buf[20];
|
||||
char* user_str;
|
||||
if (user && user->pw_name) {
|
||||
user_str = user->pw_name;
|
||||
} else {
|
||||
|
@ -476,13 +488,17 @@ static void print_procs(void) {
|
|||
user_str = user_buf;
|
||||
}
|
||||
if (!threads) {
|
||||
printf("%5d %2d %3" PRIu64 "%% %c %5d %6" PRIu64 "K %6" PRIu64 "K %3s %-8.8s %s\n",
|
||||
proc->pid, proc->prs, proc->delta_time * 100 / total_delta_time, proc->state, proc->num_threads,
|
||||
proc->vss / 1024, proc->rss * getpagesize() / 1024, proc->policy, user_str, proc->name[0] != 0 ? proc->name : proc->tname);
|
||||
printf("%5d %-8.8s %2s %3ld %3" PRIu64 "%% %c %5d %6" PRIu64 "K %6" PRIu64 "K %3s %s\n",
|
||||
proc->pid, user_str, proc->pr, proc->ni,
|
||||
proc->delta_time * 100 / total_delta_time, proc->state, proc->num_threads,
|
||||
proc->vss / 1024, proc->rss * getpagesize() / 1024, proc->policy,
|
||||
proc->name[0] != 0 ? proc->name : proc->tname);
|
||||
} else {
|
||||
printf("%5d %5d %2d %3" PRIu64 "%% %c %6" PRIu64 "K %6" PRIu64 "K %3s %-8.8s %-15s %s\n",
|
||||
proc->pid, proc->tid, proc->prs, proc->delta_time * 100 / total_delta_time, proc->state,
|
||||
proc->vss / 1024, proc->rss * getpagesize() / 1024, proc->policy, user_str, proc->tname, proc->name);
|
||||
printf("%5d %5d %-8.8s %2s %3ld %3" PRIu64 "%% %c %6" PRIu64 "K %6" PRIu64 "K %3s %-15s %s\n",
|
||||
proc->pid, proc->tid, user_str, proc->pr, proc->ni,
|
||||
proc->delta_time * 100 / total_delta_time, proc->state,
|
||||
proc->vss / 1024, proc->rss * getpagesize() / 1024, proc->policy,
|
||||
proc->tname, proc->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue