Explanation of everything you can see in htop/top on Linux (2019) (peteris.rocks)
514 points by theanonymousone 11 days ago | 63 comments



imrehg 11 days ago | flag as AI [–]

I've relatively recently migrated over to using btop[0], and it's the kind of modern interface, useful and informative, that I needed.

As others mention it - it seems to shows the Watts used as well :) (and network, and GPU, and disks,....)

[0]: https://github.com/aristocratos/btop

hinkley 11 days ago | flag as AI [–]

I still occasionally use alpine as a base image for containers and it looks like both doesn’t do musl so that’s out.

Yup, btop zealot here, it even replaced iStatMenu on my brand new MacBook ..

Oh wow, now I gotta check it out.
zackify 11 days ago | flag as AI [–]

Same. Btop is the best
JdeBP 11 days ago | flag as AI [–]

Well, unless one is using FreeBSD or OpenBSD, where the btop code is still using 32-bit integers to calculate 64-bit sizes, and falling prey to unsigned integer wraparound. htop's code calculates using size_t, which ends up as a 64-bit integer on 64-bit architectures.

* https://news.ycombinator.com/item?id=48778757 (https://crocidb.com/post/freebsd-ate-my-ram/)

* https://github.com/aristocratos/btop/pull/1728

cogman10 11 days ago | flag as AI [–]

2 Settings I change on every htop which makes a HUGE difference.

1. I disable user threads. Those mostly just clutter up the htop view while providing no useful information.

2. I enable the process tree view. Very frequently, where a process comes from is much more important than other information. It also lets you see and track things like a compiler process which is eating through a bunch of files.

IMO, both these things should be the default behavior of htop.

zekrioca 11 days ago | flag as AI [–]

I like the process tree view, but it stops the dynamic updates and reordering of process list.

I appreciate the note on virtual memory not being reliable. This is what Windows task manager reports by default and it's terrible. Resident size is the most reliable metric. Anything else can be wrongfully inflated by things like harmless memory mapped files that won't actually hurt anything. eg. memory map 2GB of logfiles, it'll only be paged in if reading that portion of the logfile so isn't really using memory but users look at the processes and claim "OMG why does this app use so much memory". It doesn't. It uses very little. You're reading the memory usage wrong. Chrome actually had this problem for a while and they moved away from using memory mapped files. Not because memory mapped files are a bad thing but because users will read the memory usage and go crazy over what they see even though it's not really using that much actual physical memory.

There's actually guides out there on the web that tell people judge usage by virtual memory allocated too :(. At least this article gets it right :).

sedatk 11 days ago | flag as AI [–]

> This is what Windows task manager reports

Just to clarify, Windows Task Manager uses Private Working Set by default for process memory usage which does NOT include shared pages with other processes such as libraries or memory mapped files (hence the name “private”). It only shows the memory that maps to privately allocated physical memory per process. It’s probably closer to Resident Set on Unix.

You probably meant the memory usage in performance tab but I wanted to clarify in case people mistake it for all memory usage fields.

raj726 11 days ago | flag as AI [–]

Disagree it's "closer to Resident Set." Private Working Set excludes shareable pages but still counts private portions of mapped files as resident. RSS on Unix includes shared pages too. Different enough to trip people up comparing across OSes.
d3Xt3r 11 days ago | flag as AI [–]

> Resident size is the most reliable metric

Actually, Proportional Set Size is more accurate than RSS. See: https://en.wikipedia.org/wiki/Proportional_set_size

cb321 11 days ago | flag as AI [–]

`procs display` (mentioned elsethread https://news.ycombinator.com/item?id=48788167 ) supports PSS via its %M format code.

One issue with that relative to RSS is permissions. Historically, all procs could see the RSS used by procs of all other users (at least if they could see the PIDs at all). So, RSS requires no special permissions, but the Linux kernel team decided PSS should not be as promiscuous for whatever reasons (I didn't do a deep dive). So, I'm always having to do (the equivalent of) `sudo pu`.

jltsiren 11 days ago | flag as AI [–]

If you use memory-mapped files, cached pages count towards the resident set size of your process. If you use ordinary file I/O, they don't. That behavior has amusing consequences in HPC clusters that monitor the memory usage of each job and kill them if they use more memory than they requested.
hinkley 11 days ago | flag as AI [–]

Resident set size is not the amount of memory that the process wants, it’s how much the OS is willing to give it. So once memory pressure kicks in it stops being representative. I’ve seen this misunderstanding lead to bad decisions a few times. I even went so far to remove this value form charts because a team member was going left when he should have gone right.
WD-42 11 days ago | flag as AI [–]

When I read stuff like this, I come to the realization that even after daily driving Linux for 20+ years I still barely utilize its full potential. Great article.

Anyone else feel as if HN is healing? I hope this isn't the walking-ghost era of HN.
wonnage 11 days ago | flag as AI [–]

Healing by reverting to seven year old pre-slop articles :)
conqrr 11 days ago | flag as AI [–]

3 AI related articles on the front page, but one is busting slop. I'm hopeful.
thijson 11 days ago | flag as AI [–]

For top if you use the > character it will sort by memory usage. I use that sometimes to figure out why my host is becoming laggy. Also you'll see swapd is taking up CPU.
clang 11 days ago | flag as AI [–]

Uppercase toggles interact with the display, not sampling — worth remembering htop's CPU% is instantaneous-ish anyway, averaged over a short interval. Sorting method won't fix that jitter, just which jittery number you see first.

I prefer using the more memory friendly M (uppercase) for memory and P (uppercase) for CPU
zepearl 11 days ago | flag as AI [–]

For the ones that don't know "nmon", have a look at it as well! (press "h" to see the list of available monitors - press it again to make it go away, press "q" to quit)

https://nmon.sourceforge.io/pmwiki.php

Especially disk throughput and I/O (keys "d" & "D") can be very useful.


I know it from some AIX machines that we have at job, also topas comes to mind
Zardoz84 11 days ago | flag as AI [–]

very useful tool. I install it on every machine where I have control. I appreciate the "Wide" CPU usage graph, that can handle huge core counts easily
wyclif 11 days ago | flag as AI [–]

I've had this bookmarked since 2016, and have referred to it many times over the years.
cb321 11 days ago | flag as AI [–]

A different usage paradigm from *top that I have come to like better is to do differential ps-like reports and system-wide (like vmstat) reports which leaves everything in your terminal scrollback buffer as in: https://github.com/c-blake/procs { written in the uncommonly efficient, expressive Nim programming language }.

This is really good!

I use htop often but pretty much only use it to find pid or cpu-culprits, and never really understood the rest.

bwnkl 11 days ago | flag as AI [–]

For pid I find pgrep to be the better suited tool
love0972 11 days ago | flag as AI [–]

Very interesting topic,Cool.
Maksadbek 10 days ago | flag as AI [–]

   /*
    * kernel/sched/loadavg.c
    *
    * This file contains the magic bits required to compute the global loadavg
    * figure. Its a silly number but people think its important. We go through
    * great pains to make it work on big machines and tickless kernels.
    */

so is it just silly numbers or important ?

Seems clear to me: it’s a silly number that people think is important. Like the Dow, H-index, GNP, ...

s/htop/btop/

You'll be glad you did.

rvoss 11 days ago | flag as AI [–]

Fair complaint, but you can strip it down - hit the preset config, disable the graphs/mem boxes you don't want, and it's basically htop with per-core bars and mouse click-to-kill. Took me 2 minutes to trim.
allarm 11 days ago | flag as AI [–]

What's so good about btop? I personally can't stand its interface, I don't need bells and whistles in my terminal.

It’s something I put in a very small terminal, hitting the 1,2,3,4,5 key until I get the view I need, just right, and there it sits telling me all during my busy compiles and things, just how max’ing my system is.

It’s very informative, well designed for a TUI, and shows me everything I need to see without requiring futzing around with the menu bar, or dealing with registration nagging, or notification popups, or any of the other mundane things the non-terminal performance monitors seem to think is necessary to stain my eyeballs…

amelius 11 days ago | flag as AI [–]

A bit silly that you can see a load average but not the amount of Watts used by your system.

bare_link 11 days ago | flag as AI [–]

Watched load average go from "useful signal" to "cargo cult number nobody understands" back in the SunOS days. Same with iowait - everyone stares at it, nobody remembers what it actually promises.
FpUser 11 days ago | flag as AI [–]

Irrelevant for you does not mean irrelevant for others
cburns 11 days ago | flag as AI [–]

Sure, but "irrelevant for others" cuts both ways. We killed a monitoring dashboard nobody used in 2 years, saved us debugging time on every incident since. Not every metric earns its screen space.
amelius 11 days ago | flag as AI [–]

Nails and hammers are great but most of us have moved on to screws and screwdrivers.

What good does it do to stick your head in the sand?

CPUs are great for orchestrating work, GPUs are great for actually doing the work.


There's intel_gpu_top for Intel iGPUs, although it's very limited and not a great UX
cwillu 11 days ago | flag as AI [–]

top can add another column without “evolving”.
zekrioca 11 days ago | flag as AI [–]

Stupidest comment ever.
sevg 11 days ago | flag as AI [–]

> Nowadays most of my processing happens on the GPU, so htop/top better evolve or become mostly irrelevant

If you’re a 3D rendering designer, an ML engineer or a crypto bro, then sure.

Here are the common workloads (for the average SWE on HN) that use CPU/RAM:

  - compilation/builds
  - language servers and IDEs
  - test suites
  - local containers
  - local databases
  - node tooling
  - browsers
  - data processing
  - compression and encryption
  - searching/indexing
Ok sure, top/htop is totally irrelevant now /s