Remix.run Logo
Linux Terminal Memory Usage(gilesorr.com)
47 points by speckx 6 hours ago | 42 comments
archargelod 23 minutes ago | parent | next [-]

I've been using st-terminal[1] for 5-6 years at this point. It starts instantly, uses ~10mb of Ram and has almost zero latency. It's especially apparent on X11 without compositing enabled.

I tried ghostty the last year and I was instantly turned off by how much ram it hogs, but even more horrible was that it was using close to 10% cpu just sitting idly, doing absolutely nothing. It also felt at least twice as slow.

I need my terminal to display text, do scrollback and nothing else. I don't need gpu rendering, I don't need any fancy features, just be respectful to my system resources. Is it too much to ask?

[1] https://st.suckless.org/

amarshall 4 hours ago | parent | prev | next [-]

Probably want `kitty --single-instance` to reduce memory usage when opening multiple.

https://sw.kovidgoyal.net/kitty/invocation/#cmdoption-kitty-...

gryffyn 2 hours ago | parent | prev | next [-]

I've tried kitty, alacritty, ghostty, wezterm, and konsole (all on X11), but I keep coming back to xfce4-terminal because it opens near instantly and has the least input latency of any of the other terminal emulators I've tried. It also uses very little memory in comparison (with 6 windows open and a fair bit in each scrollback buffer):

  Private  +   Shared  =  RAM used Program
  31.2 MiB +  10.7 MiB =  42.0 MiB xfce4-terminal
gryffyn 27 minutes ago | parent [-]

I was curious to see what the actual latency was, so I used Pavel Fatin's https://pavelfatin.com/typometer/.

Notes: This system is running Arch, with kernel 7.0.3, scx_bpfland, and i3 on X11. Primary GPU is an integrated Intel GPU.

Using picom:

  Terminal                     Min    Max    Avg    SD
  alacritty                    20.1   111.4  43.8   18.0
  xfce4-terminal               19.1   112.5  49.1   17.9
  xterm                        12.3   152.6  53.1   26.4
  wezterm                      28.3   106.0  56.2   15.4
  kitty                        25.3   115.9  57.2   18.5
  ghostty                      19.2   611.8  63.4   45.5
  konsole                      37.9   138.6  68.8   18.5
Using picom --realtime:

  Terminal                     Min    Max    Avg    SD
  xterm                        5.7    63.6   15.2   8.8
  alacritty                    7.4    48.8   20.2   9.7
  xfce4-terminal               8.7    65.3   28.3   12.5
  kitty                        13.2   64.8   30.8   10.3
  konsole                      17.3   71.2   31.1   9.5
  ghostty                      12.9   63.7   33.2   11.6
  wezterm                      18.0   58.6   33.6   11.1
No picom:

  Terminal                     Min    Max    Avg    SD
  xterm                        4.5    20.4   8.6    1.0
  alacritty                    9.2    13.3   11.1   0.7
  xfce4-terminal               7.4    17.5   11.3   0.9
  ghostty                      11.2   35.3   18.8   3.8
  wezterm                      14.1   34.2   22.7   3.7
  kitty                        12.2   44.3   24.4   5.8
  konsole                      17.2   30.7   25.0   3.6
Running on the NVIDIA GPU just for fun:

  wezterm (no picom, NVIDIA)   21.7   51.2   34.8   8.1
  wezterm (picom rt, NVIDIA)   22.0   70.9   41.4   11.2
  wezterm (NVIDIA)             34.4   146.7  69.0   17.8

Slightly surprised that xterm doesn't top the chart on the picom category.
jstimpfle 4 hours ago | parent | prev | next [-]

I've been on xterm since I've started using Linux seriously in 2008. I probably wouldnt have tested it because was probably a bit obscure then like it is now. It's not perfect, it's baroque, has terrible configurability, no tabs and an ugly context menu. But it's honestly the only usable terminal, none other has stuck with me. Most are far too sluggish to even start up. Then there is key input latency. Then some of the newer ones are only usable with good gpu support, but not from a VM like Virtualbox or maybe VMware where graphics isnt working great.

Another thing for a very long time has been that most other terminals don't support bitmap fonts. This was/is critical for lower DPI monitors. Today I've mostly made the switch to TTF fonts.

