[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Che grande delusione questo Firefox e Chromium oppure linux?



La configurazione della VM (virtual memory) in Linux è complessa così
come sono complessi i meccanismi che la regolano (vedi parametri in
calce e loro significato).
La swap è una parte della VM e pertanto è legata mani e piedi alle sue
logiche.
Cercare di banalizzarne il funzionamento della VM è sbagliato e da
sempre questo tentativo in Linux è fonte di confusione ("perché non ho
ram libera!?" cit., "perché ho ram libera ma uso la swap?" cit.)
Possiamo dire che la swap serve ad ospitare dati che il sistema ritiene
più conveniente ritrovare "pronti all'uso" piuttosto che doverli
ricreare (e con ricreare si intende anche eseguire I/O) OPPURE nel caso
in cui la RAM sia satura per evitare un crash completo del sistema (per
quanto l'OOM killer tenti di salvare la situazione).

Se vuoi fare un esperimento puoi disattivare la swap:

$ sudo swapoff -a

Se non hai abbastanza ram disponibile il sistema diventerà instabile e
probabilmente si bloccherà.
Se hai abbastanza ram disponibile potrebbe essere più veloce o più lento
in base al tipo di operazioni che esegue e quindi in base a quanto le
configurazioni pre-impostate sono valide per quella determinata situazione.

In sostanza la configurazione predefinita per la VM cerca di servire nel
migliore dei modi l'impiego medio dell'utente ma non potrà mai e poi mai
essere adatta ad ogni impiego: lo stesso vale per le dimensioni della swap.

Possiamo anche dire però che se la swap viene usata c'è sempre un motivo
a monte: pensare di risolvere disattivando la swap è sbagliato tanto
quanto è sbagliato banalizzare, è sempre necessario comprendere cosa
avviene a monte.

Per quanto riguarda il browser: in Firefox about:config cercando memory
ho trovato alcune interessanti opzioni circa alcuni tentativi di
risolvere problemi di memoria (es. browser.tabs.unloadOnLowMemory) ma di
fatto non sembrano aver funzionato e non sembrano essere presenti dei
limiti veri e propri.
Considera che se fossero presenti dei limiti sarebbero comunque
arbitrari e non necessariamente adeguati alle necessità di ogni
sistema/utente (vedi quanto detto prima).

Se vuoi operare delle limitazioni sull'applicativo (e i sui processI!!!)
lo strumento da usare in Linux sono i CGROUP: attenzione perché anche in
questo caso l'argomento è tutt'altro che banale!
Ti lascio uno spunto:

$ sudo  cgcreate -g memory:firefox
$ echo 1G | sudo tee /sys/fs/cgroup/memory/firefox/memory.limit_in_bytes
$ echo $$ | sudo tee /sys/fs/cgroup/memory/firefox/tasks
$ firefox-esr

Attento alla versione di Debian che hai. L'implementazione è cambiata
nel tempo, per i comandi che ti ho dato dovresti avere almeno il kernel
della Stretch.

Happy hacking!

G.

$ ls -1 /proc/sys/vm/
admin_reserve_kbytes
block_dump
compact_memory
compact_unevictable_allowed
dirty_background_bytes
dirty_background_ratio
dirty_bytes
dirty_expire_centisecs
dirty_ratio
dirtytime_expire_seconds
dirty_writeback_centisecs
drop_caches
extfrag_threshold
hugetlb_shm_group
laptop_mode
legacy_va_layout
lowmem_reserve_ratio
max_map_count
memory_failure_early_kill
memory_failure_recovery
min_free_kbytes
min_slab_ratio
min_unmapped_ratio
mmap_min_addr
mmap_rnd_bits
mmap_rnd_compat_bits
nr_hugepages
nr_hugepages_mempolicy
nr_overcommit_hugepages
numa_stat
numa_zonelist_order
oom_dump_tasks
oom_kill_allocating_task
overcommit_kbytes
overcommit_memory
overcommit_ratio
page-cluster
panic_on_oom
percpu_pagelist_fraction
stat_interval
stat_refresh
swappiness
user_reserve_kbytes
vfs_cache_pressure
watermark_scale_factor
zone_reclaim_mode


Il 27/06/20 18:14, Antonio ha scritto:
> Il 27/06/20 16:52, Giuseppe Sacco ha scritto:
>> Credo che la soluzione sia di non usare lo swap o limitarne la
>> dimensione, per esempio a 1/2Gb. In questo modo se i processi usano
>> veramente tanta memoria vengono bloccati poco dopo aver iniziato a
>> usare lo spazio swap.
>>
> Ma le linee guida non sono di installare una swap doppio della RAM o e'
> ormai superato?
>


Reply to: