A solução que "fra-san" deu nos comentários aqui encaixou perfeitamente. Usando o pacote "cgroup-tools", consegui limitar o uso da memória do Chrome com êxito. Testei-o abrindo dezenas de abas ao mesmo tempo e pude ver o limite de memória em ação. No entanto, tive que deixar meu script em execução, pois, por mais que eu use principalmente o Chrome, o cache do sistema consome muita memória RAM também.
Meus passos:
1- Use este script de: Limite o uso de memória para um único processo do Linux
#!/bin/sh
# This script uses commands from the cgroup-tools package. The cgroup-tools commands access the cgroup filesystem directly which is against the (new-ish) kernel's requirement that cgroups are managed by a single entity (which usually will be systemd). Additionally there is a v2 cgroup api in development which will probably replace the existing api at some point. So expect this script to break in the future. The correct way forward would be to use systemd's apis to create the cgroups, but afaik systemd currently (feb 2018) only exposes dbus apis for which there are no command line tools yet, and I didn't feel like writing those.
# strict mode: error if commands fail or if unset variables are used
set -eu
if [ "$#" -lt 2 ]
then
echo Usage: 'basename $0' "<limit> <command>..."
echo or: 'basename $0' "<memlimit> -s <swaplimit> <command>..."
exit 1
fi
cgname="limitmem_$$"
# parse command line args and find limits
limit="$1"
swaplimit="$limit"
shift
if [ "$1" = "-s" ]
then
shift
swaplimit="$1"
shift
fi
if [ "$1" = -- ]
then
shift
fi
if [ "$limit" = "$swaplimit" ]
then
memsw=0
echo "limiting memory to $limit (cgroup $cgname) for command $@" >&2
else
memsw=1
echo "limiting memory to $limit and total virtual memory to $swaplimit (cgroup $cgname) for command $@" >&2
fi
# create cgroup
sudo cgcreate -g "memory:$cgname"
sudo cgset -r memory.limit_in_bytes="$limit" "$cgname"
bytes_limit='cgget -g "memory:$cgname" | grep memory.limit_in_bytes | cut -d\ -f2'
# try also limiting swap usage, but this fails if the system has no swap
if sudo cgset -r memory.memsw.limit_in_bytes="$swaplimit" "$cgname"
then
bytes_swap_limit='cgget -g "memory:$cgname" | grep memory.memsw.limit_in_bytes | cut -d\ -f2'
else
echo "failed to limit swap"
memsw=0
fi
2- Nomeado como "limitmem" e copiado para / usr / bin / então eu poderia chamá-lo do terminal apenas com limitmem
. Agora eu posso abrir um processo que limita o uso da memória para, por exemplo, 800MB usando esta sintaxe: limitmem 800M command
No meu caso: limitmem 1000M google-chrome --password-store=basic --aggressive-cache-discard --aggressive-tab-discard