AdieuToLogic 2 hours ago | parent [-]

I used to like rxvt (or its clone rxvt-unicode) when using X-Windows. What are your thoughts about it compared to xterm?

sebtron 5 hours ago | parent | prev | next [-]

> I expected gnome-terminal's memory usage to be in line with konsole (KDE's default terminal), but gnome-terminal shows remarkably well in this test

In tipical GNOME fashion, they have decided to replace this largely working piece of software with on with one that places solidly at the bottom of the article's list (ptyxis).

audidude 5 hours ago | parent | next [-]

Almost all of that is Mesa shaders and GTK's CPU side font-cache for GL/Vulkan, compiled CSS state, FWIW.

If you run:

GSK_RENDERER=cairo ptyxis -s

You can verify that with 69,985 here RES and 52,428 of that SHR. With 5 tabs open it jumped to 71,208 here. Presumably for the encrypted scrollback pre-allocations.

You still may not choose to use it, but it should stay relatively similar the more tabs you open.

Also, it's not a core GNOME app. It's just an app I wrote for me that the distros seem to have liked for its design/platform integration.

freedomben 3 hours ago | parent [-]

Thanks for writing it! I was very skeptical initially, but after using it I'm a fan. I also appreciate that I can script settings using gsettings, so I can configure it easily on new systems without having to touch the GUI (though the GUI settings are well thought out and nice to use when you don't know what you need yet).

scheme271 5 hours ago | parent | prev | next [-]

ptyxis has a few features that gnome-terminal doesn't and which are really handy. Namely, being able to list containers running on the system and then being able to select one to get a terminal running inside the container. Not sure that warrants replacing gnome-terminal but it is really handy if you use containers a lot.

audidude 5 hours ago | parent | next [-]

The good news is that before writing Ptyxis, I also ported GNOME Terminal to GTK 4 and doubled the performance of VTE. So you know, use whatever you like.

simonask 3 hours ago | parent [-]

Hey thanks for your work, I’m really enjoying Ptyxis on Arch.

willis936 an hour ago | parent | prev [-]

Cool, but can you set the colors?

kokada 4 hours ago | parent | prev [-]

Wait, what? ptyxis is not the default GNOME termjnal. It is the terminal of choice for both Ubuntu and Fedora, but the default terminal in GNOME is Console, internally known as kgx: https://en.wikipedia.org/wiki/GNOME_Terminal.

dwheeler 3 hours ago | parent [-]

Gnome Console seems to be intended for people who don't use terminals. I quickly install GNOME terminal for real use.

celrod 4 hours ago | parent | prev | next [-]

foot also offers a client/server architecture. If you start a foot server (e.g. with a systemd service), you can use `footclient -N`. This may reduce the memory pressure of running many terminals.

This is similar to the `kitty --singleinstance` mentioned in another comment by amarshall.

ventana 5 hours ago | parent | prev | next [-]

Today I learned (thanks to this article) that I can use timg to display images right in my standard macOS terminal, even without switching to kitty or any other fancy thing. Not pixel perfect of course, but still, much faster to go through icons or other pictures than opening in a separate Preview window. A simple "brew install timg" worked for me. Will surely save me some clicks!

menno-sh 5 hours ago | parent [-]

For that specific use case you could also try `yazi`[0], which is a TUI file browser that has image (and other filetypes) preview built in.

[0] https://github.com/sxyazi/yazi

magios 5 hours ago | parent | prev | next [-]

i've been using xst https://github.com/gnotclub/xst, a fork of suckless st https://st.suckless.org/ for a long period, but there's also st-flexipatch https://github.com/bakkeby/st-flexipatch available which now includes sixel support

edit: the article did mention st but claimed it had no scrollback, that's what the patches are for. st-flexipatch makes it easy to enable or disable the patches via c preprocessor defines.

jiqiren 5 hours ago | parent | prev | next [-]

Why not try Ghostty? https://ghostty.org

skeledrew 5 hours ago | parent | next [-]

He said it: because it isn't in Debian repos.

d3Xt3r 3 hours ago | parent | next [-]

