The process and mapping lists are often very long and rarely fit
entirely on the screen. Usually we are most interested in the largest
entries, the ones that now get printed in the beginning of the
list. This is cumbersome as it therefore requires quite a bit of
scrolling to see what you really want.
Reverse the list printing order so that the tool becomes more friendly
to the end user.
Signed-off-by: Timo Kokkonen <timo.t.kokkonen@iki.fi>
struct process *ps;
struct pageframe *pf;
long int swapped, present, unique, total;
struct process *ps;
struct pageframe *pf;
long int swapped, present, unique, total;
- long int biggest = 0, second_biggest;
+ long int biggest = 0, smallest = 0, second_smallest;
int count, processes = 0;
/*
int count, processes = 0;
/*
printf(" name\n");
restart:
printf(" name\n");
restart:
+ second_smallest = biggest;
count = 0;
list_for_each_entry(ps, &process_list->list, list) {
count = 0;
list_for_each_entry(ps, &process_list->list, list) {
present = ps->pages_present;
swapped = ps->pages_swapped;
unique = ps->pages_unique;
total = present + swapped;
present = ps->pages_present;
swapped = ps->pages_swapped;
unique = ps->pages_unique;
total = present + swapped;
- second_biggest = (total < biggest) &&
- (second_biggest < total) ?
- total : second_biggest;
+ if (total > smallest)
+ second_smallest = MIN(second_smallest, total);
continue;
if (total == 0)
continue;
if (total == 0)
- if (count > 0) {
- biggest = second_biggest;
+ if (smallest != second_smallest) {
+ smallest = second_smallest;
+ printf(" RSS swapped USS total pid");
+ if (opts->with_threads)
+ printf(" tid");
+ printf(" name\n");
printf("Total %d processes\n", processes);
}
printf("Total %d processes\n", processes);
}
{
struct maps *map;
long int swapped, present, total;
{
struct maps *map;
long int swapped, present, total;
- long int biggest = 0, second_biggest;
+ long int biggest = 0, smallest = 0, second_smallest;
int count, processes = 0, pids = 0;
if (is_parse_option(opts, PARSE_SHARED_MAPPING)) {
int count, processes = 0, pids = 0;
if (is_parse_option(opts, PARSE_SHARED_MAPPING)) {
printf("process: [%d] %s\n", ps->pid, ps->name);
printf(" size RSS swapped total name\n");
restart:
printf("process: [%d] %s\n", ps->pid, ps->name);
printf(" size RSS swapped total name\n");
restart:
+ second_smallest = biggest;
count = 0;
list_for_each_entry(map, &ps->maps->list, list) {
count = 0;
list_for_each_entry(map, &ps->maps->list, list) {
present = map->pages_present;
swapped = map->pages_swapped;
total = present + swapped;
present = map->pages_present;
swapped = map->pages_swapped;
total = present + swapped;
- second_biggest = (total < biggest) &&
- (second_biggest < total) ?
- total : second_biggest;
+ if (total > smallest)
+ second_smallest = MIN(second_smallest, total);
- if (count > 0 && biggest > 0) {
- biggest = second_biggest;
+ if (smallest != second_smallest) {
+ smallest = second_smallest;
+ printf(" size RSS swapped total name\n");