That's an odd reason. There's many ways to get packages these days without being dependent on your distro's repos (like using brew or Nix, or just grabbing the binaries directly). Ghostty is a very popular terminal right now, so it's a shame that the author left it out of the comparison.

2 hours ago | parent | next [-]
[deleted]
jbverschoor 2 hours ago | parent | prev [-]

the (walled) garden is a very good place to be

esseph 4 hours ago | parent | prev [-]

One of many reasons I left Debian behind for desktop things over a decade ago. I love the project and appreciate the history, but things can get pretty long in the tooth after awhile. Flatpaks help.

kevin_thibedeau an hour ago | parent | next [-]

Just download the source and build the binaries you need. I use GNU stow as a parallel package manager within /usr/local that plays nice with the rest of the OS. It isn't hard for most sane programs with proper build scripting.

esseph an hour ago | parent [-]

Went to an atomic distro + flatpak.

giancarlostoro 2 hours ago | parent | prev [-]

I wish Debian had an Arch style bleeding edge fork. Till then I've been happy using Arch, I had my last straw when a program needed a more up to date GLIBC on Debian. That's such a can of worms to resolve, I just went ahead and gave Endeavour (Arch based) a try and havent gone back or changed distros ever since.

If someone ever makes a Debian distro that is bleeding edge and supports Nvidia drivers (basically a more bleeding edge Ubuntu) I'd be all ears.

Wowfunhappy 2 hours ago | parent [-]

Aren't you describing either Debian Testing or Debian Unstable? (Depending on just how bleeding edge you want.)

ac29 4 hours ago | parent | prev [-]

Its horrible with memory, launching a single empty terminal uses 307MiB on my Linux system

pdpi 2 hours ago | parent [-]

My current Ghostty session on macOS is holding on to 127.8 MiB of real memory, and only 37.5 MiB of private memory. What's the Linux build up to that makes up for that difference?

Bender 2 hours ago | parent | prev | next [-]

I've honestly never given terminal memory usage a second thought. Here is the memory usage of konsole version 26.04.1 on CachyOS.

     Private  +   Shared  =  RAM used       Program
     53.3 MiB +  25.1 MiB =  78.5 MiB       konsole
Above is with two tabs open. Below is 18 tabs open. In the settings the memory limit is set to 192 MB (Default)

     Private  +   Shared  =  RAM used       Program
     61.9 MiB +  33.1 MiB =  95.0 MiB       konsole

Using ps_mem.py [1] - I suggest using this instead of ps to avoid confusion around shared memory.

[1] - https://github.com/pixelb/ps_mem

Piraty 5 hours ago | parent | prev | next [-]

there is more to your choice of terminal emulators than pure memory usage.

https://lwn.net/Articles/749992/

https://lwn.net/Articles/751763/

eahm 5 hours ago | parent | prev | next [-]

Why is xfce4-terminal missing?

minus7 4 hours ago | parent | next [-]

It's just using libvte like gnome-terminal and lxterminal, so I doubt it's much different from them.

eahm an hour ago | parent [-]

Oh I see, about Terminator?

beej71 3 hours ago | parent | prev [-]

/usr/bin/xfce4-terminal 64176

I like xfce4-terminal as a compromise. Good bang for the memory buck.

dxxvi 4 hours ago | parent | prev | next [-]

I'm using wezterm in KDE Plamas in Wayland.

jmclnx 5 hours ago | parent | prev [-]

I use to have a few terms active in the very early days of Linux. When I heard about screen/tmux now I just have 1 term open and multiple tmux sessions.

I think if you can get use to tmux/screen you may like that better :)

skeledrew 5 hours ago | parent | next [-]

I've faced the many terminal tabs issue. In a way tmux actually makes it worse as I'm used to the running app being in the title, and tmux obscures that (now there's just "client"). But also better as I found a great session restore plugin; always drove me a bit crazy when something happened that either killed the terminal app or triggered a full restart, and my tabs were lost.

kevin_thibedeau an hour ago | parent [-]

  set -g automatic-rename on
  set -g automatic-rename-format '#{pane_current_command}'
somat 4 hours ago | parent | prev [-]

I find A good window manager to be nicer for a bunch of terminals than tmux, where tmux really shines is when you want a bunch of terminals on a remote system.